histogram - citra digital
TRANSCRIPT
Citra DigitalHISTOGRAM - Matlab
HISTOGRAM
• Adalah menyatakan banyaknya kelompok warna pada setiap warna
• Dinyatakan dalam bentuk grafik baris
• Ada 3 kemungkinan pengelompokan : • Warna gelap grafik mengumpul disebelah kiri
• Warna terang grafik mengmumpul di sebelah kanan
• Warna merata kalau grafik menyebar merata mulai dari kiri ke kanan
Contoh
Perintah melihat histogram
• Menggunakan fungsi imhist
a = imread(‘kopi itam.jpg’);
Imshow(a), figure, imhist(a), axis tight
• Perintah ini hanya diberikan bila gambar bertype gray (double) bukan color
Hasilnya :
Hasil Gelap
Hasil Terang
Solusi
• Apabila hasil gambarnya adalah cenderung gelap atau terang, makahistogram akan mengumpul di kiri atau di kanan.
• Agar bagus hasilnya, maka perlu dilakukan proses, sehingga histogram merata dari kiri ke kanan.
• Ada 2 cara, yaitu :1. Pelebaran Histogram
2. Ekualisasi histogram
Pelebaran Histogram
• Misalkan didapatkan histogram dari citra sebagai berikut :
• Level keabuan dapat ditarik dengan menerapkan fungsi piecewise linier.
i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ni 15 0 0 0 0 70 110 45 70 35 0 0 0 0 0 15
Fungsi pelebaran
• Bahwa terlihat, yang memerlukan pelebaran adalah warna no 5, 6,7,8,dan 9
• Pelebaran akan dilakukan mulai dari 2 s/d 14, maka akan diperolehpersamaan untuk mendapatkan nilai baru sebagai berikut :
𝑗 =14−2
9−5𝑖 − 5 + 2
• 14-2 adalah batas pelebaran dan 9-5 adalah level warna ygdilebarkan, (i-5), 5 adalah jumlah warna yang akan dilebarkan.
i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ni 15 0 0 0 0 70 110 45 70 35 0 0 0 0 0 15
Hasil pelebaran• Dari rumus sebelumnya diperoleh nilai sebaran
warna yang baru.
• Perintah pelebaran :
Imadjust(im,[a,b],[c,d])
i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ni 15 0 0 0 0 70 110 45 70 35 0 0 0 0 0 15
i 5 6 7 8 9
j 2 5 8 11 14
Perintahnya :
• Imadjust(im,[a,b],[c,d])
• Dapat digambarkan model grafiknya sebagai berikut :
a b
c
dNilai [a,b],[c,d] adalahantara 0 s/d 1
Outputnya :
• >> a=imread('kopi itam - copy.jpg');
• >> b=imadjust(a, [],[1,0]);
• >> imshow(b),figure, imhist(b), axis tight
Outputnya :
• >> b=imadjust(c, [],[0,1]);
• >> imshow(b),figure, imhist(b), axis tight
Outputnya :
• b=imadjust(c, [0,1],[]);
• >> imshow(b),figure, imhist(b), axis tight
Ekualisasi Histogram
• Pada adjustment :• input untuk menentukan histogramnya dilakukan oleh user.
Imadjust(im,[a,b],[c,d])
• Tidak diperoleh hasil yang maksimal
• Diperlukan metode lain, yaitu Ekualisasi (equalization).• Tidak diperlukan input yang dimasukkan oleh user imhisteq(namagbr)
• Akan melakukan proses yang terbaik menurut system
• Idenya : mengubah histogram citra menjadi seragam
Contoh Ekualisasi dengan Photoshop
Asli lo !!!
Hasil ekualisasi
Adjusment
Ekualisasi
Perhitungan
• Menggunakan rumus : 𝑒𝑞 =𝑛0+𝑛1+𝑛2+⋯+𝑛𝑖
𝑛(𝐿 − 1)
• Dimana : • 𝑛0 + 𝑛1 + 𝑛2 +⋯+ 𝑛𝑖 adalah frekuensi kemunculan warnanya
• n adalah banyaknya piksel
• L adalah level keabuan tertinggi (mengapa L-1 ? Karena dimulai dari 0 s/d L
• Hasilnya dibulatkan ke integer terdekat
Ekualisasi Histogram
• Misalkan didapatkan histogram dari citra sebagai berikut :
i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ni 15 0 0 0 0 0 0 0 0 70 110 45 80 40 0 0
Hasil Perhitungan
i ni ∑nii (1/24)∑ni eq
0 15 15 0.625 1
1 0 15 0.625 1
2 0 15 0.625 1
3 0 15 0.625 1
4 0 15 0.625 1
5 0 15 0.625 1
6 0 15 0.625 1
7 0 15 0.625 1
8 0 15 0.625 1
9 70 85 3.541667 4
10 110 195 8.125 8
11 45 240 10 10
12 80 320 13.33333 13
13 40 360 15 15
14 0 360 15 15
15 0 360 15 15
0
20
40
60
80
100
120
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
ni
ni
0
2
4
6
8
10
12
14
16
1 1 1 1 1 1 1 1 1 4 8 10 13 15 15 15
eq
eq
1/24 berasal dari15/360,Dimana 15 adalah ∑ni
paling kecil dan 360 paling besar
Gambar asal
Perintah yg diperlukan
• >> a=imread('kuburan gelap gray.jpg');
• >> b=histeq(a);
• >> imshow(b), figure,imhist(b),axis tight
Hasil Ekualisasi dg Matlab
Menggelapkan dan menerangkan citra
• Bisa juga dihasilkan citra gelap dari citra hasil ekualisasi
• Caranya adalah dengan membagi nilai pixel dengan pembagi tertentu
• Misalnya pixel citra A dibagi dengan 4:
• Kalau dibagi dengan bilangan pecahan ?
200 100 80 50 25 20
250 200 100 63 50 25
10 10 30 3 3 8
50 60 70 13 15 18
0 0 255 0 0 64
>> c=imdivide(b,4);>> imshow(c), figure,imhist(c),axis tight
>> d=imdivide(c,0.25);>> imshow(d), figure,imhist(d),axis tight