od banan » 14. 2. 2007 03:36
Chcel by som spresnit zadanie 2. otazky: datovu strukturu sme mali navrhnut pre Floyd Steinberg-a, pripadne pre F. Sierra. (staci celociselny buffer pre jeden riadok, tj int buf[width + cca 1])
Dalej sme mali navrhnut sposob "presnej distribucie chyby." Pod pojmom presna distribucia chyby sa skryva problem ako v pripade celociselneho buffera reprezentovat napr 3 * 5/16 co najpresnejsie. Pri deleni totizto dochadza k zmensovaniu chyby (napr 3 * 5/16: namiesto skutocnej chyby 15/16 sa ulozi 0 po celociselnom deleni). Mozne riesenia:
- vyuzit buffer float-ov
- pri intovom bufferi distribuovat chybu do n-1 pixelov klasickym sposobom tj celkova_chyba * vahovy_koeficient a chybu posledneho pixelu urcit ako celkova_chyba - sucet ulozenych chyb v n-1 pixeloch
- pri intovom bufferi vobec nedelit a uchovavat 16-nasobne vacsie hodnoty chyb (v pripade FS), tj napr namiesto 3*5/16 = 15/16, uchovavat priamo 3*5 a vobec nedelit 16 (delime az ked nakumulovanu chybu pouzivame tj pri spracovani pixelu - vtedy mozeme zvysok po deleni presunut na okolite nespracovane pixely, tj okolite chybove policka buffera)
Chcel by som spresnit zadanie 2. otazky: datovu strukturu sme mali navrhnut pre Floyd Steinberg-a, pripadne pre F. Sierra. (staci celociselny buffer pre jeden riadok, tj int buf[width + cca 1])
Dalej sme mali navrhnut sposob "presnej distribucie chyby." Pod pojmom presna distribucia chyby sa skryva problem ako v pripade celociselneho buffera reprezentovat napr 3 * 5/16 co najpresnejsie. Pri deleni totizto dochadza k zmensovaniu chyby (napr 3 * 5/16: namiesto skutocnej chyby 15/16 sa ulozi 0 po celociselnom deleni). Mozne riesenia:
- vyuzit buffer float-ov
- pri intovom bufferi distribuovat chybu do n-1 pixelov klasickym sposobom tj celkova_chyba * vahovy_koeficient a chybu posledneho pixelu urcit ako celkova_chyba - sucet ulozenych chyb v n-1 pixeloch
- pri intovom bufferi vobec nedelit a uchovavat 16-nasobne vacsie hodnoty chyb (v pripade FS), tj napr namiesto 3*5/16 = 15/16, uchovavat priamo 3*5 a vobec nedelit 16 (delime az ked nakumulovanu chybu pouzivame tj pri spracovani pixelu - vtedy mozeme zvysok po deleni presunut na okolite nespracovane pixely, tj okolite chybove policka buffera)