{"id":581,"date":"2010-01-05T22:41:36","date_gmt":"2010-01-05T21:41:36","guid":{"rendered":"http:\/\/morony.pl\/?p=581"},"modified":"2010-01-05T22:41:36","modified_gmt":"2010-01-05T21:41:36","slug":"generowanie-animacji-wysokiej-rozdzielczosci-w-matlabie","status":"publish","type":"post","link":"https:\/\/morony.pl\/?p=581","title":{"rendered":"Generowanie animacji wysokiej rozdzielczo\u015bci w Matlabie"},"content":{"rendered":"<p>Pracuj\u0105c ostatnio nad <a href=\"http:\/\/morony.pl\/?p=568\">symulacj\u0105 rozchodzenia si\u0119 fal sejsmicznych<\/a> natkn\u0105\u0142em si\u0119 na problem zwi\u0105zany z wygenerowaniem animacji w \u015brodowisku Matlab. We wspominanym przed chwil\u0105 opisie mo\u017cna zobaczy\u0107 efekt jaki uda\u0142o mi si\u0119 uzyska\u0107, czyli animacj\u0119 w wysokiej rozdzielczo\u015bci. <\/p>\n<p>Matlab oferuje dwie standardowe drogi wygenerowania animacji z serii figur (zawieraj\u0105cych np. wykres). Jedna droga to stworzenie obiektu avi i dodawanie do niego kolejnych klatek animacji. Druga metoda to stworzenie zmiennej (struktury) z kolejnymi klatkami i zapisanie jej do pliku avi. Metody r\u00f3\u017cni\u0105 si\u0119 wykorzystaniem pami\u0119ci programu i zapewne wydajno\u015bci\u0105 (co\u015b za co\u015b).<\/p>\n<p>Niestety obie metody maj\u0105 wad\u0119, kt\u00f3rej nie da\u0142o mi si\u0119 w nich wyeliminowa\u0107: rozdzielczo\u015b\u0107 i jako\u015b\u0107 filmu jest marna a na dodatek jego rozmiar ze wzgl\u0119du na kiepsk\u0105 kompresj\u0119 jest ogromny. <\/p>\n<p>M\u00f3j pomys\u0142 na wygenerowanie animacji jest odmienny. Ka\u017cd\u0105 klatk\u0119 filmu zapisujemy do pliku graficznego, nadaj\u0105c plikom kolejne nazwy. Wystarczy u\u017cycie funkcji <em>print()<\/em>. Dla przyspieszenia procesu mo\u017cna nie wy\u015bwietla\u0107 wykres\u00f3w na ekranie i rysowa\u0107 w pami\u0119ci. W poni\u017cszym przyk\u0142adzie rysujemy 50 wykres\u00f3w z losowymi punktami i ka\u017cdy wykres zapisujemy do pliku bez wy\u015bwietlania: <\/p>\n<pre class=\"prettyprint\">\r\nfigure('Visible','Off') % Otwieramy \"ukryte\" okno\r\nfor i=1:50  % 50 powt\u00f3rze\u0144\r\n    plot(rand(1,100),rand(1,100),'.');  % Rysujemy 100 punkt\u00f3w\r\n    print(gcf, '-r120', '-dpng', [num2str(i) '.png']);  % Zapisujemy \r\n                                            % wykres do pliku .png\r\n    clf; % Czy\u015bcimi okno\r\nend\r\nclose all;  % Zamykamy okno\r\n<\/pre>\n<p>Szczeg\u00f3\u0142y funkcji <em>print()<\/em> mo\u017cna znale\u017a\u0107 w dokumentacji. <\/p>\n<p>Oczywi\u015bcie to nie koniec przygody. Czas przerobi\u0107 klatki w film. Bardzo prosto mo\u017cna to zrobi\u0107 programem <a href=\"http:\/\/www.virtualdub.org\/\">VirtualDub<\/a>. Uruchamiamy program i przeci\u0105gamy pierwsz\u0105 klatk\u0119 (wa\u017cne s\u0105 kolejne numery klatek) do g\u0142\u00f3wnego okna programu. <\/p>\n<p>W menu &#8220;video&#8221; mo\u017cemy ustawi\u0107 ilo\u015b\u0107 klatek na sekund\u0119 &#8220;Frame Rate&#8221; i kompresj\u0119 oraz jej parametry &#8220;Compression&#8221;. Nast\u0119pnie z menu file wybieramy &#8220;Save as AVI&#8221;. Otrzymujemy gotow\u0105 animacj\u0119. Mo\u017cemy generowa\u0107 obrazu r\u00f3\u017cnej wielko\u015bci (rozdzielczo\u015bci) a co za tym idzie rozdzielczo\u015b\u0107 animacji. R\u00f3\u017cnica w jako\u015bci wyj\u015bciowej i potrzebnej pami\u0119ci (zar\u00f3wno w RAM i na dysku twardym) jest ogromna, wi\u0119c polecam t\u0105 metod\u0119. <\/p>\n<p>Kroki w programie Virtual Dub opisa\u0142em pobie\u017cnie, ale mam nadziej\u0119, \u017ce ka\u017cdy sobie poradzi.<\/p>\n<p>Mam nadziej\u0119, \u017ce komu\u015b pomog\u0142em. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pracuj\u0105c ostatnio nad symulacj\u0105 rozchodzenia si\u0119 fal sejsmicznych natkn\u0105\u0142em si\u0119 na problem zwi\u0105zany z wygenerowaniem animacji w \u015brodowisku Matlab. We wspominanym przed chwil\u0105 opisie mo\u017cna zobaczy\u0107 efekt jaki uda\u0142o mi si\u0119 uzyska\u0107, czyli animacj\u0119 w wysokiej rozdzielczo\u015bci. Matlab oferuje dwie standardowe drogi wygenerowania animacji z serii figur (zawieraj\u0105cych np. wykres). Jedna droga to stworzenie obiektu [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[],"_links":{"self":[{"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts\/581"}],"collection":[{"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=581"}],"version-history":[{"count":6,"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts\/581\/revisions"}],"predecessor-version":[{"id":587,"href":"https:\/\/morony.pl\/index.php?rest_route=\/wp\/v2\/posts\/581\/revisions\/587"}],"wp:attachment":[{"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/morony.pl\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}