BAB 4 IMPLEMENTASI DAN PENGUJIAN
4.1 Implementasi Sistem
4.1.1 Implementasi Metode Single Scale Retinex
Tahap awal yang akan dilakukan untuk perbaikan citra menggunakan metode Multiscale Retinex MSR, harus terlebih dahulu melewati tahap Singlescale Retinex
SSR, dengan melewati tiga tahap SSR. Seperti telah dibahas pada bab sebelumnya bahwa SSR adalah Retinex versi dinamis untuk meniru sistem kerja neuron pada
sistem persepsi warna manusia. Berbeda dengan Retinex statis, Retinex versi dinamis tidak menggunakan jalur, tetapi menggunakan fungsi sekitar surround function untuk
meradiasikan intensitas ke piksel sekitarnya, dengan rumus: SSRnx,y =log I
n
x,y – log G
n
x,y ..................................................... 4.1 Berikut contoh pengujian perhitungan manual :
Langkah pertama yang dilakukan adalah mencari nilai Gaussian, yaitu:
��, � =
1 2��
2
�
−
�2+�2 2�2
........................................................................ 4.2
Dimana : σ = sebuah sigma
� = 22
7 e = 2,71828182846
• Misalnya σ = 5,5
Universitas Sumatera Utara
1 2�5,5
2
�
−
−12+12 25,52
1 2�5,5
2
�
−
02+12 25,52
1 2�5,5
2
�
−
12+12 25,52
1 2�5,5
2
�
−
−12+02 25,52
1 2�5,5
2
�
−
02+02 25,52
1 2�5,5
2
�
−
12+02 25,52
1 2�5,5
2
�
−
−12+ −12 25,52
1 2�5,5
2
�
−
02+−12 25,52
1 2�5,5
2
�
−
12+−12 25,52
0.0050902359 0.0051750712 0.0050902359 0.0051750712 0.0052613204 0.0051750712
0.0050902359 0.0051750712 0.0050902359
Total : 0.046322549 Total dari seluruh elemen matriks yang dihasilkan harus sama dengan 1, jika tidak
memenuhi maka percobaan akan diulang kembali dengan rumus baru yaitu :
��� � = � �
1 �����
........................................................................... 4.3
Contoh : New
�
1,1
= 0.0050902359
�
1 0.046322549
= 0.10988678
New �
1,2
= 0.0051750712
�
1 0.046322549
= 0.11171819
Perhitungan dilakukan pada setiap elemen matriks, sehingga didapatkan hasil sebagai berikut:
0.10988678 0.11171819
0.10988678 0.11171819
0.11358011 0.11171819
0.10988678 0.11171819
0.10988678
Hasil konvolusi yang didapatkan dari perkalian antara pixel citra awal dan kernel gaussian dapat dilihat pada Gambar 4.1, 4.2, dan 4.3.
8 8
1 3
2 4
3 5
2 1
1 1
5 4
3
Fx,y =
Gx,y
Universitas Sumatera Utara
6 7
6 5
8 2
4 6
8 7
Gambar 4.1 Perkalian Piksel Citra awal dan Kernel Gaussian
2.5789195
Gambar 4.2 Lanjutan Perkalian Piksel Citra awal dan Kernel Gaussian
2.5789195 3.23824018
Gambar 4.3 Lanjutan Perkalian Piksel Citra awal dan Kernel Gaussian
Hasil konvolusi, didapatkan dengan perhitungan sebagai berikut: 0 x 0.10988678 + 0 x 0.11171819 + 0 x 0.10988678 + 0 x 0.11171819 + 8 x
0.11358011 + 8 x 0.11171819 + 0 x 0.10988678 + 4 x 0.11171819 + 3 x 0.10988678 = 2.5789195
0.10988678 0.11171819
0.10988678 0.11171819
0.11358011 0.11171819
0.10988678 0.11171819
0.10988678
8 8
1 3
2
4 3
5 2
1 1
1 5
4 3
6 7
6 5
8 2
4 6
8 7
8 8
1 3
2
4 3
5 2
1 1
1 5
4 3
6 7
6 5
8 2
4 6
8 7
Universitas Sumatera Utara
0 x 0.10988678 + 0 x 0.11171819 + 0 x 0.10988678 + 8 x 0.11171819 + 8 x 0.11358011 + 1 x 0.11171819 + 4 x 0.10988678 + 3 x 0.11171819 + 5 x
0.10988678 = 3.23824018 Seluruh hasil perhitungan konvolusi dapat dilihat pada Gambar 4.4.
2.5789195 3.23824018
2.45050505 1.55865196
0.89380654 2.44876517
3.99996945 3.55499807
2.88825127 1.6648149
2.441348 4.20869353
4.22346685 4.32782889
2.56228426 2.3491983
4.23268492 5.11907429
5.78019587 3.90305509
2.11354958 3.44873465
4.01105512 4.45798322
3.13199707
Gambar 4.4. Hasil perhitungan Konvolusi
Hasil SSR
1
SSRnx,y = log I
n
x,y – log G
n
x,y Dimana, log I
n
x,y merupakan piksel citra awal. Contoh :
8 – 2.5789195 = 5.4210805 8 – 3.23824018 = 4.76175982
Seluruh perhitungan nilai SSR
1
dapat dilihat pada Gambar 4.5.
5.4210805 4.76175982
-1.45050505 1.44134804
1.10619346 1.5512348
-0.99996945 1.44500193
-0.88825127 -0.6648149
-1.441348 -3.20869353
0.77653315 -0.31782889
0.43771574 3.6508017
2.76731508 0.88092571
-0.78019587 4.09694491
-0.1135496 0.55126535
1.98894488 3.54201678
3.86800293
Gambar 4.5 Perhitungan Nilai SSR
1
• Misal σ = 6.5
Universitas Sumatera Utara
1 2
�6,5
2
�
− −1
2
+1
2
26,5
2
1 2
�6,5
2
�
− 0
2
+1
2
26,5
2
1 2
�6,5
2
�
− 1
2
+1
2
26,5
2
1 2
�6,5
2
�
− −1
2
+0
2
26,5
2
1 2
�6,5
2
�
− 0
2
+0
2
26,5
2
1 2
�6,5
2
�
− 1
2
+0
2
26,5
2
1 2
�6,5
2
�
− −1
2
+ −1
2
26,5
2
1 2
�6,5
2
�
− 0
2
+−1
2
26,5
2
1 2
�6,5
2
�
− 1
2
+−1
2
26,5
2
0.00368074 0.00372456
0.00368074 0.00372456
0.0037689 0.00372456
0.00368074 0.00372456
0.00368074
Total seluruh elemen matriks = 0.0333901, karena tidak sama dengan 1 maka dihitung kembali dengan rumus:
��� � = � � 1
�����
New a = 0.11023447
0.11154683 0.11023447
0.11154683 0.11287477
0.11154683 0.11023447
0.11154683 0.11023447
Hasil konvolusi yang didapatkan dari perkalian antara piksel citra awal dan kernel gaussian dapat dilihat pada Gambar 4.6
2.57226353 3.23367035 2.44879629 1.55776528 0.89109344 2.78217127 3.99998429 3.55514049 1.99996878 1.66534387
2.4422346 4.21254792 4.22310912 4.32939093 2.56037439
2.34388927 4.22970208 5.1168117 5.77951525 3.89901425
2.11285913 3.44751516 4.0079052 4.45412368 3.12604502
Gambar 4.6 Hasil Perhitungan Konvolusi
Hasil SSR
2
SSRnx,y =log I
n
x,y – log G
n
x,y Perhitungan nilai SSR
2
dapat dilihat pada Gambar 4.7 berikut ini.
5.42773647 4.76632965
-1.44879629 1.44223472 1.1.890656
Universitas Sumatera Utara
1.21782873 -0.9999843
1.44485951 0.00003122
-0.66534387 -1.4422346
-3.2125479 0.77689088
-0.32939093 0.43962561 3.65611073
2.77029792 0.8831883
-0.77951525 4.10098575 -0.1128591
0.55248484 1.9920948
3.54587632 3.87395498
Gambar 4.7 Hasil SSR
2
• Misal σ = 7.5
1 2
�7,5
2
�
− −1
2
+1
2
27,5
2
1 2
�7,5
2
�
− 0
2
+1
2
27,5
2
1 2
�7,5
2
�
− 1
2
+1
2
27,5
2
1 2
�7,5
2
�
− −1
2
+0
2
27,5
2
1 2
�7,5
2
�
− 0
2
+0
2
27,5
2
1 2
�7,5
2
�
− 1
2
+0
2
27,5
2
1 2
�7,5
2
�
− −1
2
+ −1
2
27,5
2
1 2
�7,5
2
�
− 0
2
+−1
2
27,5
2
1 2
�7,5
2
�
− 1
2
+−1
2
27,5
2
0.002881575 0.002805749
0.002881575 0.002805749
0.002830856 0.002805749
0.002881575 0.002805749
0.002881575
Total seluruh elemen matriks = 0.02558, karena tidak sama dengan satu, maka dihitung kembali dengan rumus:
��� � = � � 1
�����
New a = 0.11264953
0.10968526 0.11264953
0.10968526 0.11066677
0.10968526 0.11264953
0.10968526 0.11264953
Hasil konvolusi yang didapatkan dari perkalian antara pixel citra awal dan kernel gaussian dapat dilihat pada Gambar 4.8 dibawah ini.
2.53950587 3.2140305 2.42887858 1.55632379 0.88537364
2.77273597 3.99607793 3.56226419 2.88638675 1.66301123 2.44369993 4.23127106 4.22334002 4.34093658 2.5464554
Universitas Sumatera Utara
2.32410087 4.21641023 5.10180361 5.77079074 3.88240742 2.10673285 3.43974034 3.99012966 4.43676226 3.0928792
Gambar 4.8 Hasil Konvolusi
Hasil SSR
2
SSRnx,y =log I
n
x,y – log G
n
x,y Perhitungan nilai SSR
2
dapat dilihat pada Gambar 4.9 berikut ini.
5.46049413 4.78459695
-1.42887858 1.44367621 1.11462636
1.22726403 -0.9960779
1.43773581 -0.88638675 -0.6630112
-1.4436999 -3.2312711
0.77665998 -0.34093658 0.4535446
3.67589913 2.78358977
0.89819639 -0.77079074 4.11759258
-0.10673285 0.56025966 2.00987034
3.56323774 3.9071208
Gambar 4.9 Hasil SSR
3
Pada Gambar 4.10 dapat dilihat coding yang digunakan dalam metode Singlescale Retinex.
Gaussian gaussian =
new Gaussian
; BitmapData
sourceData = source.LockBits new
Rectangle 0, 0,
source.Width, source.Height, ImageLockMode
.ReadOnly, PixelFormat
.Format24bppRgb; byte
[] pixelBuffer = new
byte [sourceData.Stride
sourceData.Height]; byte
[] bluredBitmap = new
byte [sourceData.Stride
sourceData.Height]; byte
[] resultBuffer = new
byte [sourceData.Stride
sourceData.Height]; Marshal
.CopysourceData.Scan0, pixelBuffer, 0, pixelBuffer.Length;
source.UnlockBitssourceData; int
bytePosition; int
pixelPosition; double
[] blues = new
double [pixelBuffer.Length 3];
double [] greens =
new double
[pixelBuffer.Length 3]; double
[] reds = new
double [pixelBuffer.Length 3];
for int
index = 0; index pixelBuffer.Length 3; index++ {
blues[index] = 0.0f; greens[index] = 0.0f;
reds[index] = 0.0f; }
bluredBitmap =
gaussian.GetBytesgaussian.GaussianImplementationsource, sigma; for
int pixelY = 0; pixelY source.Height; pixelY++
{ for
int pixelX = 0; pixelX source.Width; pixelX++
{ bytePosition = pixelY sourceData.Stride + pixelX
3;
Universitas Sumatera Utara
pixelPosition = pixelY source.Width + pixelX; blues[pixelPosition] += weight
Math .LogpixelBuffer[bytePosition] + 1.0
bluredBitmap[bytePosition] + 1.0; greens[pixelPosition] += weight
Math .LogpixelBuffer[bytePosition + 1] + 1.0
bluredBitmap[bytePosition + 1] + 1.0; reds[pixelPosition] += weight
Math .LogpixelBuffer[bytePosition + 2] + 1.0
bluredBitmap[bytePosition + 2] + 1.0; }
}
Gambar 4.10 Coding yang digunakan dalam Metode Singlescale Retinex
4.1.2 Implementasi Metode Multiscale Retinex