Pengolahan dalam Domain Spasial dan Restorasi Citra Computer Vision Materi 4 Eko Prasetyo Teknik Informatika UBHARA 2012
Konsep Domain Spasial Domain Spasial Operasi pemfilteran secara linear. Mengalikan setiap piksel dalam tetangga dengan koefisien yang terhubung kepadanya dan menjumlahkan hasilnya untuk mendapatkan jawaban pada setiap titik (x,y). Jika ukuran tetangga adalah m x n, koefisien mn dibutuhkan. Koefisien dibentuk menjadi matriks yang disebut dengan filter, mask, filter mask, kernel, template, atau window.
Konsep Domain Spasial Ada 2 konsep dalam filter spasial linier, yaitu correlation (korelasi) dan convolution (konvolusi). Korelasi adalah proses passing mask terhadap citra array f seperti yang digambarkan pada gambar sebelumnya. Mekanisme konvolusi sama dengan korelasi, hanya saja w diputar 180o terlebih dahulu baru kemudian disampaikan pada citra f
Korelasi dan Konvolusi 1 dimensi
Korelasi dan Konvolusi 2 dimensi korelasi filter w(x,y) sebuah citra f(x,y) berukuran m x n dituliskan dengan w(x,y) f(x,y) w(x,y) f(x,y) = konvolusi w(x,y) dan f(x,y) dituliskan w(x,y) f(x,y) w(x,y) f(x,y) = R = w1z1 + w2z2 + … + wmnzmn = wkzk = wTz
Mask 3 x 3 w1 w2 w3 w4 w5 w6 w7 w8 w9 R = w1z1 + w2z2 + … + w9z9 Pilihan Penjelasan Mode Filter ‘corr’ Filter dilakukan menggunakan korelasi. Nilai default ‘conv’ Filter dilakukan menggunakan konvolusi Pilihan Boundary P Boundary cira input diperluas dengan lapisan sebuah nilai, P (ditulis tanpa tanda petik). Ini merupakan nilai default dengan nilai 0. ‘replicate’ Ukuran citra diperluas dengan replikasi nilai dalam border luarnya. ‘symmetric’ Ukuran citra diperluas dengan refleksinya terhadap border. ‘circular’ Ukuran citra diperluas dengan menganggap citra sebagai satu periode fungsi periodik 2-D. Pilihan Ukuran ‘full’ Outputnya adalah ukuran yang sama dengan citra yang diperluas. ‘same’ Outputnya adalah ukuran yang sama dengan input. Ini adalah nilai default. w1 w2 w3 w4 w5 w6 w7 w8 w9 R = w1z1 + w2z2 + … + w9z9 = wkzk = wTz w dan z adalah vektor 9 elemen yang dibentuk dari koefisien mask dan intensitas citra Toolbox untuk melakukan filter linear spasial adalah fungsi imfilter dengan formula: g = imfilter(f, w, filtering_mode, boundary_option, size_option);
Pemfilteran dengan korelasi >> f=imread('bw.png'); >> f=rgb2gray(i); >> f=im2double(i); >> w=ones(31); >> g = imfilter(f,w); >> figure, imshow(g, [ ]); >> grep = imfilter(f,w,'replicate'); >> figure, imshow(grep, [ ]); >> gsym = imfilter(f,w,'symmetric'); >> figure, imshow(gsym, [ ]); >> gcir = imfilter(f,w,'circular'); >> figure, imshow(gcir, [ ]); >> f8 = im2uint8(f); >> gf8 = imfilter(f8, w, 'replicate'); >> figure, imshow(gf8, [ ]); citra asli dengan opsi ‘default’ dengan opsi ‘symmetric’ dengan opsi ‘replicate’ dengan opsi ‘circular’ dengan opsi ‘replicate’ dan tipe uint8
Filter Penghalusan (Smoothing) Digunakan untuk: mengaburkan (blurring) dan untuk mengurangi noise pada citra. Blurring ini biasanya menjadi preprocessing task dalam pengolahan citra, seperti membuang detail kecil citra untuk mengekstraksi obyek yang besar dan penghubung gap kecil dalam garis atau kurva. Pengurangan noise dapat dilakukan oleh blurring dengan filter linear maupun filter non-linear. Filter Linear Output dari smoothing dengan filter linear adalah rata-rata nilai piksel dalam tetangga dari rentang mask filter. Disebut dengan averaging filter, disebut juga lowpass filter. rata-rata level intensitas piksel dalam tetangga 3 x 3 yang didefinisikan oleh mask dengan w=1/9
Filter Penghalusan (Smoothing) (2) Filter rata-rata berukuran 3x3 (bentuk seperti dibawah) Opsi Boundary: default (0 disemua pad) 3 2 4 6 7 5 1 2 3 4 Input: 4x4 image Output: 4x4 image (smoothed) Gray scale = [0,7] Gray scale = [0,7]
Filter Penghalusan (Smoothing) (3) >> w3=ones(3)/9; >> w5=ones(5)/25; >> w9=ones(9)/81; >> w21=ones(21)/441; >> w35=ones(35)/1225; >> g3=imfilter(f,w3); >> figure, imshow(g3, [ ]); >> g5=imfilter(f,w5); >> figure, imshow(g5, [ ]); >> g9=imfilter(f,w9); >> figure, imshow(g9, [ ]); >> g21=imfilter(f,w21); >> figure, imshow(g21, [ ]); >> g35=imfilter(f,w35); >> figure, imshow(g35, [ ]); Hasil filter rata-rata dengan ukuran mask 3, 5, 9, 21,35
Filter Penghalusan (Smoothing) (4) Filter rata-rata berukuran 3x3 (bentuk seperti dibawah) Opsi Boundary: default (0 disemua pad) 3 2 4 6 7 5 1 2 3 4 Input: 4x4 image Output: 4x4 image (smoothed) Gray scale = [0,7] Gray scale = [0,7]
Penghalusan dengan Filter non-Linear (Order-Statistic) Order-statistic adalah filter spasial non-linear yang hasilnya didasarkan pada urutan (rangking) piksel yang mengisi area citra yang diapit filter dan kemudian mengganti nilai dari pusat piksel dengan nilai yang ditentukan oleh hasil perangkingan. Filter yang paling dikenal: median filter. Filter median mengganti nilai piksel dengan median dari nilai intensitas dalam tetangga dari piksel tersebut (nilai asli dari piksel tersebut termasuk dalam perhitungan median) Baik untuk menghilangkan salt-and-pepper noise karena sifat median yang menjauhi hitam dan putih. Toolbox fungsi ordfilt2 menghasilkan order-statistic filters. g = ordfilt2(f, order, domain) order adalah nilai ke-x hasil pengurutan tetangga yang ditentukan oleh bukan nol dalam domain. 3 2 4 6 7 5 2 3 4 Filter median 3x3 1 Citra asli median filter
Penghalusan dengan Filter non-Linear (Order-Statistic) (2) Filter lain yang diberikan oleh statistik dasar. Jika menggunakan nilai terbesar urutan maka akan menjadi max filter: Berguna untuk mencari titik-titik yang paling terang dalam citra. Hasil dari filter max 3 x 3 diberikan oleh R = max{zk|k = 1, 2, …, 9}. Filter order-statistic dengan mengambil nilai terkecil disebut min filter : Digunakan untuk tujuan mencari titik-titik yang paling gelap Hasil dari filter min 3 x 3 diberikan oleh R = min{zk|k = 1, 2, …, 9}. 2 3 2 4 6 7 5 4 6 7 5 min filter Citra asli max filter
Penghalusan dengan Filter non-Linear (Order-Statistic) (3) Toolbox filter spasial non-linear adalah fungsi ordfilt2 yang menghasilkan order-statistic filters. g = ordfilt2(f, order, domain) order adalah nilai ke-x hasil pengurutan tetangga yang ditentukan oleh bukan nol dalam domain. Untuk filter median: g = ordfilt2(f, median(1:m*n), ones(m, n)) g = medfilt2(f, [m n], padopt) [m n] mendefinisikan tetangga ukuran m x n di mana median dihitung, padopt menetapkan satu dari tiga pilihan border-padding: ‘zeros’ (default), ‘symmetric’ di mana f diperluas secara simetris dengan mirror-reflecting pada bordernya, dan ‘indexed’ di mana f dilapisi dengan satu jika menggunakan class double dan 0 jika yang lain Untuk filter max: g = ordfilt2(f, m*n, ones(m, n)) Untuk filter min: g = ordfilt2(f, 1, ones(m, n))
Penghalusan dengan Filter non-Linear (Order-Statistic) (4) >> f = imread('anak.tif'); >> fb = imnoise(f,'salt & pepper', 0.2); >> gm = medfilt2(fb); >> gm2 = medfilt2(fb,[5 5]); >> gm3 = medfilt2(fb,[7 7]); Citra asli Salt and Pepper noise Hasil median 3x3 Hasil median 5x5 Hasil median 7x7
Filter Penajaman (Sharpening) Penajaman (sharpening) adalah untuk memperterang (highlight) dalam intensitas citra. Turunan dari fungsi digital didefinisikan dengan istilah differences. Definisi yang digunakan dalam turunan pertama adalah: Harus menjadi nol pada daerah intensitas yang konstan. Harus menjadi tidak nol pada titik datangnya intensitas step (naik) dan ramp (turun). Harus menjadi tidak nol pada daerah sepanjang ramp. Definisi yang digunakan dalam turunan kedua adalah: Harus menjadi nol pada daerah sepanjang ramp. turunan pertama fungsi f(x,y) satu dimensi turunan kedua f(x) sebagai diferensial
Filter Penajaman: Laplacian Filter Laplacian sebuah citra f(x,y) dinyatakan oleh 2f(x,y) yang didefinisikan dengan: Umumnya menggunakan perkiraan digital turunan kedua: dan : Jika digabung dalam 2f(x,y) menjadi: Pernyataan ini diimplementasikan pada semua titik (x,y) dalam citra dengan mengisikan konstanta suku sebagai nilai filter mask sesuai dengan letak yang ditunjukkan oleh sukunya
Filter khusus dalam matlab: fspecial() 1 6 5 -2 -1 5 4 10 -10 -12 3 -16 -7 -8 w = fspecial(‘type’, parameter) di mana ‘type’ adalah jenis filter yang digunakan, sedangkan parameter mendefinisikan filter tetapannya >> w=fspecial('laplacian',0) w = 0 1 0 1 -4 1 >> w=[0 1 0; 1 -4 1; 0 1 0]; >> g=imfilter(f,w);
Filter spasial yang didukung oleh fspecial Type Syntax dan Parameter ‘average’ fspecial(‘average’, [r c]). Filter rata-rata persegi panjang dari ukuran r x c, default-nya 3x 3, satu angka menunjukkan [r c] menetapkan filter bujur sangkar ‘disk’ fspecial (‘disk’, r). Filter rata-rata circual (dengan bujur sangkar ukuran 2r+1) dengan radius r, default radius adalah 5. ‘gaussian’ fspecial (‘gaussian’, [r c], sig). Filter lowpass Gaussian dengan ukuran r x c dan standard deviasi sig positif. Defaultnya 3 x 3 dan 0.5, satu angka dari [r c] menunjukkan filter bujur sangkar. ‘laplacian’ fspecial (‘laplacian’, alpha). Filter Laplacian 3 x 3 yang bentuknya ditentukan alpha, angka pada range [0, 1], nilai default alpha adalah 0.5 ‘log’ fspecial (‘log’, [r c]). Laplacian dari filter Gaussian (LoG) berukuran r x c dan standard deviasi sig positif. Nilai default 5 x 5 dan 0.5, satu angka menunjukkan [r c] menetapkan filter bujur sangkar. ‘motion’ fspecial (‘motion’, len, theta). Output sebuah filter, ketika digunakan dengan sebuah citra, memperkirakan motion linear len piksel. Arah motion adalah theta, diukur dengan sudut horizontal. Defaultnya 9 dan 0 yang merepresentasikan motion 9 piksel dengan arah horizontal. ‘prewitt’ fspecial (‘prewitt’). Output mask Prewitt 3 x 3, wv, yang memperkirakan sebuah gradien vertikal. Mask untuk gradien horizontal didapatkan dengan mentranspose hasil wh = wv’ ‘sobel’ fspecial (‘sobel’). Output mask Sobel 3 x 3, sv, yang memperkirakan sebuah gradien vertikal. Mask untuk gradien horizontal didapatkan dengan mentranspose hasil sh = sv’ ‘unsharp’ fspecial (‘unsharp’, alpha). Output filter unsharp 3 x 3. Parameter alpha mengontrol bentuk; nilainya harus lebih besar dari 0 dan lebih kecil atau sama dengan 1.0, defaultnya 0.2
Filter Penajaman: Laplacian (2) >> w1 = [0 1 0; 1 -4 1; 0 1 0]; >> w2 = [1 1 1; 1 -8 1; 1 1 1]; >> f = imread('srikaya.tif'); >> f2 = im2double(f); >> g4 = imfilter(f2,w1,'replicate'); >> g4 = f2 - g4; >> g8 = imfilter(f2,w2,'replicate'); >> g8 = f2 - g8; Citra asli Hasil penajaman
Filter Gradien Turunan pertama pengolahan citra digital diimplementasikan jarak (panjang) gradien. Untuk fungsi f(x,y), gradien f pada koordinat (x,y) didefiniskan sebagai vektor kolom 2- dimensi: Panjang vektor ini diberikan oleh: Model lain: M(x,y) |gx| + |fy|
Filter Gradien: Robert dan Sobel Dua definisi lain yang diusulkan oleh Robert[1965]: gx = (z9 – z5) dan gy = (z8 – z6) Jika menggunakan formula M(x,y), gx dan gy, maka untuk menghitung citra gradien dengan: M(x,y) = [(z9 – z5)2 + (z8 – z6)2]1/2 Formula yang lain: M(x,y) |z9 – z5| + |z8 – z6| Perkiraan nilai gx dan gy menggunakan tetangga 3 x 3 yang terpusat di z5 sbb: Dan Sehingga: M(x,y) = |(z7 + 2z8 + z9) – (z1 + 2z2 + z3| + |(z3 + 2z6 + z9) – (z1 + 2z4 + z7)|
Filter Gradien: Sobel 10 12 16 11 7 6 1 -1 -6 -13 -20 -18 3 2 4 6 7 5 3 2 4 6 7 5 18 6 24 14 12 -8 -4 -18 8 -20 -26 gx 8 6 2 -10 14 3 5 -14 23 -3 -12 21 -8 -7 3 2 4 6 7 5 g = gx + gy gy
Filter Gradien: Sobel (2) Gradien gx dan gy Citra asli >> f = imread('lensa_kontak.png'); >> wh = [-1 -2 -1; 0 0 0; 1 2 1]; >> wv = [-1 0 1; -2 0 2; -1 0 1]; >> gx = imfilter(f,wh); >> figure, imshow(gx, [ ]); >> gy = imfilter(f,wv); >> figure, imshow(gy, [ ]); >> g = gx + gy; >> figure, imshow(g, [ ]); Gradien gx Gradien gy
Degradasi dan Restorasi Citra Proses degradasi dimodelkan sebagai sebuah fungsi degradasi yang digabungkan dengan syarat additive noise Mengoperasikan citra input f(x,y) untuk menghasilkan citra terdegradasi g(x,y). Jika ada g(x,y), fungsi degradasi H dan syarat additive noise (x,y), obyektif dari restorasi adalah untuk mendapatkan perkiraan f’(x,y) dari citra original. Diinginkan memperkirakan kemungkinan yang semirip mungkin terhadap citra input original. Citra terdegradasi dalam domain spasial: g(x,y) = h(x,y) f(x,y) + (x,y) di mana h(x,y) adalah representasi spasial dari fungsi degradasi, simbol “” adalah konvolusi. Dalam domain spasial, konvolusi dianalogikan dengan perkalian dalam domain frekuensi, sehingga formula di atas dapat dituliskan dalam domain frekuensi dengan bentuk: G(u,v) = H(u,v)F(u,v) + N(u,v) Fungsi degradasi H + f(x,y) g(x,y) f’(x,y) Noise (x,y) DEGRADASI RESTORASI Filter restorasi (s)
Model Noise Sumber noise bisa terjadi sejak pengambilan dan atau transmisi citra. Kinerja dari sensor citra dipengaruhi oleh banyak faktor seperti kondisi lingkungan selama pengambilan citra dan oleh kualitas sensitivitas elemen itu sendiri. Contoh, dalam pengambilan citra dengan kamera CCD, level pencahayaan dan suhu sensor adalah faktor utama yang memengaruhi tingkat noise pada citra yang dihasilkan. Citra yang terkorupsi selama transmisi secara prinsip disebabkan interferensi channel yang digunakan untuk transmisi. Misalnya, citra yang ditransmisikan menggunakan jaringan wireless dapat terkorupsi sebagai hasil dari pencahayaan atau pengaruh atmosfer yang lain Gaussian Noise PDF (probability density function) variabel random Gaussian z di mana z merepresentasikan intensitas, ź adalah nilai rata-rata z dan adalah standar deviasi
Model Noise (2) Rayleigh Noise Erlang (gamma) noise PDF noise Rayleigh diberikan oleh: Rata-rata dan varian diberikan oleh formula: Dan Erlang (gamma) noise PDF noise Erlang diberikan oleh: di mana parameter a > 0, b integer positif dan “!” mengindikasikan faktorial. Rata-rata dan varian dari kepadatan ini diberikan oleh:
Model Noise (3) Exponential Noise Uniform Noise PDF exponential noise diberikan oleh: di mana a > 0. Rata-rata dan varian dari kepadatan ini adalah: dan Uniform Noise PDF uniform noise diberikan oleh: Rata-rata dan varian dari kepadatan ini adalah: Dan Impuls (Salt-and-Pepper Noise)
Model Noise (4)
Ilustrasi noise
Teknik Restorasi : Mean Filter Arithmetic Mean Filter Sxy adalah window mask Menghitung nilai rata-rata citra terkorupsi g(x,y) pada daerah yang didefinisikan oleh Sxy Geometric mean filter Perkalian piksel dalam window sub-image, yang dipangkatkan dengan 1/mn. Menghasilkan citra yang lebih halus dibanding arithmetic mean filter tetapi tetap menghilangkan sedikit detail citra dalam prosesnya Harmonic Mean Filter Bekerja dengan baik pada salt noise, tetapi tidak untuk pepper noise. Bekerja dengan baik pada jenis noise seperti noise Gaussian
Teknik Restorasi: Mean Filter (2) Contraharmonic Mean Filter Q disebut dengan order filter. Sangat cocok untuk mengurangi pengaruh noise salt-and-pepper. Untuk Q positif, filter mengeleminasi pepper noise. Untuk Q negatif, filter menghilangkan salt noise. Kedua hal tersebut tidak bisa bekerja bersama- sama. Contra-harmonic mean filter akan berubah mirip arithmetic mean filter jika Q = 0, dan mirip harmonic mean filter jika Q = -1
Restorasi dengan aritmetik dan geometrik mean filter >> g = imnoise(f,'gaussian'); >> figure, imshow(g); >> fave = spfilt(g,'amean', 3, 3); >> figure, imshow(fave); >> fgeo = spfilt(g,'gmean', 3, 3); >> figure, imshow(fgeo); Citra asli Citra dikorupsi oleh noise Gaussian difilter dengan arithmetic mean filter dengan ukuran 3x3 difilter dengan geometric mean filter dengan ukuran 3x3
Restorasi dengan filter: contraharmonic, max dan min Pndegradasian citra dengan noise >> [M, N] = size(f); >> R = imnoise2('salt & pepper', M, N, 0.1, 0); >> c = find(R == 0); >> gpep = f; >> gpep(c) = 0; >> R = imnoise2('salt & pepper', M, N, 0, 0.1); >> c = find(R == 1); >> gsal = f; >> gsal(c) = 255; >> figure, imshow(gpep); >> figure, imshow(gsal); Citra terkorupsi dengan pepper noise Citra terkorupsi dengan salt noise
Contraharmonic dan max Citra terkorupsi dengan pepper noise Hasil filter contraharmonic ukuran 3x3 dengan order 1.5 Hasil filter max ukuran 3x3 >> fconp = spfilt(gpep,'chmean', 3, 3, 1.5); >> figure, imshow(fconp); >> fpep = spfilt(gpep,'max', 3, 3); >> figure, imshow(fpep);
Contraharmonic dan min Citra terkorupsi dengan salt noise Hasil filter contraharmonic ukuran 3x3 dengan order -1.5 Hasil filter min ukuran 3x3 >> fconn = spfilt(gsal,'chmean', 3, 3, -1.5); >> figure, imshow(fconn); >> fsal = spfilt(gsal,'min', 3, 3); >> figure, imshow(fsal);
Teknik Restorasi: Order-statistik Filter spasial yang hasilnya didasarkan dari pengurutan (perangkingan) nilai piksel yang merupakan isi daerah citra yang diterapkan oleh filter. Hasil rangking menentukan hasil filter. Filter median Mengganti nilai piksel dengan median dari level intensitas dalam tetangga piksel yang telah dilakukan perangkingan (piksel pusat juga ikut dirangking) Untuk jenis random noise tertentu memberikan kemampuan pengurangan noise yang sangat baik, dengan memperhatikan pengurangan blurring filter smoothing linier pada ukuran yang sama Filter max
Teknik Restorasi: Order-statistik (2) Filter max Sangat berguna untuk mencari titik-titik yang paling terang dalam citra. Pepper noise dapat dikurangi oleh filter ini sebagai hasil proses pemilihan max dalam sub-image Sxy. Filter min Sangat berguna untuk mencari titik-titik paling gelap dalam citra, dan mengurangi salt noise sebagai hasil operasi min Filter midpoint Menghitung titik tengah antara nilai maksimum dan minimum dalam daerah yang diliputi oleh filter
Teknik Restorasi: Order-statistik (3) – Alpha Trimmed Andaikan bahwa akan menghapus d/2 nilai intensitas terendah dan d/2 nilai intensitas tertinggi dari g(x,y) dalam tetangga Sxy. Jika gr(s,t) mereprsentasikan sisa mn – d piksel, Filter dibentuk oleh rata-rata sisa piksel ini yang disebut alpha-trimmed mean filter. Di mana nilai d dalam range [0, mn – 1]. Ketika d=0, alpha-trimmed mendekati arithmetic mean filter. Jika d =mn-1, filter ini menjadi filter median. Untuk nilai d yang lain, filter ini sangat berguna dalam situasi yang menyertakan beberapa jenis noise, seperti kombinasi noise salt-and- pepper dengan Gausian Citra terkorupsi dengan pepper noise >> g = imnoise(f,'gaussian'); >> fgau = spfilt(g,'midpoint', 3, 3); >> figure, imshow(fgau); >> fatr = spfilt(g,'atrimmed', 3, 3, 2); >> figure, imshow(fatr); Hasil filter midpoint ukuran 3x3 pada citra dengan pepper noise Hasil filter alpha-trimmed ukuran 3x3, d=2 pada citra dengan pepper noise
To Be Continued … Materi 5 – Morfologi Citra ANY QUESTION ?