Virvtoonimine

Virvtoonimine (inglise dither) on tahtlik müra lisamine signaali, et muuta kvantimisviga vähem märgatavaks. Näiteks kasutatakse seda, et vältida suurte ühtlast värvi mustrite teket piltides. Virvtoonimist kasutatakse tihti digitaalsete heli- ja pildiandmete töötlemisel. Audio töötlemise käigus kasutatakse virvtoonimist, et lisada natuke müra, mis vähendaks kvantimisvigadest tulenevat moonutust. See on oluline osa analoog helisignaali digitaalseks muutmisel ning võib oluliselt heli kvaliteeti parandada, muutes kvantimisvigadest tulenevaid efekte vähem kuuldavaks. Virvtoonimisest on kasu ka helisignaali bitisügavuse vähendamisel. Virvtoonimist kasutatakse näiteks halltoonilise pildi mustvalgeks muutmisel. Selle tulemusena kujutatakse eri tumedusega osad pildis eri tihedusega mustade pikslitega nii, et mingi piirkonna pikslite keskmine väärtus oleks umbes sama algse halli tooniga. Virvtoonimist kasutatakse pilditöötluses, et luua illusioon suuremast värvisügavusest olukordades, kus on pildil piiratud arv värve. Varem oli virvtoonimine sageli vajalik, kuna vanemad arvutid olid mitmel viisil piiratud. Vanematel elektronkiiretoru kasutavatel ekraanidel oli virvtoonimine vähem nähtav. Tänapäeval on peaaegu kõik värvipiirangud meie pilditöötluses ise kehtestatud ja tänapäevastel ekraanidel kuvatav moonutamine ei anna sama efekti. Mõned virvtoonimise algoritmid: Keskmine virvtoonimine (inglise average dithering) on algoritm, kus iga piksli väärtust võrreldakse mingi kindla lävendiga. See on lihtsaim virvtoonimise algoritm, aga sellega kaasneb suur detailide ja kontuuride kadu. Suvaline virvtoonimine (inglise random dithering) genereerib iga piksli jaoks juhusliku arvu. Kui see on suurem kui pildi väärtus antud punktis, tehakse piksel valgeks ja muudel juhtudel mustaks. See tekitab suure müraga pildi, aga kuigi toodetud kujutis on väga ebatäpne ja mürarikas, ei sisalda see moonutusi, mis on digitaalsest signaalitöötlusest tulenenud. Korrapärane virvtoonimine (inglise ordered dithering) kasutab maatriksi väärtusi pildi iga vastava piksli jaoks lävendina, et määrata selle piksli väärtus. Kui piksel on madalam kui väärtus maatriksil, siis värvitakse piksel mustaks, vastasel juhul valgeks. Näiteks saab kasutada maatriksit [ 1 3 4 2 ] {\displaystyle {\begin{bmatrix}1&3\\4&2\end{bmatrix}}} , et käia läbi terve pilt ülevalt alla ja vasakult paremale ning võrrelda maatriksil asuvat numbrit ja sellel kohal olevat piksli väärtust, mis on normaliseeritud vahemikku 0 kuni 9. Erinevad maatriksid võivad tekitada pildis erinevaid virvtoonimismustreid. Floydi-Steinbergi virvtoonimine põhineb vigade hajutamisel. Vea hajutamisel iga pildi piksli jaoks leitakse esmalt lähim saadaolev värv. Seejärel arvutatakse erinevus pildil oleva väärtuse ja lähima värvi vahel, et saada viga. Leitud viga jagatakse kõrval olevate pikslite vahel järgmiselt: [ ∗ 7 16 3 16 5 16 1 16 ] {\displaystyle {\begin{bmatrix}&*&{\tfrac {7}{16}}\\{\tfrac {3}{16}}&{\tfrac {5}{16}}&{\tfrac {1}{16}}\end{bmatrix}}} Vaadeldavaks piksliks on ∗. Kuna vaadeldavast pikslist üleval ja vasakul olevaid ei mõjutata, saab algoritmi rakendada üle pildi ülevalt alla ja vasakult paremale liikudes. Jarvis, Judice & Ninke virvtoonimine on meetod, mis annab tihti tõhusaid tulemusi suhteliselt väheste korduvate mustrite tekketa. See kipub esile tooma jämedamaid mustreid kui Floydi-Steinbergi virvtoonimise algoritm. Antud algoritm on aeglasem kui Floydi-Steinbergi algoritm, sest kasutatakse suuremat maatriksit ja viga jagatakse 4 piksli asemel 12 lähedase piksli vahel ära järgmiselt: [ ∗ 7 48 5 48 3 48 5 48 7 48 5 48 3 48 1 48 3 48 5 48 3 48 1 48 ] {\displaystyle {\begin{bmatrix}&&*&{\tfrac {7}{48}}&{\tfrac {5}{48}}\\{\tfrac {3}{48}}&{\tfrac {5}{48}}&{\tfrac {7}{48}}&{\tfrac {5}{48}}&{\tfrac {3}{48}}\\{\tfrac {1}{48}}&{\tfrac {3}{48}}&{\tfrac {5}{48}}&{\tfrac {3}{48}}&{\tfrac {1}{48}}\end{bmatrix}}} Vaadeldavaks piksliks on ∗ ja algoritmi rakendatakse üle pildi ülevalt alla ja vasakult paremale liikudes. "What is dithering in audio? When to dither and how it works - Blog | Splice" (Ameerika inglise). Vaadatud 26. märtsil 2023. "Dithering for Pixel Artists". Pixel Parmesan (inglise). 18. jaanuar 2021. Vaadatud 26. märtsil 2023. Silva, Aristófanes Correia; Lucena, Paula Salgado; Figuerola, Wilfredo Blanco (13. detsember 2000). "Average Dithering". Vaadatud 26. märts 2023. Silva, Aristófanes Correia; Lucena, Paula Salgado; Figuerola, Wilfredo Blanco (13. detsember 2000). "Random Dithering". Vaadatud 26. märts 2023. Silva, Aristófanes Correia; Lucena, Paula Salgado; Figuerola, Wilfredo Blanco (13. detsember 2000). "Ordered Dithering". Vaadatud 26. märts 2023. "Floyd-Steinberg Dithering". scipython.com. Vaadatud 1. mail 2023. "Ditherpunk — The article I wish I had about monochrome image dithering — surma.dev". surma.dev. Vaadatud 1. mail 2023.