úloha 8: Bezeztrátová komprese Č/B obrázku

Cílem je navrhnout co nejlepší bezeztrátovou kompresi černobílého rastrového obrazu (Č/B, 1-bitová data). Vstupem je dvoubarevný obraz (1bpp), předpokládá se buď přítomnost větších souvislých jednobarevných ploch nebo kresba složená z tenkých čar na jednobarevném pozadí (naskenovaná ruční kresba). Celkem budu předkládat data ze tří kategorií, v každé z nich budu vyhodnocovat vítězný algoritmus:

8a. souvislé jednobarevné plochy
8b. čárová kresba
8c. půltónovaná grafika

Budou k dispozici různé moduly pro entropickou kompresi (LZ77, LZW, Huffmanův kód statický i dynamický, Aritmetický kodér), řešitel(ka) úlohy musí navrhnout vlastní kompresní algoritmus a vyzkoušet jeho bezeztrátovost - tj. implementovat kódování i dekódování.

Náměty na přemýšlení: RLE, Quad-tree, binární prediktor, podobnost sousedních řádek, sledování tenkých čar, hledání opakujících se prvků, ..
Srovnání: komprese v PNG formátu, TIFF CCITT Fax formats (pozor - jsou dost dobré)
Do odevzdaného zdrojáku připište podrobnější komentář o původu vašeho algoritmu: zda jste ho celý vymysleli, zda jste se inspirovali nějakým standardem, je-li to podle nějakého článku, apod.

Je potřeba poslat celé vaše zapojení (sestavu) v XML souboru - viz adresář "trunk/data".

Interface kompresního modulu: "DataFileFormat", jednotný binární formát souborů by měl být:

Vzorová sestava obsahuje hlavní modul ("ImageCompressionWorker.java") starající se o nahrání zdrojového obrázku a následné spuštění ukládacího (kompresního) algoritmu. Pro kontrolu se zkomprimovaný binární soubor ihned znova dekóduje a ukáže v druhém okénku (pro vizuální kontrolu).

BODOVÁNÍ: základ 15 bodů, individuální prémie max. 20 bodů, za případný vlastní nový EntropyCodec modul: 10 bodů navíc

TERMÍN: do 12.1.2006

SOUTĚŽ: hodnotit se bude pouze kompresní poměr (bezeztrátovost komprese je podmínkou). V každé kategorii bude odměněn vítěz.

TRIVIÁLNÍ MODUL: class cz.cuni.jagrlib.testing.CompressedFormatBW

INTERFACE: interface DataFileFormat

VZOROVÉ ZAPOJENÍ: sCompressionBW.xml

MODULY K POUŽITÍ (interface EntropyCodec): cz.cuni.jagrlib.piece.LZWCodec, cz.cuni.jagrlib.piece.ZLIBCodec.

TESTOVACÍ DATA: v repository je jednoduchý santa.png, další obrázky: bull.gif, cat.gif, familydinner.gif, rad.gif.

Ostrá testovací data: kittens.gif (1024x760), owl.gif (1024x729), horse.gif (1024x913), teacher.gif (410x1024), barb.gif (1024x1024), lena.gif (1024x1024).


[Cviceni]  [Projekt JaGrLib]  [Prednasky a seminare]  [Odkazy na demonstrace]

Copyright (C) 2005 J.Pelikan, last change: $Date: 2010-11-14 01:08:52 +0100 (Sun, 14 Nov 2010) $
Send comments/requests to Josef.Pelikan zavinac mff.cuni.cz