Napisz program kodujący oraz program dekodujący dany obrazek w formacie TGA. Parametrem programu kodującego jest , przyjmujący wartości ze zbioru , oznaczający liczbę bitów kwantyzatora.
Dodatkowo napisz program który dla wejściowego obrazka i jego odkodowanej wersji poda błąd średniokwadratowy dla całego obrazu i poszczególnych składowych koloru oraz stosunek sygnału do szumu.
Ocena 3 Dla każdego koloru użyć kodowania różnicowego z kwantyzatorem równomiernym.
Ocena 4 Dla każdego koloru użyć filtra dolnoprzepustowego (średnia) i górnoprzepustowego (odchylenie). Następnie wynik filtra dolnoprzepustowego zakodować różnicowo a wynik górnoprzepustowego wprost za pomocą kwantyzatora równomiernego.
Ocena 5 Jak w punkcie poprzednim, ale użyć kwantyzatorów nierównomiernych (dopasowanych do poszczególnych pasm).
Rozwiązanie na ocenę 3.
W celu uruchomienia głównego programu należy wykonać ./main.py --mode <encode|decode> <input file> <output file> [bit depth] gdzie [bitdepth] jest wymaganym argumentem jeśli --mode encode.
Żeby uruchomić program do obliczania błędów należy wykonać ./errors.py <first file> <second file>.
Plik wykonywalny main.py zawiera główny program kodujący obrazek TGA do pliku binarnego oraz dekodujący plik binarny do zkwantyzowanego obrazka TGA.
Plik bitpack_utility.py zawiera funkcje pomocnicze do odczytywania poszczególnych bajtów lub paczek bitów o innych rozmiarach niż size=8.
Plik bitwiseio.py zawiera dwie klasy służące do czytania pliku w bit po bicie zamiast bajt po bajcie.
Plik wykonywalny errors.py zawiera program obliczający błąd średniokwadratowy oraz stosunek sygnału do szumu dla całego obrazu i poszczególnych kolorów.
Plik tga_utility.py zawiera funkcje pomocnicze używane podczas kodowania i odkodowywania obrazków (nagłówki i stopki plików).