CS3214
CS3214
Pe
Peng
ngol
olah
ahan
an Ci
Citr
tra -
a - UA
UAS
S
CHAPTER 5.
CHAPTER 5.
Equ
Equali
alisas
sasii his
histog
togram
ram
Spe
Spesif
sifika
ikasi
si his
histog
togram
ram
Fakultas
Fakultas
Fak
Fakul
ultas
tas In
Informatika
Info
Informatika
form
rmat
atik
ika
a
IT Telkom
IT Telkom
IT Telkom
IT Telkom
Dua Pendekatan Image Enhancement
Dua Pendekatan Image Enhancement
Metode-metode berbasis domain
Metode-metode berbasis domain
frekwensi
frekwensi
Manipulasi terhadap representasi
Manipulasi terhadap representasi
Contoh: operasi berbasis
Contoh: operasi berbasis transformasi
transformasi
Fourier terhadap citra
Fourier terhadap citra
Metode-metode berbasis domain
Metode-metode berbasis domain
spasial
spasial
Manipulasi langsung terhadap pixel-pixel
Manipulasi langsung terhadap pixel-pixel
pada citra
pada citra
Histogram citra
Histogram citra
Ber
Berlak
laku un
u untuk n
tuk nila
ilai gra
i gray lev
y level;
el; RGB
RGB
per
per
plane warna
plane warna
Plotting dari persamaan
Plotting dari
persamaan::
L: jumlah level
L: jumlah level
p
p
rr
(r
(r
k
k
): probabilitas kemunculan level ke-k
): probabilitas kemunculan level ke-k
n
n
k
k
: jumlah kemunculan level k pada citra
: jumlah kemunculan level k pada citra
n: total jumlah pixel dalam citra
n: total jumlah pixel dalam citra
1
1
,...,
,...,
1
1
,,
0
0
;;
1
1
0
0
;;
))
((
=
=
≤
≤
r
r
≤
≤
k
k
=
=
L
L
−
−
n
n
n
n
r
r
p
p
r
r
k
k
k
k
k
k
Equalisasi histogram
Tujuan: melakukan transformasi terhadap
histogram citra asli sedemikian sehingga
didapat histogram citra hasil dengan
linearisasi
Dasar konsep: transformasi probability
density function menjadi uniform density
bentuk kontinyu
Agar dapat dimanfaatkan dalam pengolahan
citra digital, diubah ke bentuk diskrit
Equalisasi pada domain kontinyu
)
(
)
(
:
)
(
1
=
−=
ds
dr
r
p
s
p
Histogram
r
s
T
r
r
s
[ ]
1
1
0
1
)
(
1
)
(
)
(
:
1
0
;
)
(
)
(
:
)
(
)
(
0
1 1≤
≤
=
=
=
≤
≤
=
=
− −=
=
s
r
p
r
p
s
p
Uniform
r
dw
w
p
s
T
s
si
Transforma
s
T
r
s
T
r
r
r
s
r
Ilustrasi equalisasi pada domain
kontinyu
Bentuk diskrit fungsi transformasi
1
...
1
0
1
0
)
(
)
(
−
=
≤
≤
=
=
=
=
=
∑
k
∑
k
k
j
r
j
k
k
L
k
r
r
p
n
n
r
T
s
1
0
)
(
1
≤
≤
=
−
k
k
k
T
s
s
r
Contoh
Citra 64x64 pixel, 8 tingkat
keabuan dgn distribusi:
r
k
n
k
p
r
(r
k
)=n
k
/n
r
0=0
790
0,19
Histogram
citra:
0,25 0,3 )r
1=1/7 1023
0,25
r
2=2/7
850
0,21
r
3=3/7
656
0,16
r
4=4/7
329
0,08
r
5=5/7
245
0,06
r
6=6/7
122
0,03
r
7=1
81
0,02
0 0,05 0,1 0,15 0,2 0 1/7 2/7 3/7 4/7 5/7 6/7 1 gray level (r k) p r o b a b i l i t y ( p r ( r kFungsi transformasi
44
.
0
)
(
)
(
)
(
)
(
19
.
0
)
(
)
(
)
(
2 1 0 1 0 1 1 0 0 0 0 0=
+
=
=
=
=
=
=
=
∑
∑
=
=
r r j j r r j j rr
p
r
p
r
p
r
T
s
r
p
r
p
r
T
s
00
.
1
)
(
)
(
98
.
0
)
(
)
(
;
95
.
0
)
(
)
(
89
.
0
)
(
)
(
;
81
.
0
)
(
)
(
.
7 0 7 7 6 0 6 6 5 0 5 5 4 0 4 4 3 0 3 3 2 1 0 0 2 2=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
+
+
=
=
=
∑
∑
∑
∑
∑
=
=
=
=
=
=
j j r j j r j j r j j r j j r r r r j j rr
p
r
T
s
r
p
r
T
s
r
p
r
T
s
r
p
r
T
s
r
p
r
T
s
r
r
p
r
r
p
r
s
Fungsi transformasi: grafik
0,8
1
1,2
l u e ( s k )0
0,2
0,4
0,6
0
1/7
2/7
3/7
4/7
5/7
6/7
1
gray level (r
k)
t r a n s f o r m e d v aPembulatan
8 tingkat keabuan valid
nilai s
k
dibulatkan ke nilai valid terdekat
s
0
= 0.19
≅
1/7
s
1
= 0.44
≅
3/7
s
2
= 0.65
≅
5/7
s
3
= 0.81
≅
6/7
s
4
= .
≅
s
5
= 0.95
≅
1
s
6
= 0.98
≅
1
s
7
= 1.00
≅
1
Pemetaan
Hanya ada 5 level keabuan pada uniform
histogram
r
0
(790 pixel)
s
0
= 1/7
r
1
(1023 pixel)
s
1
= 3/7
r
2
(850 pixel)
s
2
= 5/7
r
3
(656 pixel), r
4
(329 pixel)
s
3
= 6/7
r
5
(245 pixel),r
6
(122 pixel),r
7
(81 pixel)
s
4
=
7/7
Histogram dengan distribusi
seragam
0,15
0,2
0,25
0,3
b
i
l
i
t
y
(
p
s(
s
k)
)
Karena histogram merupakan aproksimasi terhadap
probability density function, sangat jarang didapat
histogram hasil yang betul-betul rata
0
0,05
0,1
0
1/7
2/7
3/7
4/7
5/7
6/7
1
gray level (s
k)
p
r
o
b
Tabel Histogram secara Lengkap
Citra 64x64 pixel, 8 tingkat keabuan dgn
distribusi:
r
k
n
k
p
r
(r
k
)=n
k
/n
S
k
S
k
x 7
Normal(S
k
)
r
0=0
790
0,19
0,19
1,33
≅
1
s
0=1/7
r
1=1/7
102
0,25
0,44
3,08
≅
3
s
1=3/7
r
2=2/7
850
0,21
0,65
4,55
≅
5
s
2=5/7
r
3=3/7
656
0,16
0,81
5,67
≅
6
s
3=6/7
r
4=4/7
329
0,08
0,89
6,23
≅
6
s
4=6/7
r
5=5/7
245
0,06
0,95
6,65
≅
7
s
5=7/7
r
6=6/7
122
0,03
0,98
6,86
≅
7
s
6=7/7
r
7=1
81
0,02
1,00
7
s
7=1
Operasi equalisasi histogram
1. Buat histogram dari citra asli
2. Transformasikan histogram citra asli
menjadi histogram dengan distribusi
seragam
3. Ubah nilai tiap pixel sesuai dengan
nilai hasil pemetaan (histogram asli
Algoritma
:
citra 512 x 512 pixel 256 graylevel
Var x,y,i,j : integer;
HistEq : array[0..255] of integer; Hist : array[0..255] of real;
Sum : real; Begin
Histogram(image,Hist) {bentuk histogram dari citra asli}
for i:= ∅∅∅∅ to 255 do {transformasi ke uniform histogram}
sum := 0.0 =
sum:= sum + hist[j] endfor
histEq[i]:=round(255 * sum); end;
for y:=0 to 511 do {ubah nilai tiap pixel pada citra}
for x:=0 to 511 do
image[x,y]:= HistEq[Image[x,y]]; end;
end; end;
Spesifikasi histogram
Kelemahan equalisasi histogram:
histogram hasil tidak bisa dibentuk
sesuai kebutuhan
a ang a a
u u
an un u e
menonjolkan rentang gray level
tertentu pada citra
spesifikasi
Bentuk diskrit spesifikasi
histogram: by example
Citra 64x64 pixel, 8
tingkat keabuan dgn
distribusi:
r
k
n
k
p
r
(r
k
)=n
k
/n
Histogram
citra:
0,25 0,3 )r
0=
,
r
1=1/7 1023
0,25
r
2=2/7
850
0,21
r
3=3/7
656
0,16
r
4=4/7
329
0,08
r
5=5/7
245
0,06
r
6=6/7
122
0,03
r
7=1
81
0,02
0 0,05 0,1 0,15 0,2 0 1/7 2/7 3/7 4/7 5/7 6/7 1 gray level (r k) p r o b a b i l i t y ( p r ( r kBentuk histogram yang diinginkan
z
k
p
z
(z
k
)
z
0=0
0,00
0,25
0,30
0,35
z ( z k ) ) 1,
z
2=2/7
0,00
z
3=3/7
0,15
z
4=4/7
0,20
z
5=5/7
0,30
z
6=6/7
0,20
z
7=1
0,15
0,00
0,05
0,10
0,15
0,20
0
1/7
2/7
3/7
4/7
5/7
6/7
1
gray level (z
k)
p r o b a b i l i t y (Langkah 1: equalisasi histogram
Didapat hasil:
r
j
s
k
n
k
p
s
(s
k
)
0,3r
0
s
0=1/7
790
0,19
r
1
s
1=3/7
102
3
0,25
r
2
s
2=5/7
850
0,21
r
3,r
4
s
3=6/7
985
0,24
r
5,r
6,r
7
s
4=7/7
448
0,11
0 0,05 0,1 0,15 0,2 0,25 0 1/7 2/7 3/7 4/7 5/7 6/7 1gray level (sk)
p r o b a b i l i t y ( p s ( s k ) )Langkah 2: cari fungsi transformasi
∑
=
=
=
k
j
j
z
k
k
G
z
p
z
v
0
)
(
)
(
v
0
= G(z
0
) = 0,00
v
4
= G(z
4
) = 0,35
v
1
= G(z
1
) = 0,00
v
2
= G(z
2
) = 0,00
v
3
= G(z
3
) = 0,15
v
5
= G(z
5
) = 0,65
v
6
= G(z
6
) = 0,85
v
7
= G(z
7
) = 1,00
r
k
n
k
p
r
(r
k
)=n
k
/n
S
k
S
k
x 7
Normal(S
k
)
r
0=0
790
0,19
0,19
1,33
≅
1
s
0=1/7
r
1=1/7
102
3
0,25
0,44
3,08
≅
3
s
1=3/7
r
2=2/7
850
0,21
0,65
4,55
≅
5
s
2=5/7
r
3=3/7
656
0,16
0,81
5,67
≅
6
s
3=6/7
r
4=4/7
329
0,08
0,89
6,23
≅
6
s
4=6/7
r
5=5/7
245
0,06
0,95
6,65
≅
7
s
5=7/7
r
6=6/7
122
0,03
0,98
6,86
≅
7
s
6=7/7
r
7=1
81
0,02
1,00
7
s
7=1
Langkah 2: cari fungsi transformasi
Dengan kata lain, lakukan langkah-langkah equalisasi
thd histogram yang diinginkan :
z
k
p
z
(z
k
)
V
k
V
k
x 7
Normal(V
k
)
z
0=0
0,00
0,00
0,00
v
0=0
z
1=1/7
0,00
0,00
0,00
v
1=0
z
2=
,
,
,
v
2=
z
3=3/7
0,15
0,15
1,05
≅
1
v
3=1/7
z
4=4/7
0,20
0,35
2,45
≅
2
v
4=2/7
z
5=5/7
0,30
0,65
4,45
≅
4
v
5=4/7
z
6=6/7
0,20
0,85
5.95
≅
6
v
6=6/7
z
7=1
0,15
1,00
7
v
7=1
Grafik fungsi transformasi
0 8
1
1,2
( v k )0
0,2
0,4
0,6
0
1/7
2/7
3/7
4/7
5/7
6/7
1
gray level (z
k)
t r a n s f o r m a t i oLangkah 3: terapkan inverse G
pada level histogram equalisasi
Pemetaan nilai s
k
ke G(z
k
) terdekat
s
0
= 1/7 ≈ 0.14
G(z
3
) = 0.15; z
3
= 3/7
1
=
.
4
= .
4
=
s
2
= 5/7 ≈ 0.71
G(z
5
) = 0.65; z
5
= 5/7
s
3
= 6/7 ≈ 0.86
G(z
6
) = 0.85; z
6
= 6/7
Langkah 4: pemetaan dari r
k
ke z
k
Dengan memperhatikan pemetaan
histogram asli ke histogram
equalisasi
r
0
= 0
z
3
= 3/7
r
1
= 1/7
z
4
= 4/7
r
2
= 2/7
z
5
= 5/7
r
3
= 3/7
z
6
= 6/7
r
4
= 4/7
z
6
= 6/7
r
5
= 5/7
z
7
= 1
r
6
= 6/7
z
7
= 1
r
7
= 1
z
7
= 1
Histogram hasil
z
k
n
k
p
z
(z
k
)=n
k
/n
r
0=0
0
0
r
1=1/7
0
0
r
2=2/7
0
0
0,15 0,20 0,25 0,30 a b i l i t y ( p z ( z k ) )r
3=3/7
790
0,19
r
4=4/7 1023
0,25
r
5=5/7
850
0,21
r
6=6/7
985
0,24
r
7=1
448
0,11
0,00 0,05 , 0 1/7 2/7 3/7 4/7 5/7 6/7 1gray level (z
k)
p r oHistogram hasil mungkin tidak sama
persis dengan spesifikasinya
transformasi hanya akan memberikan
hasil yang persis pada kasus kontinyu
Operasi spesifikasi histogram
1. Buat histogram dari citra asli
2. Transformasikan histogram citra asli
menjadi histogram dengan distribusi
sera am
3. Tentukan fungsi trasformasi sesuai
spesifikasi histogram yang diinginkan
4. Ubah nilai tiap pixel sesuai dengan nilai
hasil pemetaan (histogram asli
Algoritma
:
citra 512 x 512 pixel 256 graylevel
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) {equalisasi histogram}
For i:= 0 to 255 do {histogram yang dispesifikasikan telah disimpan di spec}
Sum:= 0.0;
For j:= 0 to i do Sum := sum + spec[j] Histspec[i] = round(255 * sum)
for i:= 0 to 255 do {pemetaan histogram}
minval := abs(i – histspec[0]; minj := 0; for j:= 0 to 255 do
if abs(i – histspec[j]) < minval then minval := abs(i – histspec[j]) minj := j
endif
invhist[i]:= minj endfor
endfor
for y:= 0 to 511 do {ubah nilai tiap pixel pada citra}