Contoh perintah untuk melakukan median filtering dengan kernel berukuran 3×3:
I=imreadeight.tif; IN=imnoiseI,salt pepper,0.02;
J=medfilt2I,[3 3]; JN=medfilt2IN,[3 3];
figure,imshowI; figure,imshowJ;
figure,imshowIN; figure,imshowJN;
2.3 High-pass Filtering
Sebagaimana pada proses pengolahan sinyal satu dimensi,
high-pass filter
dua dimensi akan melewatkan komponen citra frekuensi tinggi dan meredam komponen citra frekuensi
rendah. Contoh perintah untuk melakukan high-pass filtering:
I=imreadsaturn.tif; hpf1=[ 1 -2 1;-2 5 -2; 1 -2 1];
hpf2=[ 0 -1 0;-1 5 -1; 0 -1 0]; hpf3=[-1 -1 -1;-1 9 -1;-1 -1 -1];
J1=uint8conv2doubleI,hpf1,same; J2=uint8conv2doubleI,hpf2,same;
J3=uint8conv2doubleI,hpf3,same; figure,imshowI;
figure,imshowJ1; figure,imshowJ2;
figure,imshowJ3;
3. Operasi Transformasi
Berbeda dengan beberapa metode yang telah dibahas sebelumnya, proses image enhancement berbasis transformasi citra dilakukan dengan:
a. mentransformasi citra asal ke dalam domain yang sesuai bagi proses enhancement b. melakukan proses enhancement pada domain tersebut
c. mengembalikan citra ke dalam domain spasial untuk ditampilkandiproses lebih lanjut
Salah satu metode transformasi yang paling populer dalam aplikasi pengolahan citra digital adalah
Fast Fourier Transform
FFT. Transformasi ini memindahkan informasi citra dari domain spasial ke dalam domain frekuensi, yaitu dengan merepresentasikan citra spasial
sebagai suatu penjumlahan eksponensial kompleks dari beragam frekuensi, magnituda, dan fasa.
Contoh perintah untuk melakukan
low-pass filtering
dan
high-pass filtering
melalui FFT adalah:
I=doubleimreadcameraman.tif; IF=fft2I;
mask_high=doubleimreadmaskpojok.bmp; mask_low =notmask_high;
IFH=IF.mask_high; IFL=IF.mask_low;
hasil_high=absifft2IFH; hasil_low =absifft2IFL;
figure,imagescI ,colormapgray,colorbarvert; figure,imagesclogabsIF ,[0 17],colormaphot ,colorbarvert;
figure,imageschasil_high ,colormapgray,colorbarvert; figure,imagesclogabsIFH,[0 17],colormaphot ,colorbarvert;
figure,imageschasil_low ,colormapgray,colorbarvert; figure,imagesclogabsIFL,[0 17],colormaphot ,colorbarvert;
Pada contoh program tersebut, proses filtering dilakukan melalui
masking
terhadap komponen frekuensi yang ditentukan. Agar tercipta karakteristik high-pass filter, maka komponen
frekuensi rendah koefisien frekuensi yang berada pada bagian pojok dari citra hasil FFT di-
masking
menggunakan nilai 0. Demikian pula sebaliknya untuk memunculkan sifat low-pass filter, komponen frekuensi tinggi koefisien frekuensi yang berada pada bagian tengah dari
citra hasil FFT dibuat menjadi 0 melalui perkalian dengan mask low-pass.
4. Tugas
4.1 Operasi Titik Jalankan program berikut dan berikan analisis atas hasil yang diperoleh.
I=imreadrice.tif; J=imadjustI,[0.15 0.9],[1 0];
figure,imshowI; figure,imhistI; figure,imshowJ; figure,imhistJ;
4.2 Operasi Spasial Jalankan program berikut dan berikan analisis atas hasil yang diperoleh.
I=doubleimreadsaturn.tif; kernel=[1 1 1;1 1 1;1 1 1]9;
J=conv2I,kernel,same; K=I-J;
figure,imagescI,colormapgray,colorbarvert; figure,imagescJ,colormapgray,colorbarvert;
figure,imagescK,colormapgray,colorbarvert;
4.3 Operasi Transformasi Jalankan program berikut dan berikan analisis atas hasil yang diperoleh.¹
I =doubleimreadsegitiga.bmp; F =fft2I; IF=fliplrI; FF=fft2IF;
IR=rot90 I; FR=fft2IR; figure,imagescI ,colormapgray,colorbarvert;
figure,imagesclogabsF ,colormaphot ,colorbarvert; figure,imagescIF ,colormapgray,colorbarvert;
figure,imagesclogabsFF,colormaphot ,colorbarvert; figure,imagescIR ,colormapgray,colorbarvert;
figure,imagesclogabsFR,colormaphot ,colorbarvert;
1
Gunakan file
segitiga.bmp
sebagai citra masukan. Pastikan terlebih dahulu agar file tersebut telah berada di direktori kerja yang digunakan.
4.4 Studi Kasus Image enhancement pada dasarnya merupakan proses yang bersifat subjektif, sehingga
parameter keberhasilannya bersifat subjektif pula. Namun demikian, apabila terdapat suatu citra referensi yang merepresentasikan hasil image enhancement yang diinginkan, pengukuran
keberhasilan prosedur image enhancement secara kuantitatif dapat dilakukan melalui perhitungan nilai parameter MSE
Mean Squared Error
sebagai berikut:
a. Untuk citra yang terkontaminasi noise berikut gambar sebelah kiri, lakukanlah
prosedur image enhancement sehingga diperoleh hasil yang paling mendekati citra referensi yang bersesuaian gambar sebelah kanan.²
Prosedur image enhancement yang dilakukan dapat merupakan gabungan dari berbagai metode image enhancement yang tersedia.
b. Tuliskan langkah-langkah image enhancement yang memberikan hasil optimum
dalam sebuah m-file. Prosedur image enhancement yang optimum adalah langkah- langkah yang menghasilkan keluaran citra dengan nilai MSE paling rendah. Perhitungan
nilai MSE antara citra yang telah di-
enhance
dengan citra referensi dapat dilakukan melalui program
hitungmse.m
berikut:
HITUNGMSE – Fungsi untuk menghitung nilai MSE dari dua buah citra
function NilaiMSE=HitungMSECitra,CitraRef; [tinggi,lebar]=sizeCitra;
NilaiSSE=sumsumdoubleCitra-doubleCitraRef.2; NilaiMSE=NilaiSSEtinggilebar;
Dengan menggunakan file
hitungmse.m
tersebut, perhitungan MSE dapat dilakukan dari
command window
melalui perintah:
nilai_mse = hitungmsecitra,citra_referensi
2
Gunakan file
taz_noise.bmp
sebagai citra yang akan di-enhance, dan file
taz_ref.bmp
sebagai citra referensi.
PRAKTIKUM EL4027 PENGOLAHAN CITRA BIOMEDIKA
EB7031 PENGOLAHAN CITRA BIOMEDIKA LANJUT MODUL 2
− EDGE DETECTION
Penentuan tepian suatu objek dalam citra merupakan salah satu wilayah pengolahan citra digital yang paling awal dan paling banyak diteliti. Proses ini seringkali ditempatkan sebagai
langkah pertama dalam aplikasi segmentasi citra, yang bertujuan untuk mengenali objek- objek yang terdapat dalam citra ataupun konteks citra secara keseluruhan.
Deteksi tepi berfungsi untuk mengidentifikasi garis batas
boundary
dari suatu objek yang terdapat pada citra. Tepian dapat dipandang sebagai lokasi piksel dimana terdapat nilai
perbedaan intensitas citra secara ekstrem. Sebuah
edge detector
bekerja dengan cara mengidentifikasi dan menonjolkan lokasi-lokasi piksel yang memiliki karakteristik tersebut.
1. Operator Gradien
Pada citra digital
f x,y
, turunan berarah sepanjang tepian objek akan bernilai maksimum pada arah normal dari kontur tepian yang bersesuaian. Sifat ini dipergunakan sebagai dasar
pemanfaatan operator gradien sebagai
edge detector
. Operator gradien citra konvensional melakukan diferensiasi intensitas piksel pada arah baris
dan kolom, mengikuti persamaan
local intensity variation
berikut :
Nilai magnitudo gradien | ∇
x
,
y
| dari persamaan di atas dapat dinyatakan sebagai berikut:
Operator gradien dapat direpresentasikan oleh dua buah kernel konvolusi
G
x
dan
G
y
, yang masing-masing mendefinisikan operasi penghitungan gradien dalam arah sumbu
x
dan sumbu
y
yang saling tegak lurus. Dalam kasus penghitungan gradien dengan persamaan
local intensity variation
, maka kernel G
x
dan G
y
dapat dirumuskan seperti berikut:
Berikut adalah contoh fungsi Matlab untuk operasi penghitungan gradien orde satu:
I = doubleimreadcameraman.tif; Gradien orde satu pada arah horizontal
gx = [-1 1]; Ix = conv2I,gx,same;
Gradien orde satu pada arah vertikal gy = [-1;1];
Iy = conv2I,gy,same;
Magnitudo gradien J = sqrtIx.2+Iy.2;
Gambar hasil figure,imagescI ,colormapgray,colorbarvert;
figure,imagescIx,colormapgray,colorbarvert; figure,imagescIy,colormapgray,colorbarvert;
figure,imagescJ ,colormapgray,colorbarvert;
Dari operator gradien konvensional di atas, dapat diturunkan berbagai operator gradien berikut:
1.1 Operator Selisih Terpusat
Operator selisih terpusat juga dikenal sebagai
Centered Difference Edge Detector Mask
, dan dinyatakan sebagai kernel:
I = doubleimreadcameraman.tif; Konvolusi dengan operator selisih terpusat
d1x = [-1 0 1]; d1y = [-1;0;1];
Ix = conv2I,d1x,same; Iy = conv2I,d1y,same;
J = sqrtIx.2+Iy.2; Gambar Hasil
figure,imagescI ,colormapgray,colorbarvert; figure,imagescIx,colormapgray,colorbarvert;
figure,imagescIy,colormapgray,colorbarvert; figure,imagescJ ,colormapgray,colorbarvert;
1.2 Operator Roberts
Operator Roberts memiliki ukuran kernel sebesar 2×2, yang direpresentasikan sebagai:
Contoh perintah menggunakan operator Roberts:
I = doubleimreadcameraman.tif; Konvolusi dengan operator Roberts
robertshor = [0 1; -1 0]; robertsver = [1 0; 0 -1];
Ix = conv2I,robertshor,same; Iy = conv2I,robertsver,same;
J = sqrtIx.2+Iy.2;
Gambar Hasil figure,imagescI ,colormapgray,colorbarvert;
figure,imagescIx,colormapgray,colorbarvert; figure,imagescIy,colormapgray,colorbarvert;
figure,imagescJ ,colormapgray,colorbarvert;
Contoh perintah menggunakan operator Roberts matlab
toolbox
1
:
I = imreadcameraman.tif; J = edgeI,roberts;
figure,imagescI,colormapgray,colorbarvert; figure,imagescJ,colormapgray,colorbarvert;
1.3 Operator Prewitt
Contoh perintah menggunakan operator Prewitt:
I = doubleimreadcameraman.tif; Konvolusi dengan operator Prewitt
prewitthor = [-1 0 1; -1 0 1; -1 0 1]; prewittver = [-1 -1 -1; 0 0 0; 1 1 1];
Ix = conv2I,prewitthor,same; Iy = conv2I,prewittver,same;
J = sqrtIx.2+Iy.2; Gambar Hasil
figure,imagescI ,colormapgray,colorbarvert; figure,imagescIx,colormapgray,colorbarvert;
figure,imagescIy,colormapgray,colorbarvert; figure,imagescJ ,colormapgray,colorbarvert;
Contoh perintah menggunakan operator Prewitt matlab
toolbox
:
I = imreadcameraman.tif; J = edgeI,prewitt;
figure,imagescI,colormapgray,colorbarvert; figure,imagescJ,colormapgray,colorbarvert;
1
Perintah
edge
pada toolbox Matlab untuk mensimulasikan operator Prewitt, Roberts, Sobel, dan lainnya memiliki konsep dasar yang sama dengan operasi konvolusi kernel setiap operator secara manual. Bedanya,
perintah
edge
menambahkan suatu skema
thresholding
secara otomatis, sehingga dihasilkan citra keluaran yang bersifat biner bernilai 0 atau 1.
1.4 Operator Sobel
Contoh perintah menggunakan operator Sobel:
I = doubleimreadcameraman.tif; Konvolusi dengan operator Sobel
sobelhor = [-1 0 1; -2 0 2; -1 0 1]; sobelver = [-1 -2 -1; 0 0 0; 1 2 1];
Ix = conv2I,sobelhor,same; Iy = conv2I,sobelver,same;
J = sqrtIx.2+Iy.2; Gambar Hasil
figure,imagescI ,colormapgray,colorbarvert; figure,imagescIx,colormapgray,colorbarvert;
figure,imagescIy,colormapgray,colorbarvert; figure,imagescJ ,colormapgray,colorbarvert;
Contoh perintah menggunakan operator Sobel matlab
toolbox
:
I = imreadcameraman.tif; J = edgeI,sobel;
figure,imagescI,colormapgray,colorbarvert; figure,imagescJ,colormapgray,colorbarvert;
1.5 Operator Isotropic
Contoh perintah menggunakan operator isotropic:
I = doubleimreadcameraman.tif; Konvolusi dengan operator isotropic
isohor = [-1 0 1; -sqrt2 0 sqrt2; -1 0 1]; isover = [-1 -sqrt2 -1; 0 0 0; 1 sqrt2 1];
Ix = conv2I,isohor,same; Iy = conv2I,isover,same;
J = sqrtIx.2+Iy.2; Gambar Hasil
figure,imagescI ,colormapgray,colorbarvert; figure,imagescIx,colormapgray,colorbarvert;
figure,imagescIy,colormapgray,colorbarvert; figure,imagescJ ,colormapgray,colorbarvert;
1.6 Operator Compass
Operator Compass bekerja menggunakan pola empat arah mata angin:
1.7 Operator Kirsch
Operator Kirsch bekerja menggunakan pola delapan arah mata angin:
2. Operator Laplacian
Dalam kondisi transisi tepian yang lebih tidak ekstrem, penggunaan operator turunan kedua lebih dianjurkan.
Representasi turunan kedua dalam bentuk kernel operator Laplacian adalah sebagai berikut:
Dengan berbagai macam pembobotan, kernel Laplacian tersebut dapat dimodifikasi menjadi beberapa kernel konvolusi berikut :
Laplacian of Gaussian Turunan kedua memiliki sifat lebih sensitif terhadap
noise
, selain itu juga menghasilkan
double edge
. Oleh karena itu, operator Laplacian dalam deteksi tepi pada umumnya tidak dipergunakan secara langsung, namun dikombinasikan dengan suatu kernel Gaussian menjadi
sebuah operator
Laplacian of Gaussian
. Fungsi transfer dari kernel
Laplacian of Gaussian
dapat dirumuskan sebagai berikut:
dimana σ merupakan standar deviasi dari kernel Gaussian.
Contoh perintah untuk mendeteksi tepian dengan menggunakan operator
Laplacian of Gaussian
Matlab
toolbox
adalah:
I = imreadcameraman.tif; J = edgeI,log;
figure,imagescI,colormapgray,colorbarvert; figure,imagescJ,colormapgray,colorbarvert;
3. Operator Canny