AUTOMATYKA 2006 Tom 10 Zeszyt 3 Marcin Raniszewski* Stratna kompresja obrazu z wykorzystaniem aproksymacji liniowej 1. Wstêp Wzrost zapotrzebowania na komunikacjê, mobilnoœæ, wygodê i dobr¹ jakoœæ us³ug poci¹ga za sob¹ rozwój wielu dziedzin w tym kompresji danych. Pojêcie to pojawia siê w wielu rozwa aniach na temat nowoczesnych metod komunikacji. Kompresja zmniejsza przesy³ane dane, daje szybszy dostêp do informacji, owocuje zaoszczêdzeniem miejsca na noœnikach. Wymyœlne algorytmy kompresji stratnej korzystaj¹ z wad zmys³ów ludzkich, zapisuj¹c dane w sposób, który umo liwi usuniêcie z nich niezbyt wa nych i czêsto trudno zauwa alnych szczegó³ów. Dziêki temu skompresowane dane zajmuj¹ o wiele mniej miejsca i mog¹ byæ o wiele szybciej przesy³ane, zapewniaj¹c wysoki komfort pracy i wygodê [3, 5]. Szukanie zale noœci pomiêdzy danymi, które opisuj¹ pewien obiekt, mo e byæ niezwykle pasjonuj¹ce i interesuj¹ce. Ró norodnoœæ takich obiektów daje szerokie pole do badañ skutecznoœci zaproponowanego algorytmu. Znane standardy kompresji stratnej obejmuj¹: JPEG (Joint Photographic Expert Group) do kompresji obrazów, MPEG (Moving Picture Expert Group) do kompresji sekwencji wideo, MP3 (MPEG Audio Laser 3 encoding) do kompresji muzyki. W artykule tym przedstawiony zosta³ nowy algorytm kompresji. Wykorzystuje siê w niej technikê przybli ania barw pojedynczych punktów obrazu za pomoc¹ aproksymacji liniowej, techniki zaczerpniêtej z metod numerycznych [1]. Taka technika kompresji stratnej zosta³a zastosowana g³ównie ze wzglêdu na du ¹ liczbê obrazów, w których wa ne jest zachowanie kszta³tów przedstawionych obiektów, przy jednoczesnej mo liwoœci utraty szczegó³ów ich struktury. 2. Kompresja danych Kompresja danych jest nauk¹ reprezentowania informacji w zwiêz³ej postaci. Aby móc dobrze kompresowaæ dane, musimy poznaæ ich w³asnoœci strukturalne i na ich podstawie oprzeæ algorytm kompresji. * Katedra Informatyki Stosowanej, Politechnika ódzka 455
456 Marcin Raniszewski Gdy mówimy o technice lub algorytmie kompresji, mamy na myœli dwa algorytmy. Pierwszy to algorytm kompresji, który dla pewnych danych wejœciowych X generuje reprezentacjê X c. Drugi z tych algorytmów, to tak zwany algorytm dekompresji, który na podstawie reprezentacji X c tworzy rekonstrukcjê Y. Zatem algorytmem kompresji bêdziemy nazywaæ parê: algorytm kompresji i algorytm dekompresji. Algorytmy kompresji dziel¹ siê na dwie klasy: 1) algorytmy kompresji bezstratnej, 2) algorytmy kompresji stratnej. W schemacie kompresji bezstratnej wymagamy, aby rekonstrukcja Y i dane oryginalne X by³y identyczne, natomiast w schemacie kompresji stratnej, która zazwyczaj pozwala na wiêksz¹ kompresjê ni kompresja bezstratna, dopuszcza siê, aby Y i X by³y ró ne [3, 5]. 2.1. Kompresja stratna W technikach kompresji stratnej dopuszczamy pewn¹ utratê informacji. Dane zrekonstruowane nie pokrywaj¹ siê z oryginalnymi, pojawiaj¹ siê zniekszta³cenia. Jest to cena, jak¹ musimy zap³aciæ za (czêsto) lepszy stopieñ kompresji ni w przypadku kompresji bezstratnej. Dziêki temu, e w wielu zastosowaniach nie wymagamy dok³adnej rekonstrukcji kompresowanych danych, kompresja stratna ma szerokie zastosowanie. W zale noœci od tego, jaka ma byæ jakoœæ rekonstrukcji, mo emy dopuszczaæ ró ne wielkoœci, o które mo e siê ró niæ oryginalna wartoœæ próbki od zrekonstruowanej [3, 5]. 2.2. Miary jakoœci kompresji Istnieje wiele ró nych kryteriów, wed³ug których mo na oceniaæ algorytmy kompresji. Mo emy mierzyæ z³o onoœæ algorytmu, pamiêæ potrzebn¹ do jego implementacji, szybkoœæ dzia³ania na konkretnym komputerze, rozmiar kompresji oraz podobieñstwo danych po dekompresji do danych oryginalnych. Jednym z najwa niejszych kryteriów opisuj¹cym, jak efektywnie algorytm kompresuje okreœlony zbiór danych, jest stosunek liczby bitów potrzebnych do reprezentacji danych przed kompresj¹ do liczby bitów potrzebnych do reprezentacji danych po kompresji. Proporcja ta nazywana jest stopniem kompresji. W kompresji stratnej dane uzyskane po dekompresji ró ni¹ siê od danych oryginalnych. Aby zatem móc okreœliæ efektywnoœæ algorytmu kompresji, potrzebujemy sposobu mierzenia tych ró nic. Ró nicê pomiêdzy danymi oryginalnymi i danymi po dekompresji nazywamy czêsto zniekszta³ceniem [3, 5]. 2.3. Kryteria oceny zniekszta³ceñ Naturalnym sposobem oceny wiernoœci dekompresji jest rozwa enie ró nic pomiêdzy wartoœciami oryginalnymi i zrekonstruowanymi, czyli zniekszta³ceñ powsta³ych w trakcie kompresji. Kwadratowa miara b³êdu i bezwzglêdna miara b³êdu to popularne miary zniekszta³ceñ. Nazywa siê je tak e ró nicowymi miarami zniekszta³ceñ.
Stratna kompresja obrazu z wykorzystaniem aproksymacji liniowej 457 Trudno jest powiedzieæ cokolwiek na temat ró nic pomiêdzy ca³ymi dokumentami (orygina³em i rekonstrukcj¹) na podstawie ci¹gu ró nic poszczególnych elementów (np. pikseli). Dlatego te wprowadza siê sumy ró nic pomiêdzy poszczególnymi elementami ci¹gów. Najpopularniejsz¹ miar¹ tego typu jest œrednia arytmetyczna z kwadratów poszczególnych elementów ci¹gu, nazywana b³êdem œredniokwadratowym. Inn¹ czêsto wykorzystywan¹ miar¹ zniekszta³ceñ jest równie wartoœæ b³êdu bezwzglêdnego. Miara ta jest szczególnie u yteczna przy ocenie algorytmów kompresji obrazów. W niektórych sytuacjach, takich jak wymóg wielkoœci zniekszta³ceñ mniejszej od pewnej wartoœci progowej, istotnym parametrem jest maksymalna wielkoœæ b³êdu [3, 5]. 3. Aproksymacja Celem aproksymacji jest znalezienie funkcji F(x) (rys. 1), która przybli a pewn¹ funkcj¹ f(x), okreœlon¹ w postaci ci¹gu punktów: ( x0, f ( x0) = y0), ( x1, f ( x1) = y1),...,( xn, f ( xn) = yn) (1) Punkty x 0, x 1,..., x n nazywamy wêz³ami aproksymacji. Mog¹ one pochodziæ z pomiarów, albo byæ wynikami innych obliczeñ. W przypadku kompresji, zaproponowanej w niniejszej pracy, punkty te bêd¹ okreœla³y parê: piksel i jego sk³adowa barwa (czerwona, zielona lub niebieska). Rys. 1. F(x) aproksymuje przyk³adowe punkty pomiarowe Funkcjê aproksymuj¹c¹ buduje siê najczêœciej w postaci kombinacji liniowej ortogonalnych funkcji bazowych U 0 (x), U 1 (x),..., U m (x) F( x) = a0u0( x) + au 1 1( x) + a2u2( x) +... + amum( x) (2) Celem naszych obliczeñ jest znalezienie wspó³czynników a 0, a 1,..., a m.
458 Marcin Raniszewski Miar¹ zgodnoœci funkcji aproksymuj¹cej F(x) i funkcji aproksymowanej f (x) jest norma: E( f) = F( x) f( x) (3) Do najczêœciej stosowanych norm nale ¹: norma œredniokwadratowa: norma maksymalna: 2 n i= 0 ( ) 2 E ( f ) = F ( xi ) f ( xi ) (4) E ( f ) max max F ( xi ) f ( xi ) i = (5) Ze wzglêdu na normê mo emy wyró niæ dwa rodzaje aproksymacji. Mamy wtedy do czynienia z aproksymacj¹ metod¹ najmniejszych kwadratów (norma œredniokwadratowa) lub z aproksymacj¹ jednostajn¹ (norma maksymalna). Zale y nam by norma by³o najbli - sza zeru, czyli aby funkcja F(x) mo liwie najwierniej odzwierciedla³a przebieg funkcji f (x). W naszym przypadku bêdziemy korzystaæ z aproksymacji metod¹ najmniejszych kwadratów i ni¹ dalej bêdziemy siê zajmowaæ. Drugim rodzajem podzia³u aproksymacji jest podzia³ ze wzglêdu na funkcje bazowe. Mamy tutaj: aproksymacjê wielomianow¹ i aproksymacjê trygonometryczn¹. Zajmowaæ siê bêdziemy aproksymacj¹ wielomianow¹, czyli aproksymacj¹, w której F(x) bêdzie skonstruowana za pomoc¹ funkcji bazowych, bêd¹cych wielomianami [1]. 3.1. Aproksymacja liniowa metod¹ najmniejszych kwadratów Aproksymacja liniowa jest szczególnym przypadkiem aproksymacji wielomianowej (we wzorze (2) m = 1). Funkcja aproksymuj¹ca jest funkcj¹ liniow¹ postaci F( x) a0 a1x = + (6) Pos³uguj¹c siê metod¹ szukania wspó³czynników aproksymacji wielomianowej metod¹ najmniejszych kwadratów, otrzymujemy: ts 0 2 ts 1 1 a0 = 2 SS 0 2 S1 (7) ts 1 0 t0s1 a1 = 2 SS 0 2 S1 (8)
Stratna kompresja obrazu z wykorzystaniem aproksymacji liniowej 459 gdzie: n k Sk = xi, k = 0,1,2 (9) i= 0 t 0 n = y (10) i i= 0 t 1 n xiyi i= 0 = (11) zaœ wspó³rzêdne x i, y i, to wspó³rzêdne aproksymowanych punktów (patrz wzór (1)). atwo pokazaæ, e czynnik w mianownikach wzorów (7) i (8) nigdy nie przyjmie wartoœci zero. 4. Algorytm stratnej kompresji obrazu z wykorzystaniem aproksymacji liniowej Jeœli kilka s¹siednich pikseli obrazu oznaczymy kolejnymi liczbami naturalnymi, a ich barwy przeliczymy w pewien sposób na liczby, to bêdziemy mogli utworzyæ pary postaci: (numer piksela, jego barwa). Ich rozmieszczenie w kartezjañskim uk³adzie wspó³rzêdnych mo e byæ ró ne w zale noœci od tego, jakie barwy reprezentuj¹ nasze piksele. Mówi¹c o liniowym przejœciu pomiêdzy barwami s¹siednich pikseli, bêdziemy mieæ na myœli ich reprezentacjê w kartezjañskim uk³adzie wspó³rzêdnych, gdzie uk³adaj¹ siê one w kszta³t linii prostej. Nale y zauwa yæ, e obszary jednobarwnych lub prawie jednobarwnych pikseli bêd¹ uk³adaæ siê na wykresie tak e jako linia prosta, równoleg³a do osi OX. Analizuj¹c obrazy, mo na zauwa yæ, e niektóre z nich maj¹ du o liniowych przejœæ pomiêdzy barwami zarówno w poziomie, jak i pionie. Czêsto obraz zawiera p³aszczyzny jednokolorowe lub nieznacznie, prawie niezauwa alnie, zmieniaj¹ce swoj¹ barwê, co jest równoznaczne z lini¹ równoleg³¹ do osi OX w kartezjañskim uk³adzie wspó³rzêdnych (przy powy ej opisanej reprezentacji pikseli obrazu). Rysunek 2 zawiera du e jednokolorowe p³aszczyzny oraz liniowe przejœcia koloru. Widzimy to wyraÿniej na rysunku 3, który jest powiêkszeniem fragmentu policzka dziecka z rysunku 2. Zaproponowana metoda kompresji wykorzystuje aproksymacjê liniow¹ do liniowego przybli ania zmiennoœci barw pikseli [4]. Zamiast informacji o kolorze ka dego piksela (tak jak ma to miejsce w bitmapie [2]), w ramach jednej prostej aproksymuj¹cej przechowywane s¹ informacje o iloœci aproksymowanych pikseli i o barwach pierwszego i ostatniego piksela. Nale y zauwa yæ, e ostatni piksel pewnej prostej aproksymuj¹cej jest jednoczeœnie pierwszym pikselem nastêpnej prostej.
460 Marcin Raniszewski Rys. 2. Widoczne du e jednokolorowe obszary oraz liniowe zmiany koloru szarego na policzku dziecka Rys. 3. Powiêkszenie policzka dziecka z rysunku 2 Uk³ad przedstawiony na rysunku 4 jako ca³oœæ jest chaotyczny i trudno by by³o dopatrzyæ siê w nim jakiœ prawid³owoœci. Istniej¹ ró ne obrazy, które jako ca³oœæ tworz¹ uk³ady odmienne i trudne jest, a mo e nawet niemo liwe, znalezienie uniwersalnej metody, która opiera³aby siê na ogólnych w³aœciwoœciach dowolnego obrazu. Dziel¹c jednak ten uk³ad na pewne poduk³ady, uzyskujemy mo liwoœæ aproksymacji liniowej par pikseli i ich barw w obrêbie wymienionych poduk³adów.
Stratna kompresja obrazu z wykorzystaniem aproksymacji liniowej 461 Rys. 4. Aproksymacja liniowa przyk³adowego rozmieszczenia par pikseli i ich barw na wykresie Mo na zatem przewidzieæ, e za pomoc¹ proponowanej kompresji o wiele lepiej kompresowa³y siê bêd¹ obrazy o du ej iloœci liniowych zmian kolorów, zachodz¹cych w liniach poziomych lub pionowych. Gorzej bêd¹ siê kompresowa³y obrazy o du ej iloœci ostrych przejœæ pomiêdzy kolorami, w których ma³o jest jednobarwnych obszarów i liniowych przejœæ pomiêdzy barwami. Proponowana kompresja, jak ju zosta³o to powiedziane, jest kompresj¹ stratn¹. Podczas aproksymacji liniowej tracona jest informacja o dok³adnej barwie pikseli. Wartoœci te s¹ przybli ane przez aproksymuj¹c¹ je prost¹. Poniewa oko ludzkie jest niedoskona³e, wiêc w wiêkszoœci przypadków przy dobrych parametrach kompresji, straty bêd¹ niezauwa alne. 4.1. Wczytanie bitmapy i aproksymacja liniowa Bitmapa mo e zostaæ wczytana w liniach poziomych lub pionowych (rys. 5). a) b) Rys. 5. Wczytywanie obrazu: w liniach poziomych (a) i w liniach pionowych (b)
462 Marcin Raniszewski Omawiana metoda kompresji zosta³a zaimplementowana do wczytywania 24-bitowych bitmap. Kolor pojedynczego piksela zapisywany jest zatem na trzech bajtach w postaci RGB [2]. Sczytany ci¹g poddawany jest aproksymacji liniowej: ka da sk³adowa barwy aproksymowana jest osobno. Nastêpnie brane s¹ kolejno: czerwone, zielone i niebieskie sk³adowe koloru dwóch pierwszych pikseli i dla nich, oddzielnie, liczone s¹ wspó³czynniki aproksymacji. W schemacie na rysunku 6 sk³adowe te s¹ oznaczone jako litery x z odpowiednim indeksem. START 1 Zapis wspó³czynników aproksymacji i iloœci aproksymowanych punktów-1 zbiorów R, G, B T ir+k-1=wys*szer STOP Aproksymacja liniowa dla punktów ze zbiorów R, G, B k=2 wys = wysokoœæ bitmapy szer = szerokoœæ bitmapy ir=1 ig=1 ib=1 N wys+szer>1 R={x ir, x ir+1 } G={x ig, x ig+1 } B={x ib, x ib+1 } Oznaczenia: R zbiór punktów bêd¹cych wartoœciami czerwonej sk³adowej kolejnych pikseli bitmapy G zbiór punktów bêd¹cych wartoœciami zielonej sk³adowej kolejnych pikseli bitmapy B zbiór punktów bêd¹cych wartoœciami niebieskiej sk³adowej kolejnych pikseli bitmapy T tak N nie N Do³o enie do zbioru R punktu x ir+k Do³o enie do zbioru G punktu x ig+k Do³o enie do zbioru B punktu x ib+k ir=ir+k-1 ig=ig+k-1 ib=ib+k-1 1 Aproksymacja liniowa dla punktów ze zbioru R k=k+1 T Ka dy z punktów zbioru R mieœci siê w dopuszczalnym przedziale b³êdu aproksymacji N Zapis wspó³czynników aproksymacji i iloœci aproksymacyjnych punktów-1 zbiorów: R\{x ir+k }, G\{x ig+k }, B\{x ib+k }, N Ka dy z punktów zbioru B mieœci siê w dopuszczalnym przedziale b³êdu aproksymacji N T Aproksymacja liniowa dla punktów ze zbioru G Ka dy z punktów zbioru G mieœci siê w dopuszczalnym przedziale b³êdu aproksymacji T Aproksymacja liniowa dla punktów ze zbioru B Rys. 6. Schemat przebiegu aproksymacji liniowej w algorytmie kompresji
Stratna kompresja obrazu z wykorzystaniem aproksymacji liniowej 463 W przedstawionej metodzie kompresji pojawia siê pojêcie promienia r b³êdu aproksymacji. Jeœli aproksymowana barwa piksela wynosi b 0, a barwa rzeczywista b, to bêdziemy akceptowaæ tak¹ aproksymacjê je eli b ( b0 r, b0 r) + (12) czyli b bêdzie siê zawieraæ w jednowymiarowym kole o œrodku b 0 i promieniu r (rys. 7). promieñ b³êdu aproksymacji promieñ b³êdu aproksymacji Rys. 7. Aproksymacja liniowa przyk³adowych punktów z przedzia³em wyznaczonym przez promieñ b³êdu aproksymacji W momencie gdy któryœ z punktów poddanych aproksymacji nie mieœci siê w dopuszczalnym przedziale b³êdu aproksymacji (ze wzglêdu na któr¹kolwiek ze sk³adowych barw), zapisywane s¹ wspó³czynniki aproksymacji i liczba aproksymowanych pikseli dla zbiorów punktów bez piksela ostatnio dodanego [4]. 4.2. Uœrednianie pocz¹tków i koñców aproksymuj¹cych prostych Zapamiêtywanie wspó³czynników aproksymuj¹cych prostych oparte jest na zapamiêtaniu rzêdnej sk³adowej barwy pierwszego aproksymowanego piksela oraz rzêdnej sk³adowej barwy ostatniego aproksymowanego piksela, czyli rzêdnej pocz¹tku i koñca aproksymuj¹cej prostej. Poniewa koniec jednej prostej ma zazwyczaj inn¹ rzêdn¹ ni pocz¹tek kolejnej prostej (rys. 8), dlatego stosuje siê ich uœrednianie. Bierze siê rzêdn¹ koñca jednej prostej oraz rzêdn¹ pocz¹tku kolejnej prostej (punkty o tej samej odciêtej) i wylicza siê ich œredni¹ arytmetyczn¹. Uzyskuje siê w ten sposób punkt poœredni, który od tej pory bêdzie wspólnym koñcem jednej prostej i pocz¹tkiem kolejnej prostej. Po³o enie prostych ulega minimalnej zmianie [4].
464 Marcin Raniszewski Rys. 8. Uœrednienie koñców i pocz¹tków aproksymuj¹cych prostych 4.3. Wybranie najczêœciej wystêpuj¹cych ró nic pomiêdzy sk³adowymi barw Maj¹c ci¹gi punktów, które ³¹cz¹ proste aproksymuj¹ce, oraz ci¹g iloœci pikseli aproksymowanych przez ka d¹ z tych prostych, mo emy ju zapisywaæ te dane do pliku (zapis trzech sk³adowych barwy pierwszego piksela, nastêpnie iloœci aproksymowanych sk³adowych barw pikseli pomniejszonej o 1 i trzech sk³adowych barwy piksela, który jest koñcem jednej prostej, a zarazem pocz¹tkiem kolejnej). Na zapis barwy piksela zu ywamy 24 bity. Prezentowana metoda kompresji umo liwia redukcjê tych bitów poprzez przypisanie krótszych ci¹gów bitowych (od 1 do 7 bitów) najczêœciej wystêpuj¹cym ró nicom pomiêdzy sk³adowymi barw. Mo liwe jest przypisanie innej iloœci bitów do zakodowania sk³adowej czerwonej, zielonej i niebieskiej koloru oddzielnie. U ycie powy szego rozwi¹zania prowadzi do uzyskania wiêkszego stopnia kompresji dla wiêkszych obrazów, wyd³u a jednak nieznacznie sam algorytm kompresji (wyszukiwanie najczêœciej wystêpuj¹cych ró nic pomiêdzy sk³adowymi barw) [4]. 4.4. Algorytm dekompresji Maj¹c pocz¹tek i koniec aproksymuj¹cych prostych oraz liczbê aproksymowanych pikseli pomniejszon¹ o 1, mo na przybli yæ wartoœci wszystkich aproksymowanych pikseli. Ró nicê pomiêdzy sk³adow¹ barwy czerwonej koñcowego piksela i pocz¹tkowego nale y podzieliæ przez liczbê aproksymowanych pikseli pomniejszon¹ o 1 i otrzyman¹ wartoœæ dodawaæ do sk³adowej czerwonej pocz¹tkowego piksela, otrzymuj¹c wartoœci czerwonych sk³adowych kolejnych pikseli (rys. 9). Podobnie postêpujemy w przypadku zielonej i niebieskiej sk³adowej. Uzyskane piksele zapisujemy w odpowiedni sposób do pliku z bitmap¹ (w zale noœci od tego, czy kompresja by³a pozioma czy pionowa) [2, 4].
Stratna kompresja obrazu z wykorzystaniem aproksymacji liniowej 465 y: R:: koñcowa czerwona sk³adowa piksela bie ¹cej aproksymuj¹cej prostej przybli one wartoœci pozosta³ych zaproksymowanych czerwonych sk³adowych pikseli pocz¹tkowa czerwona sk³adowa piksela bie ¹cej aproksymuj¹cej prostej 0 1 2 3 4 5 6 7 8 9 10 liczba aproksymowanych czerwonych sk³adowych pikseli pomniejszona o 1; 10 1=9 x: Rys. 9. Odczyt wartoœci czerwonej sk³adowej pikseli z przyk³adowej prostej aproksymuj¹cej 4.5. Testowanie Testom zosta³y poddane trzy rodzaje 24-bitowych bitmap (rozszerzenie.bmp): bitmapa 1 oryginalny obraz próbki srebra w temperaturze 982 o C rozmiar: 101 178 bajtów, 212 159 pikseli; bitmapa 2 rysunek 9, rozmiar: 983 922 bajtów, 670 489 pikseli; bitmapa 3 krajobraz, rozmiar: 1 440 054 bajty, 800 600 pikseli. Publikowane w artykule wyniki obejmuj¹ tylko kompresjê poziom¹, z zapisem najczêœciej wystêpuj¹cych ró nic pomiêdzy sk³adowymi barw na 4 bitach. Kompresja bitmapy 1 Zastosowanie przedstawionej metody kompresji w przypadku bitmapy 1 (rys. 10) daje zadowalaj¹ce rezultaty (tab. 1). Ju przy promieniu aproksymacji rzêdu 8 uzyskiwany jest dobry stopieñ kompresji przy nieznacznej utracie informacji z obrazu. Kszta³t próbki jest zachowany, widoczne s¹ nieliczne rozmycia poziome pikseli w obrêbie jednolitych obszarów.
466 Marcin Raniszewski a) b) a) b) c) d) c) d) Rys. 10. Kompresja bitmapy 1: oryginalny obraz (a) oraz zdekompresowane obrazy dla rosn¹cych wartoœci promienia aproksymacji (b, c, d) Tabela 1 Wyniki kompresji bitmapy 1 Promieñ b³êdu aproksymacji Stopieñ kompresji B³¹d bezwzglêdny Maksymalna wielkoœæ b³êdu Rysunek 4,0 2,9792 1,0873 7 10b 8,0 5,9193 2,0834 13 10c 12,0 10,8467 2,9513 20 10d Kompresja bitmapy 2 W przypadku kompresji bitmapy 2 (rys. 11) ju przy ma³ym promieniu aproksymacji uzyskujemy wysoki stopieñ kompresji (tab. 2). Wraz ze wzrostem promienia aproksymacji stopieñ kompresji nieznacznie roœnie. Dalsze zwiêkszanie promienia kompresji (powy ej 12) bêdzie powodowa³o poziome rozmazywanie siê przedstawionych na obrazie liter i wykresu. Przy doœæ wysokim promieniu aproksymacji (rzêdu 12) obraz jest nadal czytelny i przejrzysty (rys. 11).
Stratna kompresja obrazu z wykorzystaniem aproksymacji liniowej 467 a) y: R:: b) y: R:: koñcowa czerwona sk³adowa piksela bie ¹cej aproksymuj¹cej prostej przybli one wartoœci pozosta³ych zaproksymowanych czerwonych sk³adowych pikseli pocz¹tkowa czerwona sk³adowa piksela bie ¹cej aproksymuj¹cej prostej koñcowa czerwona sk³adowa piksela bie ¹cej aproksymuj¹cej prostej przybli one wartoœci pozosta³ych zaproksymowanych czerwonych sk³adowych pikseli pocz¹tkowa czerwona sk³adowa piksela bie ¹cej aproksymuj¹cej prostej 0 1 2 3 4 5 6 7 8 9 10 liczba aproksymowanych czerwonych sk³adowych pikseli pomniejszona o 1; 10 1=9 x: 0 1 2 3 4 5 6 7 8 9 10 liczba aproksymowanych czerwonych sk³adowych pikseli pomniejszona o 1; 10 1=9 x: c) y: R:: d) y: R:: koñcowa czerwona sk³adowa piksela bie ¹cej aproksymuj¹cej prostej przybli one wartoœci pozosta³ych zaproksymowanych czerwonych sk³adowych pikseli pocz¹tkowa czerwona sk³adowa piksela bie ¹cej aproksymuj¹cej prostej koñcowa czerwona sk³adowa piksela bie ¹cej aproksymuj¹cej prostej przybli one wartoœci pozosta³ych zaproksymowanych czerwonych sk³adowych pikseli pocz¹tkowa czerwona sk³adowa piksela bie ¹cej aproksymuj¹cej prostej 0 1 2 3 4 5 6 7 8 9 10 liczba aproksymowanych czerwonych sk³adowych pikseli pomniejszona o 1; 10 1=9 x: 0 1 2 3 4 5 6 7 8 9 10 liczba aproksymowanych czerwonych sk³adowych pikseli pomniejszona o 1; 10 1=9 x: Rys. 11. Kompresja bitmapy 2: oryginalny obraz (a) oraz zdekompresowane obrazy dla rosn¹cych wartoœci promienia aproksymacji (b, c, d) Tabela 2 Wyniki kompresji bitmapy 2 Promieñ b³êdu aproksymacji Stopieñ kompresji B³¹d bezwzglêdny Maksymalna wielkoœæ b³êdu Rysunek 4,0 14,5096 7,8340e-5 1 11b 8,0 14,9728 0,0491 13 11c 12,0 15,5787 0,1623 18 11d Kompresja bitmapy 3 Bitmapa 3 (rys. 12) przedstawia krajobraz z poziomym uk³adem barw. Przewidywaæ mo na, e dobrze bêdzie siê ona kompresowaæ przy wykorzystaniu kompresji poziomej. I rzeczywiœcie: ju przy promieniu aproksymacji równym 4 uzyskujemy zadawalaj¹ce wyniki (tab. 3). Obserwujemy proporcjonalny wzrost stopnia kompresji wraz ze wzrostem promienia aproksymacji. Wp³ywa to jednak na deformacje jakie powstaj¹ na zdekompresowanym obrazie (rys. 12). Widoczne s¹ poziome rozmazania latarni morskiej mostu.
468 Marcin Raniszewski a) b) c) d) Rys. 12. Kompresja bitmapy 3: oryginalny obraz (a) oraz zdekompresowane obrazy dla rosn¹cych wartoœci promienia aproksymacji (b, c, d) Tabela 3 Wyniki kompresji bitmapy 3 Promieñ b³êdu aproksymacji Stopieñ kompresji B³¹d bezwzglêdny Maksymalna wielkoœæ b³êdu Rysunek 4,0 11,9091 1,0214 8 12b 8,0 20,8299 1,5056 16 12c 12,0 28,9069 1,9520 23 12d Porównanie z algorytmami kompresji JPEG, GIF, PNG i ZIP Wspomniana w rozdziale 1 kompresja stratna JPEG jest przeznaczona do obrazów naturalnych, z du ¹ iloœci¹ nieostrych krawêdzi i ma³¹ iloœci¹ detali. Kompresja GIF (Graphics Interchange Format) jest kompresj¹ bezstratn¹ operuj¹c¹ na 256 kolorach i przeznaczon¹ g³ównie do grafik sztucznych. PNG (Portable Network Graphics) zosta³ opracowany jako nastêpca GIF i g³ówn¹ jego zalet¹ w stosunku do poprzednika jest mo liwoœæ obs³ugi wiêkszej palety kolorów. ZIP to bardzo popularna bezstratna kompresja danych ogólnego przeznaczenia.
Stratna kompresja obrazu z wykorzystaniem aproksymacji liniowej 469 Tabela 4 Zestawienie stopni kompresji wybranych algorytmów Bitmapa JPEG (jakoœæ: 8) GIF PNG ZIP Zaproponowany algorytm (promieñ b³êdu aproksymacji: 8,0) 1 5,8651 9,7315 4,9910 7,5489 5,9193 2 16,0447 40,9461 20,7786 73,8575 14,9728 3 28,5952 9,3098 6,0504 4,7923 20,8299 Wyniki uzyskane przez zaproponowany algorytm przy kompresji bitmapy 1 s¹ zbli one do wyników kompresji JPEG oraz PNG (tab. 4). Pozosta³e kompresje uzyska³y lepsze wyniki. Bitmapê 2 najlepiej skompresowa³y ZIP i GIF. Omawiana kompresja i JPEG uzyska³y podobne (najni sze) stopnie kompresji. W przypadku bitmapy 3 stopieñ kompresji otrzymany przez zastosowanie omawianego algorytmu jest wy szy w stosunku do reszty algorytmów kompresji bezstratnej. 5. Wnioski Przedstawiona kompresja wykorzystuje aproksymacjê liniow¹ do przybli ania liniowych uk³adów barw punktów, z których z³o ona jest bitmapa. Jest to kompresja stratna, gdy tracona jest informacja o dok³adnych kolorach wiêkszoœci pikseli. Przy dekompresji s¹ one przybli ane na podstawie prostych, które je aproksymuj¹. Bitmapy, w których du o miejsca zajmuj¹ jednobarwne obszary lub obszary o podobnym kolorze, na których widaæ strukturê liniow¹ przedstawianego obrazu, kompresuj¹ siê z wysokim stopniem kompresji. Wszelkie rysunki techniczne, wykresy, teksty, rysunki, zawieraj¹ce ma³¹ liczbê ró ni¹cych siê od siebie kolorów z ostrymi przejœciami pomiêdzy nimi i du ¹ iloœæ obszarów jednobarwnych lub o podobnych barwach, kompresuj¹ siê z wysokim stopniem kompresji ju dla ma³ych promieni b³êdu aproksymacji. Praktycznie niezauwa alna jest w nich strata jakoœci obrazu. Bitmapy czarno-bia³e, w których widoczna jest liniowa struktura, kompresuj¹ siê równie bardzo dobrze. Przy wy szych stopniach kompresji wystêpuj¹ jednak daj¹ce siê zauwa yæ straty. Bitmapy kolorowe, które maj¹ du o liniowych przejœæ pomiêdzy kolorami, jednobarwnych obszarów lub obszarów o podobnym kolorze, kompresuj¹ siê zadowalaj¹co. Jednak e, podobnie do bitmap czarno-bia³ych, przy wy szych stopniach kompresji, wystêpuj¹ widoczne utraty w jakoœci obrazu. Bitmapy ró nobarwne z du ¹ zmiennoœci¹ kolorystyki kompresuj¹ siê s³abo. Zdarza siê nawet, e przy ma³ym promieniu b³êdu aproksymacji, uzyskany po skompresowaniu plik jest wiêkszy od kompresowanej bitmapy. Wynika to z faktu, e przy du ej zmiennoœci barw, informacja zapisywana po kompresji jest wiêksza od tej zapisanej w bitmapie. Jeœli
470 Marcin Raniszewski aproksymowane zosta³y dwa punkty, to w bitmapie zapisywane s¹ ich barwy, podczas gdy przy kompresji dodatkowo zapamiêtywana jest liczba aproksymowanych punktów pomniejszona o 1. Przy wiêkszych promieniach aproksymacji uzyskujemy dla takich bitmap stopieñ kompresji siêgaj¹cy 2. Pojawiaj¹ siê jednak wtedy straty jakoœci obrazu. Bitmapy o przewadze poziomych przejœæ pomiêdzy kolorami lepiej kompresuj¹ siê za pomoc¹ kompresji poziomej, zaœ te o przewadze pionowych za pomoc¹ kompresji pionowej. Dobry dobór iloœci bitów przeznaczonych na zapis najczêœciej wystêpuj¹cych ró nic pomiêdzy sk³adowymi barw pikseli mo e, przy bitmapach dobrze kompresuj¹cych siê, zwiêkszyæ stopieñ kompresji. Z przeprowadzonych testów wynika, e op³aca siê stosowaæ kodowanie tych ró nic. Najwy sze stopnie kompresji, przy sta³ym promieniu b³êdu aproksymacji, uzyskiwane by³y dla 4 bitów przeznaczonych na zapis ró nic pomiêdzy sk³adowymi barw. Zdarza³y siê jednak sytuacje, gdy brak zapisu najczêœciej wystêpuj¹cych ró nic pomiêdzy sk³adowymi barw procentowa³ w postaci wiêkszego stopnia kompresji. Przy bardzo ma³ych bitmapach, kodowanie najczêœciej wystêpuj¹cych ró nic powoduje ni sze stopnie kompresji. Wynika to z faktu, e zapisywana jest wtedy dodatkowa informacja o tym, jaki ci¹g bitowy koduje dan¹ ró nicê. Nale y pamiêtaæ, e opisana w pracy kompresja opiera siê tylko na jednym algorytmie. Zaawansowane kompresje obrazów korzystaj¹ z kilku po³¹czonych ze sob¹ algorytmów. Dalsze prace mog¹ byæ przeprowadzone w zwi¹zku z po³¹czeniem opisanego algorytmu z istniej¹cymi. Literatura [1] Björck Å., Dahlquist G.: Metody numeryczne. Warszawa, PWN 1987 [2] Kay D.C., Levine J.R.: Graphics file formats. Windcrest, McGraw-Hill, Cambridge, 1992 [3] Sayood K.: Kompresja danych wprowadzenie. RM, Warszawa, 2002 [4] Raniszewski M.: Stratna kompresja obrazu z wykorzystaniem aproksymacji liniowej. Wydzia³ Matematyki, Uniwersytet ódzki, 2004 (Praca magisterska) [5] Przelaskowski A.: Kompresja danych. BTC, Warszawa, 2005