Dzisiaj zajmiemy się robieniem bardzo prostych animacji w programie Matlab. Nasza animacją będzie efekt śniegu
Poniżej mini przykład (statyczny).

Zabieramy się do roboty. Najpierw przygotujemy sobie śnieg. Nasz obraz, z którego będziemy korzystać to cameraman.tif i ma wielkość 256×256, więc o takiej samej wielkości przygotujemy śnieg. Możemy pobrać przygotowany wcześniej przeze mnie lub samemu zrobić w programie graficznym. Należy pamiętać aby był on zapisany w odcieniach szarości! Najlepiej wrzucić ten obrazek do katalgu z programem, ewentualnie można podać ścieżkę bezwzględną do pliku.

Przykładowy śnieg
Uruchamiamy MatLab’a i wpisujemy edit pojawi nam się okno edytora. Teraz czas na kod źródłowy
L1=imread('cameraman.tif');
L2=imread('snieg.gif');
for i=1:200
L2=[L2(end,:);L2(1:(end-1),:)];
L3=L1;
L3(L2==0)=255;
imshow(L3)
pause(0.001)
end
Teraz wytłumaczymę jak to działa. Do zmiennych L1 i L2 wczytujemy nasze dwa obrazy, tło (camerman) i śnieg. Ponieważ ma to być animacja, więc coś musi wykonywać się w pętli. W pętli mamy proces opadania śniegu. Przeanalizujmy go. Pętla zostanie wykonana 199 razy (”for i=1:200″ oznacza od 1 do 200). A w pętli mamy tak
Tworzymy nowy obiekt w zmiennej L2, który składa się z ostatniego wiersza i wszystkich kolumn (end,:) oraz z 1 do przedostatniego wiersza i wszystkich kolumn (1:(end-1),:). Następnie do L3 przypisujemy zawartość L1 (czyli obraz cameraman). Następnie modyfikujemy L3 nakładając na niego L2 o zmienionej wartości koloru czarnego na biały ((L2==0)=255) [jest to coś jak warunek IF]. Na koniec całość wyświetlamy i dodajemy współczynnik pause aby można było zaobserwować animacje.
Zmiana kierunku poruszania się śniegu (wystarczy tylko podmienić tą jedną linijkę).
Z góry na dół:
L2=[L2(end,:);L2(1:(end-1),:)];
Z dołu na górę:
L2=[L2(2:end,:);L2(1,:)];
Z lewej do prawej:
L2=[L2(1:end,end),L2(1:end,1:(end-1))];
Z prawej do lewej:
L2=[L2(1:end,2:end),L2(1:end,1)];
Poniżej gotowa animacja z wszystkimi przejściami.


Wpisy (RSS)
Witam!
A czy da rade by matlab w interfejsie graficznym wstawil zwyklego gifa. Jak ja go wstawiam to on sie robi czarno-bialy i nieruchomy:(
Tak mozna gifa, ale taki gif to jest wg. MatLaba 4-wymiarowy. 4 wymiar to ilość klatek. Mam przynajmniej nadzieję, że dobrze mówie
Łatwiej zrobic taki obraz z osobnych klatek tzn. rozdzielić gifa na klatki i poskładać w matlabie.