Perataan histogram

Perataan histogram adalah metode pengolahan citra yang menyesuaikan kontras dengan mengatur histogram citra.
Gambaran umum
Metode ini meningkatkan kontras global pada kebanyakan citra, khususnya pada citra yang nilainya berdekatan (rentangnya kecil). Dengan penyesuaian ini, intensitasnya dapat disebarkan dengan merata pada histogram sehingga bagian dengan kontras rendah dapat menjadi kontras tinggi. Perataan histogram melakukannya dengan meratakan nilai intensitas yang paling sering muncul.
Metode ini cocok untuk citra dengan latar depan dan latar belakang yang sama-sama terang atau sama-sama gelap. Contohnya, struktur tulang dapat menjadi lebih jelas pada hasil rontgen (citra sinar X) serta hasil fotografi yang terlalu terang atau terlalu gelap dapat menjadi jelas (lebih detail).
Keuntungan metode ini adalah penggunaan operasi yang bisa dibalik. Jadi, secara teori, bila operasinya (fungsinya) diketahui, histogram asalnya dapat dipulihkan. Perhitungan metode ini tidak mahal (tidak berat). Kerugian metode ini adalah tidak membedakan derau dari benda yang dimaksud sehingga kontras derau juga ikut naik.
Perataan histogram sering menghasilkan citra yang kurang riil (terlihat nyata). Namun, cara ini dapat membantu untuk citra ilmiah, seperti citra sinar X, citra satelit, dan citra suhu, yang biasanya menggunakan warna semu. Perataan histogram juga dapat memberikan efek samping (seperti gradasi citra yang tampak) ketika diterapkan untuk citra dengan kedalaman warna yang rendah. Perataan histogram cocok untuk citra dengan kedalaman warna yang lebih tinggi daripada ukuran palet, seperti data kontinu dan citra 16 bit.
Modifikasi metode ini menggunakan beberapa histogram yang disebut subhistogram untuk memperkuat kontras lokal alih-alih kontras global. Contohnya adalah perataan histogram adaptif, perataan histogram adaptif terbatas kontras (CLAHE), perataan histogram banyak puncak (MPHE), dan perataan histogram ganda teroptimasi beta multiguna (MBOBHE). Tujuan metode-metode tersebut, khususnya MBOBHE, adalah untuk memperbaiki kontras tanpa menghasilkan pergeseran rata-rata kecerahan dan kekurangan detail dengan mengubah algoritme perataan histogram.[1]
Implementasi
Misalkan Templat:Math adalah citra berderajat keabuan diskret dan Templat:Math adalah banyak piksel dengan nilai Templat:Math. Peluang suatu piksel bernilai Templat:Math (Templat:Math) adalah
dengan Templat:Math adalah banyak tingkat keabuan pada citra (256 tingkat untuk citra 8 bit), Templat:Math adalah banyak piksel keseluruhan, dan Templat:Math berada dalam rentang Templat:Math.
Kita juga definisikan fungsi distribusi kumulatif (CDF) untuk Templat:Math sebagai
yang juga menjadi histogram kumulatif citra.
Kita buat transformasi dalam bentuk
untuk membuat citra baru y dengan histogram yang datar. Citra tersebut akan memiliki fungsi distribusi kumulatif yang berbentuk garis lurus, yaitu Templat:Math untuk Templat:Math suatu tetapan.
Perhatikan bahwa Templat:Math memetakan tingkat-tingkat menjadi nilai dalam rentang Templat:Math karena kita menggunakan histogram ternormalkan dari Templat:Math.
Penjelasan lebih terperinci disediakan di sini.
Citra berwarna
Penjelasan di atas dipakai untuk citra berderajat keabuan. Namun, metode ini juga bisa diterapkan untuk citra berwarna. Salah satunya adalah dengan meratakan histogram untuk tiap saluran (merah, hijau, dan biru). Namun, cara tersebut dapat merusak keseimbangan warna citra karena distribusi relatif (antarsaluran) berubah. Cara lainnya adalah dengan mengubah citra ke dalam ruang warna Lab atau HSL/HSV terlebih dahulu, lalu menerapkan metode ini untuk nilai kependarannya. Cara ini mempertahankan warna dan saturasinya.[2]
Contoh
Pada contoh berikut, fungsi distribusi kumulatif (CDF) bermakna sama dengan histogram kumulatif.
Citra kecil

Citra berderajat keabuan di sebelah memiliki nilai-nilai berikut:
| 52 | 55 | 61 | 59 | 79 | 61 | 76 | 61 |
| 62 | 59 | 55 | 104 | 94 | 85 | 59 | 71 |
| 63 | 65 | 66 | 113 | 144 | 104 | 63 | 72 |
| 64 | 70 | 70 | 126 | 154 | 109 | 71 | 69 |
| 67 | 73 | 68 | 106 | 122 | 88 | 68 | 68 |
| 68 | 79 | 60 | 70 | 77 | 66 | 58 | 75 |
| 69 | 85 | 64 | 58 | 55 | 61 | 65 | 83 |
| 70 | 87 | 69 | 68 | 65 | 73 | 78 | 90 |
Histogram citra di atas dan fungsi distribusi kumulatif (CDF) ditunjukkan oleh tabel berikut. Agar ringkas, hanya nilai-nilai yang muncul yang ditunjukkan.
| Templat:Math | frek | Templat:Math | Templat:Math | frek | Templat:Math | Templat:Math | frek | Templat:Math | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 52 | 1 | 1 | 69 | 3 | 33 | 88 | 1 | 53 | ||
| 55 | 3 | 4 | 70 | 4 | 37 | 90 | 1 | 54 | ||
| 58 | 2 | 6 | 71 | 2 | 39 | 94 | 1 | 55 | ||
| 59 | 3 | 9 | 72 | 1 | 40 | 104 | 2 | 57 | ||
| 60 | 1 | 10 | 73 | 2 | 42 | 106 | 1 | 58 | ||
| 61 | 4 | 14 | 75 | 1 | 43 | 109 | 1 | 59 | ||
| 62 | 1 | 15 | 76 | 1 | 44 | 113 | 1 | 60 | ||
| 63 | 2 | 17 | 77 | 1 | 45 | 122 | 1 | 61 | ||
| 64 | 2 | 19 | 78 | 1 | 46 | 126 | 1 | 62 | ||
| 65 | 3 | 22 | 79 | 2 | 48 | 144 | 1 | 63 | ||
| 66 | 2 | 24 | 83 | 1 | 49 | 154 | 1 | 64 | ||
| 67 | 1 | 25 | 85 | 2 | 51 | |||||
| 68 | 5 | 30 | 87 | 1 | 52 | |||||
Dari tabel di atas, nilai minimum pada citra adalah 52 dan maksimumnya adalah 154. Perhatikan bahwa nilai CDF untuk nilai maksimum (154) adalah sama dengan jumlah piksel pada citra. Selanjutnya, nilai CDF di atas diskalakan ke dalam rentang Templat:Math. Rumus umumnya adalah sebagai berikut:
dengan Templat:Math adalah nilai CDF terendah bukan nol, Templat:Math adalah banyak piksel keseluruhan, dan Templat:Math adalah banyak tingkat keabuan pada citra (256 tingkat untuk citra 8 bit).
Untuk contoh kali ini, rumus di atas menjadi berikut.
Dari rumus tersebut, dihasilkan pemetaan berikut. Seperti sebelumnya, hanya nilai-nilai yang muncul yang ditunjukkan.
| Templat:Math | Templat:Math | Templat:Math | Templat:Math | Templat:Math | Templat:Math | ||
|---|---|---|---|---|---|---|---|
| 52 | 0 | 69 | 130 | 88 | 210 | ||
| 55 | 12 | 70 | 146 | 90 | 215 | ||
| 58 | 20 | 71 | 154 | 94 | 219 | ||
| 59 | 32 | 72 | 158 | 104 | 227 | ||
| 60 | 36 | 73 | 166 | 106 | 231 | ||
| 61 | 53 | 75 | 170 | 109 | 235 | ||
| 62 | 57 | 76 | 174 | 113 | 239 | ||
| 63 | 65 | 77 | 178 | 122 | 243 | ||
| 64 | 73 | 78 | 182 | 126 | 247 | ||
| 65 | 85 | 79 | 190 | 144 | 251 | ||
| 66 | 93 | 83 | 194 | 154 | 255 | ||
| 67 | 97 | 85 | 202 | ||||
| 68 | 117 | 87 | 206 | ||||
Setelah mengganti nilai tiap piksel menjadi sesuai tabel di atas, citra hasilnya menjadi di bawah ini.
| 0 | 12 | 53 | 32 | 190 | 53 | 174 | 53 |
| 57 | 32 | 12 | 227 | 219 | 202 | 32 | 154 |
| 65 | 85 | 93 | 239 | 251 | 227 | 65 | 158 |
| 73 | 146 | 146 | 247 | 255 | 235 | 154 | 130 |
| 97 | 166 | 117 | 231 | 243 | 210 | 117 | 117 |
| 117 | 190 | 36 | 146 | 178 | 93 | 20 | 170 |
| 130 | 202 | 73 | 20 | 12 | 53 | 85 | 194 |
| 146 | 206 | 130 | 117 | 85 | 166 | 182 | 215 |
Perhatikan bahwa nilai terendah (52) menjadi 0 dan nilai tertinggi (154) menjadi 255.
| Templat:Plain image with caption | Templat:Plain image with caption |
| Templat:Plain image with caption | Templat:Plain image with caption |
Citra berukuran penuh
| Templat:Plain image with caption | Templat:Plain image with caption |
| Templat:Plain image with caption | Templat:Plain image with caption |