Implementasi Metode Single Scale Retinex

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