Teraz jest niedziela, 24 marca 2019, 15:36




Stwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
 wykorzystanie przeplotu do stworzenia slow motion. 
Autor Wiadomość
Moderator
Moderator
Avatar użytkownika

Dołączył: czwartek, 22 lipca 2004, 22:55
Posty: 3261
Post wykorzystanie przeplotu do stworzenia slow motion.
jak wiadomo przeplot polega na tym, że kolejne fazy ruchu rejestrowanego z częstotliwością 50x na sekundę zapisywane są na przemian w parzystych i nieparzystych liniach danej ramki z przeplotem. ramka zawiera więc dwa pola, i jeśliby teraz z każdego z nich odtworzyć całą ramkę to uzyskamy klip z 50 pełnymi ramkami na sekundę. odtwarzając go z prędkością 25 fps uzyskamy 50% slow motion, czyli zwolnienie.
tyle teorii. w praktyce będzie nam potrzebny zainstalowany AviSynth, kodekDV oraz VirtualDub. tworzymy w notatniku skrypt:
Kod:
Avisource("klip.avi")
Bob(height="576")
AssumeFPS(25)
zapisujemy z rozszerzeniem avs i otwieramy w VirtualDub'ie. skrypt kolejno otwiera klip.avi, z każdego pola (720x288) odtwarza pełną klatkę o wysokości 576 px a następnie zwalnia powstałe 50 fps na powrót do 25.
tak uzyskany obraz jest co prawda spowolniony, ale od razu rzuca się w oczy mruganie szczegółów oraz jego "szorstkość" (załącznik 1). dzieje się tak dlatego, że odtwarzając brakujące linie bob korzysta z algorytmu bicubic resize, a ponieważ nie analizuje zawartości drugiego pola wyświetlany jest więc na przemian obraz z mniejszą liczbą szczegółów niż w obrazie oryginalnym.
poradzimy sobie z tym korzystając z plugina Yadif do konwersji 50i->25p, czyli deinterlace'u. analizuje on obraz czasowo i przestrzennie, dzięki czemu odtwarza dużo więcej szczegółów (załącznik 2).
Kod:
Load_Stdcall_plugin("yadif.dll") #wpisać pełną ścieżkę do pliku
Avisource("klip.avi")
converttoyuy2
yadif(order=1,mode=1) #dla bottom field first order=0
AssumeFPS(25)
dodatkowo możemy skorzystać z narzędzi MVTools i idąc za skryptem ze strony autorów...
Kod:
backward_vec = source.MVAnalyse(overlap=4, isb = true, pel=2, search=3, idx=1)
forward_vec = source.MVAnalyse(overlap=4, isb = false, pel=2, search=3, idx=1)
source.MVFlowFps(backward_vec, forward_vec, num=2*FramerateNumerator(source), den=FramerateDenominator(source), idx=1)
...otrzymać zwolnienie jeszcze o połowę. tą metodą powstają klatki pośrednie wyliczone z wektorów ruchu wykrytych na podstawie analizy sąsiadujących klatek.

przykład wykorzystania funkcji MVFlowFPS do spowolnienia materiału progresywnego.
nie jest to specjalnie wymuskane ujęcie, ale przykład na to jak za razem dobrze i źle zachowuje się algorytm. jak widać konieczne są właściwe ustawienia, aby uniknąć występujących w przykładzie zniekształceń np. na chłodnicy.


pozdrawiam
edit:
i jeszcze to: http://vimeo.com/4743677
edit:
zmieniłem nieco treść zamieniając plugin TomsMoComp na Yadif.


Załączniki:
Komentarz: wykorzystanie funkcji Bob().
bob.gif
bob.gif [ 387.58 | Przeglądane 273 razy ]
Komentarz: wykorzystanie pluginu Yadif.
tom.gif
tom.gif [ 385.25 | Przeglądane 240 razy ]

_________________
Obrazek
poniedziałek, 18 maja 2009, 16:37
Zobacz profil
Aktywny bywalec
Aktywny bywalec
Avatar użytkownika

Dołączył: sobota, 14 czerwca 2008, 21:11
Posty: 282
Lokalizacja: Bydgoszcz
Post Re: wykorzystanie przeplotu do stworzenia slow motion.
na vimeo ruch nie jest płynny, ciekawe ja kto jest u Ciebie na komputerze i czy faktycznie daje to lepszy rezultat niz programowe spowolnienie klipu video o 50%.

_________________
Sony PMW-EX1R 16GB SxS, 16GB SanDisk Extreme Class 10 i Class 6, 32GB SanDisk Ultra II SDHC KATA CC-195 SWIT S-8U62 Samsung P2770HD Toshiba 32LV733 Windows 7 64bit EDIUS 5 Sony Vegas 9.0c i fajny krawat!
http://www.multi-media.com.pl


wtorek, 19 maja 2009, 10:52
Zobacz profil
Aktywny bywalec
Aktywny bywalec

Dołączył: poniedziałek, 2 kwietnia 2007, 23:33
Posty: 1690
Lokalizacja: Tarnów
Post Re: wykorzystanie przeplotu do stworzenia slow motion.
no ja widze że jest płynny, czasami na kołach optical flow daje ciała ale to normalne...
gdzieś (mozliwe że na creativecow) widziałem info że nalepsze zwolnienia (poniżej 50%) sie robi własnie najpierw separacją półobrazów a dopiero potem kombinuje sie z optical flow/frame blending :)

_________________
Retail OSX 10.6.5
Intel Core 2 Duo E8400 3.0Ghz
GA-EP35-DS3
4GB RAM 800Mhz
GF8600GT 256 MB VRAM


wtorek, 19 maja 2009, 11:04
Zobacz profil
Moderator
Moderator
Avatar użytkownika

Dołączył: czwartek, 22 lipca 2004, 22:55
Posty: 3261
Post Re: wykorzystanie przeplotu do stworzenia slow motion.
no tak, ale już samo odtworzenie pełnej klatki z boba to nie lada problem.

pozdrawiam

_________________
Obrazek


wtorek, 19 maja 2009, 11:14
Zobacz profil
Stały bywalec
Stały bywalec

Dołączył: poniedziałek, 13 kwietnia 2009, 14:12
Posty: 79
Post Re: wykorzystanie przeplotu do stworzenia slow motion.
Gratuluję wzięcia sprawy w swoje ręce i napisania własnego tipsa.
Pozdrawiam

_________________
Let's the RGB Spirit be with You!
http://splaszfx.pl - praca około ruchomych obrazków.
http://motionfreaks.pl - Pierwszy Polski Serwis Motion Design i Visual FX


Ostatnio edytowano wtorek, 19 maja 2009, 17:16 przez splasz, łącznie edytowano 1 raz

wtorek, 19 maja 2009, 14:09
Zobacz profil
Moderator
Moderator
Avatar użytkownika

Dołączył: czwartek, 22 lipca 2004, 22:55
Posty: 3261
Post Re: wykorzystanie przeplotu do stworzenia slow motion.
splasz napisał(a):
Gratuluję wzięcia sprawy w swoje ręce i napisania własnego tutsa.
Pozdrawiam
tutsa? :lol:
no jak to jest tutorial to w takim razie naprodukowałem ich już pewnie kilka setek! :mrgreen:

pozdrawiam

_________________
Obrazek


wtorek, 19 maja 2009, 14:44
Zobacz profil
Aktywny bywalec
Aktywny bywalec
Avatar użytkownika

Dołączył: poniedziałek, 12 lutego 2007, 16:43
Posty: 247
Lokalizacja: wielkopolskie
Post Re: wykorzystanie przeplotu do stworzenia slow motion.
Przepiękne zwolnienie.

_________________
Edius 6 PRO+Adobe Master Collection CS5 /Aparat Sony RX10, Kamera Sony NEX VG-20
Konfig;
I7 4790 3,6GHz,GA Z87DS3H+Ge Force GTX660+16GB RAM+WIN 7 64Bit+128 SSD System + 2*Dysk twardy 1TB+ SSD 240GB,Chieftec Modular 750Wat .


wtorek, 19 maja 2009, 22:17
Zobacz profil
Moderator
Moderator

Dołączył: środa, 26 lipca 2006, 10:57
Posty: 4679
Lokalizacja: Tczew
Post Re: wykorzystanie przeplotu do stworzenia slow motion.
...i kolejny przepiękny tutorial. :wink:

_________________
最诚挚的问候


środa, 20 maja 2009, 07:32
Zobacz profil
Moderator
Moderator
Avatar użytkownika

Dołączył: czwartek, 22 lipca 2004, 22:55
Posty: 3261
Post Re: wykorzystanie przeplotu do stworzenia slow motion.
powyższy skrypt nie musi służyć tylko do spowolnień. można też wykorzystać go np. do konwersji PAL->NTSC. w tym celu zmieniamy parametry MVFlowFps:
Kod:
source.MVFlowFps(backward_vec, forward_vec, num=60000, den=1001, idx=1)
w ten sposób otrzymujemy 59.94 fps, czyli tyle, ile powinno być dla NTSC. następnie dostosowujemy wysokość do 480px.
Kod:
lanczosresize(720,480)

assumeBFF
separatefields
selectevery(4,0,3)
weave
rozdzielamy pełne klatki na półobrazy i wybieramy z każdej następnej klatki naprzemiennie nieparzyste lub parzyste pole.
w ten sposób powstaje obraz 720x480, 29.97fps z przeplotem. metoda FlowFps daje świetną płynność, niestety jest czasochłonna. jest to jednak raczej sposób na konwersję HQ niż do codziennego użytku.
do tego ostatniego można wykorzystać prostsze metody, ale o tym innym razem.

pozdrawiam
edit
tutaj efekt działania skryptu: (oglądajcie w HQ!)
http://www.youtube.com/watch?v=3TgtKe7l08s
niestety jakość kompresji nie powala... może na vimeo będzie lepiej:
http://vimeo.com/4743677

chciałbym zwrócić uwagę na to, że materiał ten został zarejestrowany w PAL z przeplotem, natomiast po konwersji mamy progresywny NTSC ze zwolnieniem 50%. mimo to obraz jest płynny i ostry (tu musicie uwierzyć mi na słowo ;)). wszystko to dzięki zastosowaniu bardzo dobrej metody zamiany półobrazów na pełne klatki oraz konwersji fps na podstawie analizy ruchu.

na koniec jeszcze skrypt do zamiany formatu NTSC (lub w ogóle jakiegokolwiek, nawet HD)->PAL. niestety ze względu na powiększanie obrazu w pionie jakość tej konwersji jest nieco gorsza niż w przeciwną stronę:
Kod:
Load_Stdcall_plugin("yadif.dll") #wpisać pełną ścieżkę do pliku
Avisource("klip.avi")
converttoyuy2
yadif(order=1,mode=1) #dla bottom field first order=0, dla progresywnych pomijamy tę linijkę

source=last
backward_vec = source.MVAnalyse(overlap=4, isb = true, pel=2, search=3, idx=1)
forward_vec = source.MVAnalyse(overlap=4, isb = false, pel=2, search=3, idx=1)
source.MVFlowFps(backward_vec, forward_vec, num=50, den=1, idx=1)

lanczosresize(720,576)

assumeBFF
separatefields
selectevery(4,0,3)
weave


pozdrawiam

_________________
Obrazek


środa, 20 maja 2009, 11:38
Zobacz profil
Moderator
Moderator
Avatar użytkownika

Dołączył: czwartek, 22 maja 2003, 04:24
Posty: 3416
Lokalizacja: zachodniopomorskie
Post Re: wykorzystanie przeplotu do stworzenia slow motion.
Coś mi się zdaje, że gdybyś GrassHoppeR zrobił taką stronę typu "przydasie", były by one znacznie lepsze od już istniejących. (Bez złośliwości!)
Może też kilka tutków niekoniecznie na Virtual dubie?

_________________
Film jest jak seks: gdy nie ma uczucia, nawet technika nie pomoże
Pytania na pw. - tylko osobiste nie związane z forum!


środa, 20 maja 2009, 16:42
Zobacz profil
Moderator
Moderator
Avatar użytkownika

Dołączył: czwartek, 22 lipca 2004, 22:55
Posty: 3261
Post Re: wykorzystanie przeplotu do stworzenia slow motion.
w zasadzie skrypt z pierwszego początku wątku możemy wykorzystać także do stworzenia 576p50 albo 720p50 z materiału z przeplotem. wystarczy zamiast wymuszania 25fps wymusić 50 lub w przypadku konwersji na NTSC 59,94 fps.

oto ujęcie PAL 1080i50 przekonwertowane na NTSC 720p60 idealnie pasujące do mojej bańki ustawionej na 1280x960@60Hz.
http://wyslijto.pl/plik/g7jpewz64l
dla ukazania różnicy - ten sam materiał tylko 25p: http://vimeo.com/4506770

pozdrawiam

_________________
Obrazek


piątek, 12 czerwca 2009, 10:34
Zobacz profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Stwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 


Kto przegląda forum

Użytkownicy przeglądający to forum: Google [Bot] i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Powered by phpBB © phpBB Group.
Designed by Vjacheslav Trushkin for Free Forums/DivisionCore.
Przyjazne użytkownikom polskie wsparcie phpBB3 - phpBB3.PL