Korekcja anaglifów do kiepskich okularów 3D

0

Nabyłem na Allegro za niebywale wielką kwotę (~3zł z przesyłką) okularki z filtrami: cyan i czerwień - do oglądania obrazów 3D wykonanych w tej technice.

Filtr niebieski jest dobry, odcina całkowicie drugi kolor - jednak filtr czerwony jest kiepski i przepuszcza tak ze 20% drugiego koloru powodując rozmycie, zdublowanie się obrazów - nie wpływa to pozytywnie na odbiór. <font size="1">(w sumie może to być też wina ekranu - nie miałem możliwości testować na innym, a ten nie ma żadnych opcji - notebook)</span>

Ponieważ zarówno własności filtru są stałe, jak i obrazy/filmy mają stałą separację to wydaje się, że raz obliczona transformacja kolorów powinna działać na wszystkie obrazy.

W związku z tym pytanie me - czy znacie jakąś metodę inną niż "na oko" metodą prób i błędów suwaczkami programie graficznym na znalezienie potrzebnych zmian by dopasować się do trefnego filtru?

I jeśli już taka transformacja zostanie ustalona (np. dodać 5% czerwieni, odjąć 3% zieleni), to czy łatwo byłoby napisać program, który robiłby to samo z nakładką (overlay) co by w locie dodawał korekcję do filmów? Nigdy nie bawiłem się filmami, więc mam nikłą wiedzę w tej materii.

0

Hmm... Czy to by nie wymagało napisania swojego kodeka?

0

Nie wiem, dlatego pytam.
Ale istotniejsze jest dla mnie znalezienie odpowiedniego przekształcenia co by chociaż obrazy dopasować na start.

0

Przeksztalcenie powinno sie latwo znalezc za pomoca macierzy przeksztalcen kolorow - znaczy sie masz kolor startowy, kolor koncowy i interesuje Cie znalezienie macierzy przeksztalcenia jednego wektoru w drugi. To w zasadzie daje uklad rownan do rozwiazania. Tak na oko to bedziesz potrzebowal 5 par wektorow (macierz jest 5x5 o ile pamietam). Co do pozniejszej implementacji jako overlay, nie wiem, nie zajmowalem sie.

0

Potrzebny byłby własny filtr DirectShow (DirectShow transform filter). API DirectShow to trochę masakra, ale można wygóglać parę przykładów.
Ale za to np. kodek ffdshow pozwala na różne wygibasy z kolorami - nawet widzę opcję ładowania jakichś współczynników czy macierzy z photoshopa. Ponieważ ffdshow jest opensource, wykonalne powinno być dodanie jakiegoś przekształcenia jeśli nawet nie da się go wyklikać (disclaimer: nie próbowałem więc nie wiem czy łatwiejszy będzie własny filtr czy rekompilacja ffdshow).
Pod względem technicznym jest to całkowicie wykonalne.
Gorzej z fizyką. A ta mówi, że monitor świeci tylko trzema konkretnymi kolorami światła. I jedyne co się da zrobić, to modyfikować balans między nimi. Niestety nie wyczarujemy innych długości fali niż monitor nam daje, więc idealne dopasowanie pod filtry okularów może nie być możliwe.
Jednak mimo to programowa korekta kolorów w jakimś stopniu efekt polepszenia (albo pogorszenia) może przynieść.

0

w Media player classic możesz sobie napisać pixel shader do filmów, zdjęcia też możesz w nim oglądać
to chyba najprostsze rozwiązanie

zrobienie wspomnianego +5% czerwieni i -3% zieleni jest tak proste jak:

	kolor.r *= 1.05;
	kolor.g *= 0.97;

czyli po dopisaniu tego do gotowego szablonu wychodzi:

sampler s0 : register(s0);

float4 main(float2 tex : TEXCOORD0) : COLOR
{
	float4 kolor = tex2D(s0, tex);

	kolor.r *= 1.03;
	kolor.g *= 0.97;
	
	return kolor;
}

jeżeli potrzebujesz HSL zamiast RGB polecam przejrzenie standardowego shadera "procamp"
jeżeli potrzebujesz YUV przejrzyj "YV12 Chroma Upsampling"

ogólnie ja kombinowałem już ze wszystkim i mi się nie udało dokonać tego co ty próbujesz
kupiłem nawet drugą parę okularów i okazały się takie same jak te pierwsze
kombinowałem z ustawieniami monitora, z krzywymi w ustawieniach kolorów nvidii, z shaderami
i jedyne do czego doszedłem to to żeby oglądać tylko czarno białe anaglify bo te wyglądają całkiem znośnie

oprócz tego od trzech lat nie potrafię ustawić głośników 5.1 tak żeby w jakimkolwiek filmie lub grze poczuć choć przez chwilę to wrażenie otaczającego dźwięku - bardzo chciałbym żeby w grach usłyszeć że coś jest za mną i trochę w lewo ale niestety muszę grać na słuchawkach stereo na których dużo lepiej jest mi zlokalizować źródło dźwięku... ale to już temat nie na ten wątek

0

O, świetny dodatek do problemu, dobrze wiedzieć o tych shaderach, dzięki!

Krzywymi ATi też się bawiłem - bez rezultatu.. stąd moje główne pytanie o inny sposób niż prób i błędów - choć obawiałem się, że nic ponad to się nie da wymyślić.
Jeszcze mam w planach poważniejszą zabawę w Photoshopie, dam znać w razie co.

A 5 głośników.. jestem sporym antyfanem - od lat mamy w domu wieżę z satelitami i centralnym - nie trawię tego, zdecydowanie preferuję stereo. Ale jak mówisz, to inna para kaloszy [może warta nowego wątku? bo temat brzmi ciekawie]

0

Kiepska informacja.. wyszło mi na to, że muszę całkowicie wyzerować kanał zielony, aby zgrać się z filtrami - choć minimalne przebicia zostają. Przez to mocno zmienia się koloryt całej fotki, no ale 3D lekko się poprawia.

No nic, chyba tyle w tej materii :)
Dzięki za różne info - szczególnie ten o shaderze ciekawy.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.