Camera Flash Video Remover - mój program do usuwania błysków flashy z video
#1
Witam!

Napisałem program do usuwania z video błysków flashy pochodzących z lampy błyskowej aparatu.

Oto krótka próbka możliwości:





Pozdrawiam
Marcin Zmysłowski
Odpowiedz
#2
Pomysł bardzo dobry. Ale nie wiem, czy właściwe wykonanie.
Z tego co widzę, klatka z błyskiem jest pomijana, a w jej miejsce jest miks sąsiednich klatek?
   

NewBlue ma wtyczkę "Remove Camera Flash"
Odpowiedz
#3
Kolega sam ten program napisał! Za sam ten fakt szacunek! :)
Odpowiedz
#4
Kamyk jest zawodowcem. Pisze programy zawodowo.
Ciekaw jestem czy ten program działa tak jak przypuszczam?
Odpowiedz
#5
Drobna klatka z błyskiem jest wiem o tym, że jest, ale chodzi o to, że ustawiłem małą czułość. Przy ciutkę większej czułości nie byłoby problemu z tą klatką.

Mój program działa tak:
Im mniejsza czułość tym większe ryzyko wystąpienia błędu z wychwyceniem flashowej klatki, ale wówczas będzie mniej błędów z usuniętymi nadmiarowo klatkami.
Im większa czułość tym większe ryzyko usunięcia prawidłowej klatki, ale więcej klatek z flashami będzie usuniętych

Co do usuniętych klatek, to brakująca klatka jest interpolacją na bazie sąsiednich klatek.

Co do wtyczek New Blue FX to wiem, że jest taka wtyczka, ale ja mój soft napisałem dla siebie nie ponosząc przy tym żadnych kosztów. Napisałem go w VIsual Studio.
Odpowiedz
#6
Dokładnie o tym pisałem.
Nie chodzi o to że jakoś błysk zostaje - bo na moim screenie go nie ma. Ale są "duchy", przez połączenie sąsiednich klatek.

Wtyczka od Newblue z tego co pamiętam pracuje tak, że pobiera próbkę z sąsiedniej klatki i dopasowuje w miejscu prześwietlenia.
I nie robi tego dla całej klatki, a tylko dla prześwietlonej części.

Znasz się na programowaniu więc powiedz mi, czy to możliwe żeby tak działało? Czy to zabieg marketingowy?
A jeśli możliwe - to czy jest to do zaimplementowania w Twoim programie?

Wiem, że to bardziej skomplikowany mechanizm, ale tylko wtedy daje 100% satysfakcji i perfekcyjny efekt. W Twoim przykładzie niestety widać gdzie były błyski (może nie wszędzie ale jednak widać te interpolacje).
A może da się to zrobić prościej?
Skoro mamy do czynienia z kodowaniem miedzyklatkowym, to wystarczy sąsiednie klatki porównać (a dokładnie sprawdzić ruch - wektory makrobloków), a następnie wytworzyć klatkę posrednią - jako połowa ruchu (pół wektorów przemieszczenia makrobloków). Czyli to co robi twixor :)
Wówczas dostajesz efekt lepszy od interpolacji (moim zdaniem to co znalazłem i zamieściłem na screenie to nie imterpolacja, a blending).
Odpowiedz
#7
Ja w swoim programie też porównuje fragmenty obrazów, ale wydaje mi się, że nie jestem w stanie, żeby to nie zamuliło wychwycić tego fragmentu obrazu, dokładnie co do piksela, który zawiera flasha. Ja w swoim programie porównuje klatki a właściwie 3 stałe fragmenty klatki i porównuje z sąsiadem, ale jak to nazwałeś, sam blending wykonuje na podstawie całej klatki, a nie jego fragmentu. Spróbuje wykonać blending fragmentu stałej klatki, gdzie wykryje prześwietlenia i skleje to z pozostałymi fragmentami klatek, gdzie nie ma prześwietlenia, ale na tych pozostałych klatkach gdzie nie ma prześwietlenia nie będę wykonywał efektu blending. Podejrzewam, że efekt może być ciut lepszy, ale nie perfekcyjny.

Co do tych wektorów to z tym mam problem, chyba, że mi podpowiesz jak to się nazywa po angielsku "wektory makrobloków" w termininologii video.
Odpowiedz
#8
Znalazłem co nie co na ten temat, postaram się to zaimplementować :) Dam znać wkrótce.

Co do Twojego screenshota, to ja miałem chwilowe problemy w pracy z otwarciem go i dlatego myślałem, że masz na myśli minimalny flash, a Tobie chodziło o ghosta.

Zobaczymy spróbuje pobawić się tymi makroblokami. Dzięki za podpowiedź. Może efekt będzie lepszy. Pozdrawiam
Marcin
Odpowiedz
#9
W terminologii video-compresji to chyba występuje pod hasłem "motrion vector" i jest ściśle związane z zasadą kodowania międzyklatkowego (inter-frame), które w przeciwieństwie kodowania wewnątrzklatkowego (intra-frame), polega na zapisywaniu GOP (group of picture), który składa się z klatki kluczowej (Intra-frame), a następnie kolejne klatki filmu zapisywane są jako właśnie wektory ruchu makrobloków.
Znając wektory, czyli ruch -> przemieszczenie danych makrobloków, możemy z bardzo dobrą dokładnością estymować pośrednie klatki.
Telewizory to na przykład potrafią robić w locie -> chyba Panasonic (nie pamiętam) reklamował się, że z zwykłego sygnału TV robi 100kl/s? Tworząc pośrednie klatki. No właśni odkąd sygnał w streamingu jest puszczany cyfrowo -> i zakodowany międzyklatkowo, stało się to wyjątkowo proste do zrealizowania.
Dokładnie tak samo działa Twixor. Zwalnia obraz sztucznie generując klatki pośrednie.

Tutaj u Ciebie może nawet jeszcze prościej by się dało to zrobić?
Ale trzeba by to rozgryźć na poziomie kodowania.

Tam, gdzie pojawia się błysk, prawdopodobnie masz klatkę typu I (Intra-frame).
Jeśli tak, to trzeba ją wywalić, i wstawić wektory odpowiadające za przemieszczenie w obrazie (nawet na podstawie sąsiednich wektorów).


Potrzebny jest ktoś, kto potrafi grzebać w danych filmu na poziomie kodowanego materiału (samego sposobu kodowania). A to nie mój świat :/ Obawiam się, że też nie Twój. Tu jest potrzebny ktoś, kto potrafi nie tylko zrozumieć mechanizm kodowania, ale samemu go odtworzyć i napisać.
Ale jeśli byś to zrobił, to miałbyś bezwzględnie najlepszy program do usuwania błysków, dropów itd.
Może warto poszukać wsparcia u kogoś z dziedziny kodowania i wspólnie zrobić coś wielkiego?
Odpowiedz
#10
Dzięki za info Mateuszu.

Trochę się w głębiłem w temat, ale jeszcze daleko mi do sukcesu. Szukam odpowiedniej biblioteki, która mi "ułatwi" życie. Znalazłem parę, ale żadna jak na razie nie spełnia moich oczekiwań. Udało mi się znaleźć np. jak wykonać różnice między dwoma klatkami i zapisać ją w formie obrazu, ale ten obraz niestety jest na czarnym tle z wyrysowanymi na biało konturami różnic i nie potrafię tego zapisać w formie rzeczywistego obrazu. Wygląda to jak taki negatyw.

Zobaczę jutro. Staram się coś jeszcze znaleźć. Będziemy w kontakcie.
Odpowiedz



   


Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Pobieranie filmow ze stron - Video Downoader Helper KrzychuS 0 776 06-14-2017, 13:02
Ostatni post: KrzychuS
  ustawianie właściwie GOP w video Kamyk79 0 269 03-17-2017, 9:15
Ostatni post: Kamyk79
  zabezpieczenie video przed kopiowaniem Kamyk79 1 283 02-06-2017, 21:43
Ostatni post: mateuszszar
  Convert V2 Video Utility za free Pinto 3 1,248 02-05-2015, 16:29
Ostatni post: Jamaika
  Edit Button 2.0 - nowy król edytorów video?:) Pinto 7 1,511 01-10-2014, 14:04
Ostatni post: Bunch
  Pierwsze materiały video (motocyklowe) DziEsMoto 7 1,754 08-13-2013, 17:11
Ostatni post: mateuszszar

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości