ONA – Zadanie 2 – redukcja kolorów

Naszym drugim zadaniem będzie implementacja algorytmu pozwalającego na redukcję liczby kolorów w obrazie. Danymi wejściowymi będzie dla nas plik w formacie png, zawierający obraz w formacie RGB, oraz liczba kolorów (k, domyślnie 16), do których powinniśmy zredukować nasz obraz. Jako wynik zwracamy wynik redukcji, tj. nasz obraz wejściowy, ale przetworzony w taki sposób, że wszystkie piksele są w jednym z k kolorów.

Będziemy korzystać z dwóch znanych metod:

grupowania k-średnich (przy pomocy biblioteki sklearn.cluster.KMeans)

– cieniowania przy pomocy metody Floyd’a Steinberg’a 

Punktacja zadania:

– Napisanie programu, który pobiera parametry, wczytuje i zapisuje obrazy, przy pomocy funkcji z biblioteki PIL (3 pkt)
– grupowanie pikseli na k zadanych grup (wg k-średnich), obliczenie średnich wartości w każdej z grup, zamiana wartości pikseli na wartości średnie (4 pkt dla skali szarości, 6 pkt dla RGB – co ważne, klastrowanie w RGB musi być dla wszystkich składowych razem).
– cieniowanie zgodnie z algorytmem Floyd’a Steinberga (własna implementacja w pythonie) (3 pkt w skali szarości, 6 pkt w RGB).

Zadania wysyłamy do 28. kwietnia, jako plik .py z komentarzami i podpisem, i dopiskiem [ONA-2-2019] w temacie maila. Po terminie redukcja punktacji o 50%.

 

4 thoughts on “ONA – Zadanie 2 – redukcja kolorów”

    1. Wygląda nieźle. Warto sprawdzić dla jakiejś idiotycznie małej wartości k (np. 2), gdzie różnica pomiędzy cieniowaniem a jego brakiem powinna być wyraźniejsza.

Leave a Reply

Your email address will not be published. Required fields are marked *