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

matlab snieg1

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.

 

snieg_przyklad

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.

2 odpowiedzi na “Matlab - animacje”
  1. Agnieszka napisał:

    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:(

  2. michaeel napisał:

    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.

Pozostaw odpowiedź

(c) 2007 by Michał Terbert