Spójrz na te zdjęcia scen naturalnych, z których usunięto jeden z kanałów RGB:
Źródło (z czerwonym): https://en.wikipedia.org/wiki/File:Altja_j%C3%B5gi_Lahemaal.jpg
Źródło (z zielonym): https://commons.wikimedia.org/wiki/File:2007_mather-lake_hg.jpg
Źródło (z niebieskim): https://commons.wikimedia.org/wiki/File:Fox_01.jpg
Nawet bez jednego z kanałów możesz prawdopodobnie dowiedzieć się, jakie kolory powinny mieć pewne rzeczy, lub przynajmniej mieć dobry pomysł, jeśli rekonstrukcja brakującego kanału jest dokładna.
Na przykład, oto pierwsze zdjęcie z czerwonym kanałem dodanym z powrotem, który jest po prostu przypadkowym szumem:
Ten obraz wyraźnie nie jest dokładną rekonstrukcją czerwonego kanału. Wynika to z faktu, że zdjęcia natury na ogół nie wykorzystują całego spektrum RGB, a jedynie podzbiór „naturalnie wyglądających kolorów”. Ponadto odcienie czerwieni będą podążać za pewnymi gradientami, które korelują z innymi.
Twoim zadaniem jest zbudowanie programu, który zrobi zdjęcie, z którego usunięto jeden kanał, i spróbuje jak najbardziej zbliżyć się do oryginalnego obrazu, odtwarzając to, co według niego jest brakującym kanałem.
Twój program zostanie oceniony na podstawie tego, jak ściśle brakujący kanał pasuje do kanału oryginalnego obrazu, poprzez zliczenie procentu pikseli, których wartości tego kanału mieszczą się w granicach ± 15 (włącznie) rzeczywistej wartości na oryginalnym obrazie (gdzie wartości zakres od 0 do 255 jak w standardowym 8-bitowym kanale kolorów).
Przypadki testowe, na których oceniany będzie Twój program, można znaleźć tutaj (plik zip 9,04 MB, 6 zdjęć). Obecnie zawiera tylko trzy przykładowe obrazy powyżej i ich oryginały, ale dodam jeszcze kilka później, aby zrobić pełny pakiet, gdy już je zrobię.
Każde zdjęcie jest zmniejszane i przycinane do 1024 x 768, dzięki czemu będzie miało taką samą wagę w wyniku. Wygrywa program, który potrafi przewidzieć najwięcej pikseli w ramach danej tolerancji.
Odpowiedzi:
Python 3 + obraz scikit
Po prostu ustawia kolor brakującego kanału na średnią pozostałych dwóch.
I przywrócone obrazy:
źródło
Lua, Love2D
Ustawia tylko brakujący kanał na mniejszy z dwóch pozostałych kanałów.
Bierze nazwę pliku jako argument w wierszu poleceń.
Premia
Próbowałem ustawić brakujący kanał na 255- (a + b), ustalając wartość. Co do „uzupełnienia luki”. Wyniki są bezużyteczne, ale chwalebne.
I z 255- (a + b) / 2
źródło