Teknik Histogram

23
TEKNIK HISTOGRAM Image dengan isi graylevel mudah dimanipulasi untuk memperbaiki interpretasi visualnya. Perbaikan dapat dilakukan dengan mudah baik pada algoritma penskalaan, histogram equalitation hingga algoritma spesifikasi. Dengan teknik histogram, isi graylevel dari citra digambarkan sebagai sekumpulan bilangan random untuk memodifikasi histogram dari citra. Ada dua teknik histogram yang biasa digunakan : 1. Histogram Equalitation Nilai graylevel dari tiap pixel disebar secara merata sedemikian rupa sehingga jumlah pixel pada suatu graylevel tertentu hampir sama seperti pada semua graylevel lain dalam citra. 2. Histogram Spesification Histogram dari citra yang sudah ada dimodifikasi untuk mendapatkan histogram yang baru. Dengan cara ini pixel dengan graylevel yang gelap dapat dilihat lebih terang, dan yang lebih terang dapat digelapkan. Operasi ini dapat dilakukan pada seluruh citra, atau hanya wilayah tertentu dari citra. PERHITUNGAN HISTOGRAM Image Processing - 24

Transcript of Teknik Histogram

TEKNIK HISTOGRAM

Image dengan isi graylevel mudah dimanipulasi untuk

memperbaiki interpretasi visualnya. Perbaikan dapat

dilakukan dengan mudah baik pada algoritma penskalaan,

histogram equalitation hingga algoritma spesifikasi.

Dengan teknik histogram, isi graylevel dari citra

digambarkan sebagai sekumpulan bilangan random untuk

memodifikasi histogram dari citra.

Ada dua teknik histogram yang biasa digunakan :

1. Histogram Equalitation

Nilai graylevel dari tiap pixel disebar secara merata

sedemikian rupa sehingga jumlah pixel pada suatu

graylevel tertentu hampir sama seperti pada semua

graylevel lain dalam citra.

2. Histogram Spesification

Histogram dari citra yang sudah ada dimodifikasi untuk

mendapatkan histogram yang baru. Dengan cara ini pixel

dengan graylevel yang gelap dapat dilihat lebih terang,

dan yang lebih terang dapat digelapkan.

Operasi ini dapat dilakukan pada seluruh citra, atau

hanya wilayah tertentu dari citra.

PERHITUNGAN HISTOGRAM

Image Processing - 24

Histogram sebenarnya adalah sekumpulan bilangan yang

menjelaskan persentase pixel dalam citra yang memiliki

nilai graylevel tertentu.

Sebagai contoh, akan digunakan citra yang berisi 256

graylevel dengan range 0 – 255. Untuk setiap nilai dapat

diwakili oleh bilangan integer 8 bit,Gi, dengan i adalah

index yang menyatakan graylevel ke-i.

Misalnya G100 sama dengan nilai 200.

Misalnya ada citra dengan nt total pixel dalam citra.

Anggap ni adalah jumlah pixel dalam citra yang memiliki

graylevel ke-i atau Gi.

Histogram dari citra dapat didefinisikan sebagai sekumpulan

M bilangan )pada kasus ini, karena ada 256 nilai graylevel

maka M = 256), yang dapat dibetuk sebagai berikut :

Hi = ni nt untuk i = s/d M-1dengan M adalah jumlah total nilai graylevel dalam citra.

Sebagai contoh citra 128 x 128 x 8 graylevel dengan

distribusi pixel (ni) :

Graylevel ni hi0 1024 0.06271 3544 0.21632 5023 0.30663 3201 0.19544 1867 0.11395 734 0.04486 604 0.03697 383 0.0234t 16384

Image Processing - 25

Dari histogram tersebut ada beberapa point penting :

hi memberikan nilai porbability dari pixel Pr (Gi), pada

citra dengan graylevel ke-i

Jumlah total komponen-komponen = 1 M-1 hi = 1i = 0

Probabilitas dari suatu pixel yang memiliki nilai

graylevel kurang atau sama dengan nilai graylevel ke-j

adalah jumlah hi dengan i antara 0 s/d j.M-1

Pr (Gi <= Gj) = hi , 0 i = 0

Informasi tentang citra dapat diambil dari histogram,

misalnya :

Suatu puncak dalam histogram yang menandai adanya

brightness pada suatu citra yang menonjol.

Kelebaran dari suatu puncak menandai contrast dari

citra.

Image Processing - 26

Contoh :a. 1 b. 1

0 255 0 255 citra gelap citra terang

c. 1 d. 1

0 255 0 255normal brightness normal brightness dan highcontrast

imagea,b,c : low contrast image

Algoritma Perhitungan Histogram

Disisipkan array yang ukurannya sama dengan jumlah

graylevel, dengan elemen diinisialisasi dengan .

Citra lalu discan pixel demi pixel dan setiap kali nilai

graylevelnya digunakan sebagai index array, lalu isinya

dinaikkan 1.

Lalu untuk menghitung hi, nilai tiap array dibagi dengan

jumlah total pixel.

Sebagai contoh, akan dibuat histogram dari citra 128 x

128 dengan 256 graylevel (0 s/d 255). Asumsi citra telah

tersimpan pada suatu array IMAGE (: array[0..127,0..127]

of integer)

Var total, x, y, i, G : integer;Ihist : array[0..255] of integer;

Image Processing - 27

BeginFor i:= to 255 do

Ihist[i] := ;Total := ;For y:= 0 to 127 do

For x:= to 127 doG:= Image[x,y];Ihist[G]:=Ihist[G] + 1;Total := total + 1;

End;End;For i:= to 255 do

Hist[i] := Ihist[i]/total;End;

End.{Hist adalah array hasil histogram yang terbentuk}

PENSKALAAN GRAYLEVEL

Suatu fungsi transformasi digunakan untuk memetakan suatu

graylevel dalam citra. Fungsi dapat bersifat linear atau non

linear. Misalnya f(x,y) mendefinisikan suatu graylevel dari

pixel pada lokasi x,y, pada citra dengan fungsi transformasi

P.

Transformasi citra didefinisikan sebagai :

g(x,y) = P[f(x,y)] …………………. (1)

Fungsi pemetaan bisa berbagai fungsi yang berbeda.

Misalnya

g(x,y) = f(x,y) + 5x ……………..(2)

511

pemetaan graylevel menambah suatu konstanta yang berbeda

pada citra, ketika lokasi pixel berubah terhadap arah

horixontal dalam citra. Misalnya x = 511, maka nilai

Image Processing - 28

konstanta 5 ditambahkan pada tiap pixel dalam kolom ke

511 dalam citra.

Pada banyak kasus, pemetaan graylevel dari suatu citra ke

citra lain tergantung pada nilai graylevel pixel pada citra

asli.

Persamaan (1) dapat ditulis sebagai :

g = P(f) …………………………. (3)

dengan f adalah nilai graylevel dari citra masukan dan g

adalah nilai keluaran graylevel pada citra keluaran. Untuk

menggunakan persamaan (3), citra masukan di-scan pixel demi

pixel dan setiap nilai graylevel dari pixel (f) diganti

dengan nilai graylevel yang baru (g).

Sebagai contoh akan digunakan suatu transformasi linear

sebagai berikut :

g = c.f + b …………………….. (4)

variabel b dan c memiliki 2 fungsi penting :

b : digunakan untuk menyesuaikan brightness dari citra

c : digunakan untuk menyesuaikan contrast dari citra

Contoh transformasi linear graylevel :

255 255 255 255

g 232 g

32 0 232 255 32 255 0 255

0 255f f fc = 1 c = 1 c = 2 c = 2

Image Processing - 29

b = 32 b = -32 b = 0 b = -32

Sumbu horizontal berisi nilai graylevel masukan, f.

Sunmbu vertikal berisi hasil transformasi graylevel, g.

Seperti telihat pada gambar di atas, jika nilai graylevel

hasil transformasi melebihi jangkauan nilai graylevel,

maka keluarannya akan diset minimum atau maksimumu

graylevel yang dimungkinkan.

Pada sistem citra 8 bit, nilai graylevel umumnya memiliki

jangkauan (range) antara 0 s/d 255.

Jika variabel C, dinaikkan, maka kemiringan kurva hasil

naik.

Jika variabel b dinaikkan, maka graylevel minimum juga

naik atau dengan kata lain :

Jika variabel b diubah, maka kurva akan bergerak

naik/turun.

Jika variabel c diubah, maka akan berakibat pada

perubahan lebar histogram citra.

Transformasi linear dapat diperluas untuk non linear.

Misalnya bila ingin meningkatkan contrast pada daerah citra

yang egelap dan sekaligus mengurangi contrast dari daerah

terang pada citra. Contoh :

g = 31.875.2log (f + 1) ………………..(5) 255

Image Processing - 30

g

0 255 f

Contoh lain:

Misalnya ingin diubah contrast dari daerah pada citra yang

berisi pixel dengan nilai graylevel mendekati 128 dinaikkan,

dan selain itu contrast diturunkan. 255

g

0 f 255

Umumnya transformasi non linear digunakan untuk meningkatkan

suatu range graylevel pada citra.

AUTOSCALE

Transformasi linear lain adalah melakukan pen-skala-an

otomatis (autoscale) terhadap semua graylevel pada citra,

terhadap minimum/maksimum graylevel yang digunakan pada

suatu sistem citra (misalnya monitor).

Dengan operasi ini, graylevel diubah secara dinamik,

tergantung pada sistem yang dugunakan. Efek yang dihasilkan

adalah ingin menaikkan nilai contrast dan brgihtness dari

citra. Operasi autoscale disebut juga histogram stretching.

Persamaan berikut adalah transformasi linear untuk operasi

autosclaling untuk sistem citra dengan 256 graylevel.

Image Processing - 31

255g = (f – fmin) ……………………..

(6)fmax - fmin

Persaman 6 digunakan setelah citra asli discan per pixel

untuk menemukan graylevel minimum dan maksimum. Lalu

persamaan 6 tersebut diterapkan pada citra asli per pixel,

untuk menghasilkan citra baru yang memiliki graylevel

minimum = dan maksimum = 255.

Image Processing - 32

Algoritma autoscale : {asumsi : .graylvel awal 0 s/d

255, .citra 512x512}Var gscle, graymax, graymin : real;

X,y : integer;Smin,smax : integer;

BeginSmin := ;smax := ;Graymax := 255;graymin:= ;For y:= to 511 do

For x:= to 511 doIf image[x,y]> smax then

Smax := image[x,y]EndifIf image[x,y]< smin then

Smin := image[x,y]Endif

EndforEnd;If smax-smin <> 0 then

Ascle := (graymax-graymin)/(smax-smin)Else ascle := 0EndifFor y=0 to 511 do

For x=0 to 511 doImage[x,y]:=ascle * image[x,y] – smin + graymin;

EndforEndFOR

End.

HISTOGRAM EQUALIZATION

Histogram equalization ini akan mendistribusikan nilai

graylevel dari pixel dalam citra, sedemikian rupa sehingga

pixel untuk setiap graylevel memiliki nilai yang realtif

Image Processing - 33

1 2 4 3 21 1 2 1 12 1 3 1 12 1 1 1 11 3 1 4 4

sama. Histogram ini disebut juga uniform histogram. Misalnya

ada 2 histogram, yang pertama hasil dari citra yang belum

diequalisasi, hfi dan yang lain adalah citra hasil

equalisasi hgi. Tujuannya adalah mencari transformasi

grayscale.

g = P(f) ……………………….(1)

Yang menghasilkan histogram uniform hgi.

Pada uniform histogram dengan m graylevel yang berbesa, aakn

menghasilkan probabilitas dari tiap nilai grayleve sebesar :

hgi = 1/m ……………………..(2)

[unutk citra dengan 256 graylevel akan memberikan hgi =

1/256]

Transformasi untuk mengubah dari hfi menjadi hgi adalah

transformasi yang menjumlah elemen-elemen histogram dari

citra asli,

gi = P(fi) = (m – 1) hfi …….(3)

m adalah jumlah graylevel dari citra asli dan i adalah

graylevel ke-i untuk citra hasil equalisasi. Misalnya

graylevel g0 adalah sama dengan (m – 1)h0 dan g1 = (m -1).(h0

+ h1) dengan persamaan :

hi = ni/nt

maka persamaan (3) dapat ditulis sebagai jumlah dari pixel

nfi pada suatu nilai graylevel nd dari citra asli :

gi = P(fi) = (m – 1) nfi …….(4)

Image Processing - 34

ntdengan nt adalah total jumlah pixel.

Untuk melakukan histogram equalisasi pada suatu

citra,langkah yang dilakukan :

hitung histogram dari citra asli.

Hitung graylevel yang baru, gi dengan persamaan (3)

atau (4).

Tiap pisel pada citra diganti dengan nilai graylevel

yang baru, misalnya graylevel fo diganti dengan :

Fo = (m – 1).nfo nt

Sebagai contoh, lihat tabel hal 25

g0 = 7.hfo = 7.00627 = 0.439

g1 = 7.(hfo + hf1) = 7.(00627 + 0.2163) = 1.953

g2 = 7 (hfo + hf1 + hf2) = 7.(00627 + 0.2163 + 0.3066) =

4.099

g3 = 7 (hfo + …+ hf3) = 7.(00627 + 0.2163 + 0.3066 +

0.1954) = 5.467

g4 = 6.264

g5 = 6.578

g6 = 6.6836

g7 = 7.000

Karena hanya dimungkinkan graylevel 0 – 7,maka dibulatkan ke

nilai terdekat:g0 = 0 g1 = 2 g2 = 4 g3 = 5 g4 = 6 g5 = 7 g6 = 7 g7 = 7

Image Processing - 35

Karena graylevel 5,6, dan 7 sama, maka citra hasil

equalisasi ini berkurang menjadi 6 graylevel yang diskrit.

Jadi histogram hasil equalisasinya :

Graylevel ni hi0 1024 0.06271 0000 0.00002 3544 0.21633 0000 0.00004 5023 0.30665 3201 0.19546 1867 0.11397 1721 0.1050

Contoh citra dengan 5 x 5 dan 8 graylevel (m = 8)0 1 3 2 42 2 1 6 21 3 7 5 10 7 5 1 03 1 1 2 0

Histogram :

Graylevel

ni hi Akumulasi Gi Normalisasi gi

0 4 0.16

0.16 1.12

1

1 7 0.28

0.44 3.08

3

2 5 0.20

0.64 4.48

4

3 3 0.12

0.76 5.32

5

4 1 0.04

0.80 5.6 6

5 2 0.08

0.88 6.16

6

Image Processing - 36

gi = (m – 1).hfi = 7 . hfi

6 1 0.04

0.92 6.44

6

7 2 0.08

1.00 7 7

nt = 25

Image Processing - 37

Citra hasil equalisasi histogram :

1 3 5 5 65 5 3 6 53 5 7 6 31 7 6 3 15 3 3 5 1

Di awal disebutkan bahwa tujuan penyamaan histogram ini

adalah mendistribusikan secara merata hasil histogram pada

citra, histogram ternyata benar-benar terdistribusi uniform.

Ada 2 alasan mengapa hal ini terjadi :

1 Graylvel ada dalam jumlah yang terbatas, dan nilainya

adalah hasil pembulatan ke nilai graylevel terdekat.

2 Jumlah pixel yang digunakan amat terbatas.

Untuk memberi hasil citra yang uniform distribusinya, maka

citra harus dalam bentuk kontinyu, di mana pada keadaan

sebenarnya hal ini tidak mungkin.

Algoritma : [pada citra 512 x 512 dengan 256 graylevel]Var x,y,i,j : integer;

HistEq : array[0..255] of integer;Hist : array[0..255] of real;Sum : real;

BeginHistogram(image,Hist) {panggil/bentuk histogram dari image}for i:= to 255 do

sum := 0.0for j:= to i do

sum:= sum + hist[j]endforhistEq[i]:=round(255 * sum);

end;for y:=0 to 511 do

Image Processing - 38

Histogramnya :

Graylevel

ni hi

0 0 01 4 0.082 0 03 7 0.284 0 05 8 0.326 4 0.16

for x:=0 to 511 doimage[x,y]:= HistEq[Image[x,y]];

end;end;

end.

Image Processing - 39

HISTOGRAM SPESIFICATION

Kelemahan pada histogram equalization adalah histogram

hasilnya tidak bisa ditentukan (atau dibentuk) dan histogram

ini adalah hanya pendekatan terhadap histogram yang uniform.

Dengan histogram spesification, maka dapat dilakukan :

Penggelapan citra/sebaliknya

Meningkatkan/menurunkan brightness/contrast

Caranya : buat histogram yang diinginkan, lalu equalisasi

histogram ini.

Misalnya hdi adalah elemen ke-i dari histogran yang

diinginkan. Lalu transformasi graylevel yang dibutuhkan

untuk meng-ekualisasi histogram ini :

Si = P(di) = (m – 1). hdi ………………….. (1)

Langkah berikutnya dengan meng-equalisasi nilai graylevel

dari citra aslinya (seperti histogram equalization)

gi = P(fi) = (m – 1). hfi …………………… (2)

Langkah terakhir : dengan mencari inverse dari transformasi

graylevel dari persamaan (1)

Di = P-1 (Si) ……………………….. (3)

Image Processing - 40

lalu hasil transformasi invers ini diaplikasikan pada nilai

graylevel dari pixel pada citra yang akan diequalisasi

(dengan persamaan (2)).

Proses transformasi inverse pada pers. (3) dapat ditemukan

pada graylevel tertenti dengan cara men-scan melalui elemen-

elemen gi dan mencari index i yang memberi nilai graylevel

terdekat.

Sebagai contoh, kembali akan digunakan citra 128 x 128

dengan 8 graylevel,[lihat tabel hal 25]

Image Processing - 41

Misalnya histogram yang diinginkan adalah sebagai berikut :

Grayleveldi

H di Kumulasi Si

0 0.0 0.00 0.00 =0

1 0.0 0.00 0.00 =0

2 0.1 0.10 0.70 =1

3 0.25 0.35 2.45 =2

4 0.30 0.65 4.55 =5

5 0.25 0.90 6.30 =6

6 0.10 1.00 7.00 =7

7 0.0 1.00 7.00 =7

Transformasi inverse, nilainya diberikan untuk Si adalah :P-1(0) = 1 P-1(1) = 2 P-1(2) = 3 P-1(3) = 3 P-

1(4) = 4 P-1(5) = 4 P-1(6) = 5 P-1(7) = 6

Dalam memilih nilai transformasi, ada ambiguity. Yaitu dalam

memilih P-1(0), dapat dipilih baik 0 atau 1. Nilai 1,

dipilih karena memberikan kecocokan yang paling dekat. P-

1(7) dapat dipilih 6 atau 7. 6 dipilih dengan anggapan yang

paling mirip dengan histogram.

Secara umum transformasi inverse ini tidak selalu memberi

nilai tunggal, nilai yang dipilih harus nilai yang terdekat

dengan histogram yang diinginkan.

Image Processing - 42

Dari histogram equalization, nilai gray yang didapat :

g0 = 0 g1 = 2 g2 = 4 g3 = 5 g4 = 6 g5 = 7

langkah terakhir adalah pemetaan nilai graylevel hasil

equalisasi dari citra asli dengan nilai hasil transformasi.

g0 = 0 P-1(0) = 1 g3 = 5P-1(5) = 4

g1 = 2 P-1(2) = 3 g4 = 6 P-1(6) = 5

g2 = 4 P-1(4) = 4 g5 = 7 P-1(7) = 6

Image Processing - 43

Tabel akhir :

Graylevel

ni hi

0 0.000 0.0000

1 1028 0.0627

2 0.000 0.0000

3 3544 0.2163

4 8244 0.5020

5 1867 0.1139

6 1721 0.1050

7 0.000 0.0000

Terlihat bahwa puncak histogram telah berpindah dari

graylevel 2 menjadi 4. (citra lebih terang).

Algoritma :Var x,y,i,minval,minj,j : integer; Histspec : array[0..255] of integer; Invhist : array[0..255] of integer; Sum : real;Begin

Hist_Equalization(Image) {panggil equalisasi histogram}For i:= 0 to 255 do

Sum:= 0.0;For j:= 0 to i do

Sum := sum + spec[j]EndHistspec[i] = round(255 * sum)

End{histogram yang dispesifikasikan disimpan di SPEC}for i:= 0 to 255 do

minval := abs(i – histspec[0]; minj := 0;for j:= 0 to 255 do

if abs(i – histspec[j]) < minval thenminval := abs(i – histspec[j])

Image Processing - 44

minj := jendif

invhist[i]:= minjendfor

endforfor y:= 0 to 511 do

for x:= 0 to 511 doimage[x,y] = invhist[image(x,y)]end

end

THRESHOLDING (NILAI AMBANG)

Pada banyak aplikasi citra, diinginkan untuk membagi nilai

graylevelnya menjadi subdaerah-subdaerah yang khusus

misalnya ingin diset untuk obyek menjadi graylevel putih dan

pada saat yang sama merubah background menjadi hitam.

Contoh : background

foreground

Untuk membagi citra menjadi 2 nilai graylevel, dengan 0

untuk background dan 255 untuk obyek, maka digunakan

transformasi berikut :255 jika f(x,y) > T

g(x,y) = 0 jika f(x,y) < T

nilai ambang (threshold) diambil, sehingga pixel background

diset 0 dan obyek diset 255. (Binary Image)

Image Processing - 45

histogram hasil

Kita dapat melakukan multilevel thresholding. Contoh :

255 jika f(x,y) >T3

191 jika f(x,y) > T2 dan f(x,y) <= T3

127 jika T1 < f(x,y) <= T2

0 jika f(x,y) < T1

Kesulitannya adalah mencari nilai threshold terbaik.

Image Processing - 46

g(x,y)=