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).
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