A ditherelés, dithering vagy zajmoduláció[1] (egyes kontextusokban még: árnyalás) során a hasznos jelhez szándékosan kis teljesítményű, véletlenszerű zajt kevernek a kvantálásihiba véletlenszerűvé tételére. Képek esetében a dithering megakadályozza a kiterjedt mintázatok (pl. sávozódás, poszterizáció) megjelenését. A hang-, képi és videoadatok digitális jelfeldolgozásában is rutinszerűen használják, például az audio CD-k masteringjének utolsó lépéseiben.
„…A dither egyik legkorábbi alkalmazása a második világháborúban történt. A bombázó repülőgépeken mechanikus számítógépek végezték a navigációs és bombaröppálya-számításokat. Érdekes módon ezek a számítógépek (fogaskerekek százaival teli dobozok) pontosabban számoltak repülés közben a fedélzeten, mint álló helyzetben a földön. A mérnökök felismerték, hogy a repülés közben jelentkező rázkódás csökkentette a mozgó alkatrészek beragadásából származó hibákat. Rövid rándulások helyett folyamatosabban mozogtak. A számítógépekbe így kisméretű, vibrációt okozó motorokat építettek, a vibrációt pedig a középangol nyelvű „didderen” („remegni”) igével jelölték. Napjainkban a mechanikus mérőeszközök megkocogtatása is dither alkalmazását jelenti; a modern szótárak a dithert úgy definiálják, mint nagyon ideges, zavarodott vagy felzaklatott állapot. A kis mennyiségben alkalmazott dither a digitalizáló rendszereket a szó pozitív értelmében vett analóghoz közelíti.
”
A „dither” kifejezés röviddel a háború után jelent meg az analóg számításokkal és a hidraulikusan vezérelt fegyverekkel foglalkozó könyvekben.[3][4] A ditheringnek, mint a kvantálási mintázatok csökkentésére szolgáló módszernek a koncepciója elsőként Lawrence G. Roberts[5] 1961-es MIT-n íródott diplomamunkájában,[6] illetve 1962-es cikkében[7] jelent meg, bár akkor még nem használta a „dither” kifejezést. 1964-re azonban már az említett cikkben leírt, modern értelemben volt használatos.[8]
Az előfeltevés szerint a kvantálás és a digitális adatok újrakvantálása hibákat ad hozzá a jelhez. Ha ez a hiba ismétlődő és a jellel korrelál, a keletkező hiba ismétlődő, ciklikus és matematikailag meghatározható. Egyes területeken, különösen ahol a befogadó érzékeny az ilyen jellegű hibákra, a ciklikus hibák nemkívánatos következménynek számítanak. Az ilyen területeken a dither alkalmazása kevésbé meghatározható hibákat eredményez. A digitális hangtechnika elsőrangú példa erre. Az emberi fül működése során a Fourier-transzformációhoz nagyon hasonló folyamatok mennek végbe, melynek során egyedi frekvenciákat hall ki a bemenő jelből.[9] A fül ezért nagyon érzékeny a torzításra, tehát olyan frekvenciatartalomra, ami másképpen “színezi” a hangot, de sokkal kevésbé érzékeny az összes frekvencián fellépő véletlenszerű zajra.[10]
A hangtechnikában a dither hasznos lehet a digitális szűrőkben gyakori problémát jelentő periodikus határciklusok felbontásában. A véletlenszerű zaj jellemzően kevésbé zavaró, mint a határciklusok által keltett harmonikus hangszínek.
Az AES Journalban publikált szemináriumi dolgozatukban Lipshitz és Vanderkooy rámutattak, hogy a különböző valószínűségi sűrűségfüggvénnyel leírható egyes zajtípusok különbözően viselkednek zajmodulációban használva, és javaslatot tettek a hangtechnikában használt dithering jelszintek optimális értékeire.[11][12]Gauss-zajból például többet kell adagolni a torzítás megszüntetéséhez mint a egyenletes vagy háromszöges eloszlású zajból. A háromszögeloszlás előnye, hogy kevesebb hozzáadott zajjal is elérhető a torzítás megszüntetése és a zajmoduláció minimalizálása. Ez utóbbi az alacsony hangszintű zene esetében fellépő maradványzajnak azokra a hallható változásaira utal, amik ráirányítják a hallgató személy figyelmét a zajra.
Egy analóg rendszerben a jel „folytonos”, de egy PCM digitális rendszer esetén a digitális rendszerből kijövő jel amplitúdója fix értékek vagy számok valamelyike lehet csak. A folyamatot kvantálásnak nevezik. Minden kódérték egy-egy diszkrét lépcsőnek felel meg… ha egy jelet dither alkalmazása nélkül kvantálnak, jelen lesz egy az eredeti bemeneti jelhez kapcsolódó kvantálási torzítás… Ennek megakadályozására a jelet „ditherelik”, mely folyamat során matematikai úton eltávolítják a harmonikusokat vagy más nemkívánatos torzításokat, és lecserélik egy konstans, meghatározott szintű zajjal.[13]
A CD-re kerülő hanganyag végső változata 16 bites hangmintákat tartalmaz, de az előállítási folyamat során végig nagyobb bitmélységet alkalmaznak. A folyamat végén a digitális anyagot 16 bitre kell korlátozni, hogy CD-re lehessen írni és a boltokba kerülhessen.
Erre több megoldás is elképzelhető. Lehetséges például egyszerűen elhagyni a „fölösleges” biteket – ezt nevezik csonkolásnak (truncation). Egy másik megoldás szerint a szám feletti biteket a legközelebbi értékre kerekítik. Mindkét módszer azonban megjósolható, determinisztikus hibákat visz az eredménybe. Tekintsünk egy hanghullámot, ami a következő értékekből áll:
1 2 3 4 5 6 7 8
Ha levesszük a hangerőt mondjuk 20 százalékkal, a kapott értékek a következők:
0,8 1,6 2,4 3,2 4,0 4,8 5,6 6,4
Ezeknek a csonkolásával a következő eredményt kapjuk:
0 1 2 3 4 4 5 6
Ha csonkolás helyett kerekítünk, ez lesz az eredmény:
1 2 2 3 4 5 6 6
Bármely eredeti hullámalakot tekintve a hangerő 20%-os csökkentése rendszeres hibákat fog eredményezni. Vegyünk például egy olyan szinuszgörbét, ami a függvény egy részén a fenti értékeket veszi fel. Minden alkalommal, amikor a szinuszhullám értéke 3,2 lesz, a csonkolt eredmény 0,2-del eltér az eredetitől. Minden alkalommal viszont, amikor a szinuszhullám értéke a 4,0-et veszi fel, a hiba értéke 0,0 lenne, ahogy a fenti példában is látható. A hiba nagyságrendje szabályos és ismétlődő módon változik a szinuszhullám teljes tartama alatt. Pontosan az ilyen jellegű hiba jelentkezik torzításként. Amikor a fül torzítást hall, az a szabályos és ismétlődő kvantálása hiba által bevitt, egyes diszkrét frekvenciaértékeken megjelenő plusz tartalom okozza.
Egy jónak tűnő megoldás, hogy vesszük a kétjegyű számot (pl. a 4,8-et) és az egyik vagy a másik irányba kerekítjük. Például egyszer az 5, a következő alkalommal a 4 irányába. Így hosszú távon az átlag 4,5 lenne 4 helyett, ami hosszú távon közelebb esik a valódi értékben. Más részről viszont, még mindig rendszeres (bár bonyolultabb) hibát okozunk. Minden második alkalommal a 4,8 +0,2 hibával tárolódik, a többi alkalommal a hiba −0,8. Ez továbbra is ismétlődő, számszerűsíthető hibát jelent.
Még jobbnak tűnő ötlet, hogy a 4,8-et ötből négy alkalommal az 5 felé, az ötödik alkalommal 4 felé kerekítsük. Így a hosszú távú átlag éppen 4,8 lenne. Sajnálatos módon azonban ez továbbra is ismétlődő és rendszeres hibákhoz vezet, melyek torzításként jelentkeznek a hallgató számára (bár a túlmintavételezés ezt csökkentheti).
Eljutva a „dithering” megoldáshoz: ahelyett, hogy ismétlődő minta szerint kerekítsünk fölfelé vagy lefelé, lehetséges véletlenszerű módon felfelé vagy lefelé kerekíteni. A ditherelési megoldás szerint 4 és 5 között véletlenszerűen váltogatjuk a kerekítés irányát olyan módon, hogy az idő 80 százalékában 5-öt kapjunk; így hosszú távon az átlag 4,8 lesz, és az eredményben pedig csak véletlenszerű, nem ismétlődő hiba lesz.
Ha 0,0–0,9 közé eső véletlenszámokat (pl. 0,6, 0,1, 0,3, 0,6, 0,9 stb.) generálunk és hozzáadjuk az eredményhez a csonkolás előtt, tízből két esetben az eredmény 4-re fog módosulni (ha 0,0-et vagy 0,1-et adunk a 4,8-hoz), a többi esetben pedig 5-re, de minden esetben 20% esély van rá, hogy 4-et kapjunk és 80%, hogy 5-öt. Hosszú távon az eredmények 4,8-ra átlagolódnak, a kvantálási hiba pedig véletlenszerű, zajos. Ez a „zaj” az emberi fül számára sokkal kevésbé zavaró, mint a determinisztikus torzítás, ami egyébként jelentkezne.
A dithering a számítógépes grafika területén használt technika, ami korlátozott színpalettával bíró képeken használva a színmélység illúzióját képes kelteni (színkvantálás). A zajmodulált képen azokat a színeket, amik nem állnak rendelkezésre a palettán, a rendelkezésre álló színek szórt elhelyezésével kell közelítőleg helyettesíteni. Az emberi szem a diffúz, különböző színű képpontokat a benne lévő színek keverékeként érzékeli (lásd színlátás). A ditherezett képeket, főleg a kevés színből állókat könnyen meg lehet különböztetni a rájuk jellemző szemcsézett vagy foltos kinézetükről.
Természeténél fogva a zajmoduláció egy mintát visz bele a képbe. Elméletileg a képet olyan távolságból kellene nézni, hogy a minta szabad szemmel ne legyen látható. Sajnos gyakran nem ez a helyzet, és a mintázottság látható marad. Ilyen körülmények között kimutatható, hogy a kék zaj dither-mintázat a legkevésbé észrevehető vagy zavaró.[14] Az első kékzaj-alapú dithering-minták előállítási módszerei közé tartoztak a hibadiffúziós technikák. Azóta hatékonyabb módszereket is kifejlesztettek, például a rendezett ditheringet, ami a szemnek zavaró hibák elszaporodása nélkül képes megvalósítani a kékzaj-ditheringet.
Egy kép színmélységének csökkentése jelentős vizuális mellékhatásokkal járhat. Ha az eredeti kép egy fotó, valószínűleg több ezer, vagy akár több millió különböző színt tartalmaz. A rendelkezésre álló színek szűkítése egy megadott „színpalettára” lényegében ennek a színinformációnak egy részét eldobja.
A csökkentett színű kép minőségét több tényező befolyásolja. Talán a legfontosabb a redukált képen használható színpaletta milyensége. Például az eredeti képet (1. ábra) korlátozhatjuk a 216 színű, „webszínekből” álló palettára. Ha az eredeti képpontok színeit egyszerűen lecseréljük a palettában hozzájuk legközelebb álló színekre, ditherelés nélkül, a 2. ábrát kapjuk. Ez a megközelítés jellemzően éles kontúrokkal bíró, nagy, egyszínű területeket és a részletgazdagság csökkenését eredményezi, és a kialakult kép olyan színfoltokat tartalmazhat, ami jelentősen eltér az eredetitől. Az eredetiben árnyalt vagy lépcsőzetes területek színsávokként jelentkeznek, ami zavaró lehet. A dithering alkalmazása segít minimalizálni az ilyen hibákat, és általában jobb közelítését adja az eredeti képnek (lásd a 3. ábrát). A dithering tehát segít csökkenteni a sávozottságot és a kontraszt hiányát.
A fix színpaletta alkalmazásával a fő probléma, hogy a kép ábrázolásához szükséges színek nem feltétlenül vannak jelen a palettán, a jelen levő színek közül pedig nem biztos, hogy mindre szükség van; egy fix, főleg a zöld színárnyalatait tartalmazó paletta például nem túl hasznos egy vörös alaptónusú kép megjelenítéséhez. Ilyen esetekben nagyon hasznos tud lenni egy optimalizált színpaletta alkalmazása. Az optimalizált paletta színeit az eredeti képben lévő színek gyakorisága alapján kell megválasztani. Ha a színredukált kép előállításánál ilyen optimalizált palettát alkalmaznak, az eredmény gyakran sokkal jobban hasonlít az eredetire (4. ábra).
A paletta színeinek a száma is igen fontos. Ha a paletta mindössze 16 színű, a részletek elvesztése, a sávozódás még sokkal kifejezettebb (5. ábra). Ebben az esetben is segíthet a dithering valamelyest (6. ábra).
1. ábra: Az eredeti kép; megfigyelhető a kinagyított részlet folytonos simasága.
2. ábra. Az eredeti kép webtűrő színpalettával, dithering nélkül. Nagy, egyszínű területek láthatók, fontos részletek vesznek el.
3. ábra. Az eredeti kép webtűrő színpalettával, Floyd–Steinberg ditheringgel. Bár a paletta megegyezik az előző képével, a ditherezés miatt a kép sokkal jobb közelítését adja az eredetinek.
4. ábra. Itt az eredeti képre szintén Floyd–Steinberg ditheringet alkalmaztak, de 256 színű optimalizált palettával. Az optimalizált paletta segítségével az eredmény pontosabban leképezi az eredeti kép színeit.
5. ábra. A színmélység 16 színű optimalizált palettára redukálva, dithering nélkül. A színek tompák, a kép feltűnően sávozott.
6. ábra. A képet szintén 16 színű optimalizált palettára redukálták, de a dithering alkalmazása csökkenti a sávozódást.
Egyes kijelzők színkészlete, ideértve a korai számítógépek videókártyáit és a jelenlegi olcsó digitális fényképezőgépekben és mobiltelefonokban használt LCD-ket, sokkal korlátozottabb lehet, mint a csúcstechnológiás megjelenítők színkészlete. A dithering egyik leggyakoribb alkalmazási módja éppen a hardver képességeit meghaladó színkészletű képek lehető legpontosabb megjelenítésében van. Például dithering segítségével jeleníthető meg egy true color kép egy 256 színű videohardveren. Dithering nélkül az eredeti kép színeit egyszerűen „lekerekítenék” a legközelebbi elérhető színhez, az eredetit nem elég hűen visszaadó képet eredményezve. A dithering kihasználja az emberi szem hajlandóságát arra, hogy két közeli szomszédságban lévő színt „összekeverjen” egymással.
Egyes LCD-k ún. időbeli dithering technikával érnek el hasonló hatást. Egy képpont értékének gyors csereberéjével két, a panel színterében található szín között (ez ismert úgy is, mint továbbfejlesztett képkocka-vezérlés vagy Frame Rate Control) egy natívan 18 bites kijelző (6 bit csatornánként) képes egy 24 bites valós színű kép (8 bit csatornánként) megjelenítésére.[15]
Az ilyen típusú ditherelést, amikor a számítógép kijelzőjének korlátozásai jelentik a színmélységbeli korlátokat gyakran a szoftvereknek (pl. webböngészőnek) kell elvégezniük. Mivel a böngészőknek a kezdetektől meg kellett küzdeni azzal, hogy a külső forrásból letöltött képek színmélysége meghaladhatta a rendelkezésre álló kijelző színmélységét, kifejlesztették az ún. webes színpalettát – ezeket a színeket használva a weboldal tartalma dithering nélkül jelent meg a 256 színű kijelzőkön is.
Még abban az esetben is, amikor a kijelző színmélysége elegendő lenne digitális fényképek megjelenítésére, mint a 15 és 16 bites RGB Hicolor 32 768/65 536-színű üzemmódoknál, a sávozódás észlelhető lehet, főleg a nagy kiterjedésű, finom árnyalatátmeneteknél (még ha az eredeti nem is sávozódott). A 15/16 bites színmélységnél rendelkezésre álló, RGB-csatornánkénti 32 vagy 64 szinttel való dithering meglehetősen jó pszeudo-truecolor közelítést ad, amit a szem nem érzékel „szemcsésnek”. Továbbá, a 24 bites RGB hardverrel (8 bit színcsatornánként) bíró megjelenítőkön ditheringgel még nagyobb színmélység szimulálható, vagy a gammakorrekció színvesztesége csökkenthető vele. A felső kategóriás képfeldolgozó szoftverekben általánosan elterjedtek ezek a képminőséget javító technikák.
A dithering további felhasználási területét adják azok az esetek, ahol a grafikus fájlformátum a korlátozó tényező. Az elterjedt GIF formátum legfeljebb 256 színt támogat. Más formátumok, pl. a PNG vagy a WEBP használatakor is előfordulhatnak a fájlméret csökkentését célzó korlátozások, ilyenkor a színpalettás üzemmódot használják. Ilyenkor a grafikus program feladata a képek ditherelése a korlátozott formátumba történő mentés során.
A dithering nyomdai megfelelője a féltónusos (halftone) technika. Az elterjedt tintasugarasnyomtatók képesek egymástól független festékpöttyök elhelyezésére a papíron, ami megnövelte a dithering papíralapú használatát. A dithering kifejezést ezért, főleg a digitális nyomtatás területén.
Egy átlagos asztali tintasugaras nyomtató csak 15 különböző színt képes nyomtatni (van festék/nincs festék a cián, bíbor, sárga és fekete nyomtatófejekből), és ezen kombinációk némelyikével nem is érdemes számolni, mert a fekete elnyomja a többi színt. Nagyobb színtartomány kifejezésére ditheringet használnak. A sötét tónusú, sűrűn nyomtatott területeken a dithering általában nem is vehető észre, mert a festékcseppek egységes nyomtatott képpé állnak össze. Az egymástól jóval távolabb elhelyezett festékcseppekből álló, világosabb részek tüzetes megvizsgálása azonban felfedi, hogy ditheringet alkalmaztak a nyomtatás során.
Számos dithering algoritmust kifejlesztettek ki. Az egyik legkorábbi, mégis a legnépszerűbbek közé tartozó az 1975-ben megalkotott Floyd–Steinberg dithering algoritmus. Ennek egyik előnye, hogy hibadiffúzió segítségével minimalizálja a vizuális hibákat; az ilyen algoritmusok jellemzően az eredeti képhez közelebb álló reprezentációkat eredményeznek, mint az egyszerűbb dither algoritmusok.[16]
A dithering módszerek közé tartoznak:
Küszöbszínezés (Thresholding, average dithering[17]): minden képpont értékét egy állandó küszöbhöz hasonlítják. Ez talán a legegyszerűbb dither algoritmus, használata azonban a kép részletességének és kontúrjainak túl nagy veszteségét okozza.[16]
Véletlen dithering (random) – ez volt 1951-ben az első próbálkozás a küszöbszínezés hátrányainak kiküszöbölésére. Minden képpontot egy véletlen küszöbértékhez hasonlítanak, ami statikus zajú képet eredményez. Bár a módszer nem hoz elő mintázatos jellegű hibákat, a zajok elnyomják a kép részleteit. A módszer analóg a mezzotinto alkalmazásával.[16]
Mintázatos dithering (Patterning) – állandó minta alkalmazása. A kezdeti kép minden képpont-értékéhez egy fix mintát társítanak. A technika legnagyobb hátránya, hogy az eredményül kapott kép nagyobb méretű (a fix minta méretétől függően), mint a kiindulási.[16]
Rendezett dithering (Ordered) – „dither mátrix” segítségével történik. A bemeneti kép minden pixeléhez a neki megfelelő mintázat értékét használják küszöbként. Az egymás melletti képpontok nem befolyásolják egymást, így ez az árnyalási mód animációk átalakítására is megfelelő. Különböző mintázatok más-más effektusokat hoznak létre. Bár egyszerű megvalósítani, ez az algoritmus nehezen adaptálható tetszőleges, szabad formájú palettákhoz.
A féltónus(Halftone dithering) mátrix az újságok féltónusú megjelenéséhez hasonlót állít elő. Ez a módszer elrejtheti az egyes régebbi megjelenítő eszközök elmosódott pixeleiből adódó negatív hatásokat. A módszer fő felhasználása az ofszetnyomtatás és a lézernyomtatás területén van, mivel ezekben az eszközökben a tinta vagy toner hajlamos az összeolvadásra és nem állnak elő a más árnyalási módszereknél alkalmazott izolált pontok.
A Bayer-mátrix[16] könnyen felismerhető, rácsos mintázatot állít elő.
A kékzaj előállítására optimalizált mátrix, amit a void-and-cluster módszer is használ[18]) a hibadiffúziós módszerhez hasonló kinézetet produkál.
(Eredeti)
Küszöb
Véletlen
Féltónusú
Rendezett (Bayer)
Rendezett (Void-and-cluster)
A hibadiffúziós dithering olyan visszacsatolt folyamat, ami a kvantálási hibát elosztja a közelben elhelyezkedői képpontok között.
A Floyd–Steinberg dithering kizárólag a közvetlenül szomszédos képpontokra teríti a hibát. Ez nagyon finom szemcsézettségű dithert eredményez.
A Jarvis, Judice, and Ninke dithering még egy pixellel tovább megy a hiba diffúziója során. Így durvább árnyalást kapunk, de a vizuális hibákból is kevesebb jelentkezik. Lassabb a Floyd–Steinberg dithering algoritmusnál, mivel a 4 szomszédos pixel helyett 12 pixelre teríti a kvantálási hibát.
A Stucki dithering a fentin alapul, de némileg gyorsabb annál. Kimenete általában tiszta és éles.
A Burkes dithering a Stucki egyszerűsített formája, annál is gyorsabb, de kevésbé tiszta képet eredményez.
Floyd–Steinberg
Jarvis, Judice & Ninke
Stucki
Burkes
Hibadiffúziós dithering (folytatás):
A Sierra dithering a Jarvis ditheringen alapul, de gyorsabb annál, miközben hasonló eredményt ad.
A kétsoros Sierra a fenti módszer, amit Sierra némileg felgyorsított.
A Filter Lite algoritmus, szintén Sierrától a Floyd–Steinberg-algoritmusnál egyszerűbb és gyorsabb módszer, ami hasonló (Sierra szerint jobb) eredményeket produkál.
Az Atkinson dithering, amit az Apple programozója, Bill Atkinson fejlesztett ki, a Jarvis-, illetve Sierra-dithering módszerekhez hasonló, de gyorsabb azoknál. Eltérés továbbá, hogy nem a teljes kvantálási hibát, csak annak háromnegyedét szórja szét a pixelek között. Jól megőrzi az eredeti kép részletességét, de a nagyon világos vagy nagyon sötét területek túlexponáltnak tűnhetnek.
↑Lawrence G. Roberts, Picture Coding Using Pseudo-Random Noise, MIT, S.M. thesis, 1961 onlineArchiválva2006. szeptember 26-i dátummal a Wayback Machine-ben
↑Montgomery, Christopher (Monty): Digital Show and Tell. Xiph.Org / Red Hat, Inc., 2012–2013. (Hozzáférés: 2013. február 27.) „Dither is specially-constructed noise that substitutes for the noise produced by simple quantization. Dither doesn't drown out or mask quantization noise, it replaces it with noise characteristics of our choosing that aren't influenced by the input.”
↑6-Bit vs. 8-Bit... PVA/MVA vs. TN+Film
Are Things Changing? [1]Archiválva2014. január 28-i dátummal a Wayback Machine-ben
↑ abcdeCrocker, Lee Daniel; Boulay, Paul & Morra, Mike: Digital Halftoning. Computer Lab and Reference Library, 1991. június 20. [2007. szeptember 27-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. szeptember 10.)Note: this article contains a minor mistake: “(To fully reproduce our 256-level image, we would need to use an8x8pattern.)” The bold part should read “16x16”.
↑Silva, Aristófanes Correia; Lucena, Paula Salgado & Figuerola, Wilfredo Blanco: Average Dithering. Image Based Artistic Dithering. Visgraf Lab, 2000. december 13. [2023. július 21-i dátummal az eredetiből archiválva]. (Hozzáférés: 2007. szeptember 10.)
Ez a szócikk részben vagy egészben a Dither című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.
What is Dither? Article previously published in Australian HI-FI with visual examples of how audio dither sharply reduces high order harmonic distortion.