Pembauran galat

derau untuk mengurangi galat kuantisasi

Pembauran galat (bahasa Inggris: error diffusion) adalah cara untuk memperbaiki citra yang mengalami pengurangan jumlah palet warna sehingga muncul pemitaan warna. Cara ini dilakukan dengan menggunakan derau untuk mengurangi pemitaan warna. Pembauran galat dipakai untuk pencetak/layar yang memiliki keterbatasan warna, misalnya pengubahan dari gambar berderajat keabuan ke dalam citra yang hanya terdiri dari dua warna: hitam dan putih.

Citra berderajat keabuan yang diubah ke dalam citra 1 bit hitam dan putih

Pengolahan digital dan analisis bentuk gelombang

sunting

Pembauran galat dipakai dalam berbagai bidang yang memakai analisis dan pengolahan digital, termasuk pengolahan sinyal digital, seperti audio digital, video digital, fotografi digital, seismologi, radar, dan sistem prakiraan cuaca.

Kuantisasi menghasilkan galat. Jika galat itu berkorelasi dengan sinyal, hasilnya berpola atau bisa diprediksi. Dalam beberapa bidang yang sensitif terhadap hal itu, galat siklis menghasilkan artefak yang tidak diinginkan. Dalam bidang-bidang itulah, pembauran galat dipakai. Contohnya adalah bidang audio. Telinga manusia bekerja seperti transformasi Fourier, yaitu mendengarkan tiap frekuensi.[1][2]

Audio digital

sunting

Dalam sebuah sistem analog, sinyalnya kontinu. Namun, dalam sistem digital PCM, amplitudo sinyal yang keluar dari sistem digital terbatas pada himpunan nilai atau bilangan tetap. Proses ini disebut dengan kuantisasi. Tiap nilai kode adalah langkah diskret ... jika sebuah sinyal dikuantisasi tanpa pembauran galat, akan ada distorsi kuantisasi yang berkaitan dengan sinyal input asal .... Untuk mencegahnya, sinyal di-dither (pembauran galat dengan derau), yaitu sebuah proses yang secara matematis menghilangkan harmoni atau distorsi yang sangat tidak diinginkan sepenuhnya dan menggantinya dengan derau tingkat tetap/konstan.[3]

Versi akhir audio yang dimasukkan ke dalam cakram padat hanya terdiri dari 16 bit per sampel. Namun, selama proses produksi, kedalaman bit yang dipakai biasanya lebih besar. Pada akhirnya, data digital tersebut harus dikurangi menjadi 16 bit untuk dimasukkan ke dalam CD dan didistribusikan.

Ada beberapa cara untuk melakukannya. Salah satunya dengan membuang bit yang berlebih (disebut pemangkasan). Cara lainnya adalah dengan membulatkan bit yang berlebih ke nilai terdekat. Namun, kedua cara tersebut menghasilkan galat yang dapat diprediksi dalam hasilnya. Pembauran galat mengganti galat-galat tersebut dengan derau tingkat tetap/konstan.

Pengolahan citra dan fotografi digital

sunting
 
Warna yang dipakai hanyalah merah dan biru. Namun, seiring kotak-kotak itu diperkecil, dua warna tersebut tampak berwarna ungu.
 
Pembauran galat 256 warna dengan IrfanView

Pembauran galat dipakai dalam grafika komputer untuk memberikan ilusi kedalaman warna tinggi dengan menggunakan palet terbatas (kuantisasi warna). Caranya adalah dengan membuat rata-rata bagian citra sama dengan rata-rata pada bagian citra asalnya. Penglihatan manusia melihat warna-warna yang berdekatan sebagai campuran warna-warna tersebut. Layar televisi dan komputer menggunakan cara sifat pencampuran warna untuk menampilkan citra berwarna dengan fosfor tiga warna.

Sederhananya, algoritme pembauran galat mencatat selisih warna (galat) yang dipilih dengan warna aslinya dan menambahkan selisih tersebut ke piksel tetangganya sebelum mencari palet warna terdekat untuknya. Dengan membaurkan galat-galat ini, hasil pengurangan warna (kuantisasi) masih tampak mirip dengan asalnya. Meski demikian, apabila jumlah warna terlalu sedikit (kedalaman warna yang terlalu dangkal), pola deraunya bisa saja terlihat.

Contoh

sunting
 
Pembauran galat warna pada handuk

Pengurangan kedalaman warna dapat memiliki efek samping visual yang nyata. Kalau citra asli berupa foto, ia bisa terdiri dari ribuan warna, bahkan jutaan warna. Pembatasan jumlah warna menjadi palet warna khusus tertentu secara efektif membuang sekian banyak informasi warna.

Ada beberapa sebab yang dapat memengaruhi kualitas citra yang dikurangi jumlah warnanya. Salah satunya adalah palet warna yang dipilih. Sebagai contoh, citra asal (Gambar 1) dapat dikurangi menjadi 216 warna aman untuk web. Jika tiap piksel pada citra asal langsung diganti menjadi warna terdekat pada palet tersebut, tidak ada pembauran galat yang dilakukan (Gambar 2). Namun, biasanya cara ini menghasilkan wilayah datar (kontur) dan kehilangan detail sehingga dapat terlihat cukup jauh dari asalnya. Bagian bergradasi dapat menghasilkan pemitaan warna yang cukup mengganggu. Penerapan pembauran galat dapat meminimalkan artefak visual dan lebih mencirikan citra asal (Gambar 3). Pembauran galat dapat mengurangi pemitaan warna dan daerah datar.

Salah satu masalah yang muncul akibat palet warna yang tetap adalah warna yang dibutuhkan bisa saja tidak tersedia pada palet dan banyak warna yang ada tidak diperlukan. Misalnya, palet yang berisi banyak warna hijau kurang cocok untuk foto padang pasir. Penggunaan palet warna optimal dapat membantu untuk kasus ini. Palet warna optimal dibuat berdasarkan warna-warna yang paling sering muncul. Apabila citra asal dikurangi dengan palet warna optimal, hasilnya lebih mirip dengan citra asal (Gambar 4).

Jumlah warna yang tersedia dalam palet juga menjadi salah satu sebab yang memengaruhi kualitas citra. Misal, jika warnanya hanya ada enam belas, citra hasil pengurangannya akan semakin kehilangan detail dengan lebih banyak daerah datar dan pemitaan warna (Gambar 5). Sekali lagi, pembauran galat dapat mengurangi artefak tersebut (Gambar 6).

Penerapan

sunting

Berbagai macam perangkat keras tampilan, termasuk adaptor video komputer awal dan juga banyak LCD modern yang dipakai dalam telepon genggam dan kamera digital murah, menampilkan rentang warna yang jauh lebih kecil daripada tampilan layar kebanyakan. Salah satu penerapan pembauran galat adalah untuk menampilkan warna yang lebih banyak daripada yang sebenarnya didukung.

Algoritme

sunting

Ada beberapa algoritme yang didesain untuk mengurangi kedalaman warna citra.

  • Pengambangan (disebut juga pembauran galat rata-rata[4]): Tiap piksel dibandingkan dengan nilai ambang tertentu. Cara ini adalah cara termudah daripada yang lain. Namun, hasilnya memiliki kekurangan detail yang besar.[5]
  • Pengambangan acak adalah usaha awal (seawal-awalnya tahun 1951) untuk mengurangi dampak akibat pengambangan biasa. Tiap piksel dibandingkan dengan nilai ambang acak sehingga menghasilkan citra yang berderau statis. Meski cara ini tidak menghasilkan artefak berpola, deraunya lebih sering merusak citra.[5]
  • Pembauran galat teratur membaurkan dengan matriks pembauran. Tiap piksel pada citra dibandingkan dengan nilai ambang sesuai pola matriks. Piksel tetangga tidak saling memengaruhi sehingga cara ini tidak cocok untuk animasi. Tiap pola menghasilkan efek pembauran yang berbeda. Meski mudah dibuat, algoritme ini tidak bisa diubah dengan mudah untuk palet khusus tertentu.
    • Pembauran galat halfton menghasilkan citra yang mirip dengan hasil cetak koran. Hal ini menghasilkan pembauran berkerumun seperti tinta yang cenderung menyatu. Cara ini sering dipakai utamanya dalam cetak ofset dan cetak laser.
    • Matriks Bayer[5] menghasilkan pola silang seperti hasil menyulam.
    • Matriks yang diatur untuk blue noise seperti cara void-and-cluster[6] menghasilkan citra yang mirip dengan pembauran galat tak teratur.
(Citra Asal) Pengambangan Acak
     
Halfton Teratur (Bayer) Teratur (void-and-cluster)
     
  • Pembauran galat tetangga adalah proses umpan balik yang membaurkan galat kuantisasi kepada piksel tetangganya.
    • Algoritme Floyd–Steinberg hanya membaurkan galat kepada piksel tetangganya. Hasilnya adalah pembauran yang halus.
    • Algoritme Jarvis–Judice–Ninke membaurkan galat hingga kepada satu piksel lebih jauh. Hasilnya lebih kasar, tetapi memiliki lebih sedikit artefak visual. Namun, algoritme ini lebih lambat daripada Floyd–Steinberg karena harus membaurkan galat kepada 12 piksel tetangganya. Bandingkan dengan Floyd–Steinberg yang hanya membaurkan kepada 4 piksel tetangganya.
    • Algoritme Stucki berdasarkan algoritme Jarvis–Judice–Ninke, tetapi sedikit lebih cepat. Hasilnya cenderung lebih bersih dan tajam.
    • Algoritme Burkes adalah bentuk sederhana dari algoritme Stucki sehingga lebih cepat. Namun, hasilnya kurang bersih dibandingkan algoritme Stucki.
Floyd–Steinberg Jarvis–Judice–Ninke Stucki Burkes
       
  • Pembauran galat tetangga (lanjutan)
    • Algoritme Sierra berdasarkan pada algoritme Jarvis dkk., tetapi lebih cepat dan menghasilkan hasil yang masih mirip.
    • Algoritme Sierra dua baris mirip dengan algoritme di atas, tetapi diubah oleh Sierra untuk meningkatkan lajunya.
    • Sierra Lite adalah algoritme oleh Sierra yang lebih cepat daripada Floyd–Steinberg. Namun, hasilnya masih mirip (tidak memburuk).
    • Algoritme Atkinson dibuat oleh pemrogram Apple, Bill Atkinson, dan berdasarkan pada algoritme Jarvis dkk. serta algoritme Sierra, tetapi lebih cepat. Perbedaannya adalah pembauran galatnya tidak seluruhnya, tetapi hanya tiga perempatnya. Cara ini cenderung menjaga detail dengan baik. Namun, bagian yang sangat gelap atau sangat terang bisa gagal diolah.
    • Pembauran galat berdasarkan gradasi dikembangkan pada tahun 2016[7] untuk menghapus artefak struktur yang dihasilkan oleh algoritme Floyd–Steinberg dengan pengacakan termodulasi dan memperbaiki struktur dengan modulasi pembauran berdasarkan gradasi.
Sierra Sierra dua baris Sierra Lite Atkinson Berdasarkan gradasi
         

Lihat pula

sunting

Referensi

sunting
  1. ^ Deutsch, Diana (1999). The Psychology of Music. Gulf Professional Publishing. hlm. 153. ISBN 978-0-1221-3565-1. Diakses tanggal 24 Mei 2011. 
  2. ^ Hauser, Marc D. (1998). The Evolution of Communication. MIT Press. hlm. 190. ISBN 978-0-2625-8155-4. Diakses tanggal 24 Mei 2011. 
  3. ^ Bob Katz (2002). Mastering Audio: The Art and the Science. hlm. 49–50. ISBN 978-0-2408-0545-0. 
  4. ^ Silva, Aristófanes Correia; Lucena, Paula Salgado; Figuerola, Wilfredo Blanco (13 Desember 2000). "Average Dithering". Image Based Artistic Dithering. Visgraf Lab. Diakses tanggal 10 September 2007. 
  5. ^ a b c Crocker, Paul; Boulay; Morra, Mike (20 Juni 1991). "Digital Halftoning". Computer Lab and Reference Library. Diarsipkan dari versi asli tanggal 27 September 2007. Diakses tanggal 10 September 2007.  Catatan: artikel ini memiliki kesalahan kecil, “(To fully reproduce our 256-level image, we would need to use an 8x8 pattern.)” Bagian yang dicetak tebal seharusnya ditulis “16x16”.
  6. ^ Ulichney, Robert A (1993). "The void-and-cluster method for dither array generation" (PDF). Diakses tanggal 11 Februari 2014. 
  7. ^ Xiangyu Y. Hu (2016). "Simple gradient-based error-diffusion method" (abstrak). Journal of Electronic Imaging. 25 (4): 043029. doi:10.1117/1.JEI.25.4.043029.