Proses ini biasanya bersifat eksperimental, subjektif, dan bergantung pada tujuan yang hendak dicapai. Operasi pengolahan citra untuk meningkatkan kualitas citra antara lain adalah:
1. Operasi Titik
Operasi titik dalam image enhancement dilakukan dengan memodifikasi histogram citra masukan agar sesuai dengan karakteristik yang diharapkan. Teknik image enhancement melalui operasi titik antara lain adalah intensity adjustment dan histogram equalization.
Intensity Adjustment
Intensity adjustment bekerja dengan cara melakukan pemetaan linear terhadap nilai intensitas pada histogram awal menjadi nilai intensitas pada histogram yang baru.
Contoh1 (increase the contrast of an image):
Citra rice.tif memiliki nilai kekontrasan yang rendah. Berdasarkan histogramnya, dapat diketahui bahwa citra ini tidak memiliki piksel dengan intensitas di bawah 40 dan di atas 204. Untuk memperbaikinya, kita dapat memetakan histogram secara linear sehingga diperoleh sebuah citra baru yang memiliki rentang histogram antara 0 hingga 255. Contoh perintah untuk melakukan peningkatan kontras adalah:
1 2 3 4 5 6 | I=imread( 'rice.png' );
J=imadjust(I,[40/255 204/255],[0/255 255/255]);
figure,imshow(I);
figure,imhist(I);
figure,imshow(J);
figure,imhist(J);
|
Hasil yang diperoleh ditunjukkan pada Gambar 2.1.
Contoh2 (decrease the contrast of an image):
Citra cameraman.tif memiliki nilai kekontrasan yang tinggi. Dengan menurunkan kontras dari citra tersebut, jas yang dikenakan oleh cameraman akan tampak lebih detail. Contoh perintah untuk melakukan penurunan kontras adalah:
1 2 3 4 5 6 | I=imread( 'cameraman.tif' );
J=imadjust(I,[0 0.2],[0.5 1]);
figure,imshow(I);
figure,imhist(I);
figure,imshow(J);
figure,imhist(J);
|
Hasil yang diperoleh ditunjukkan pada Gambar 2.2.
Histogram Equalization
Histogram equalization bertujuan untuk menghasilkan citra keluaran yang memiliki nilai histogram yang relatif sama. Contoh perintah untuk melakukan histogram equalization adalah:
1 2 3 4 5 6 | I=imread( 'mandril_gray.tif' );
J=histeq(I);
figure,imshow(I);
figure,imhist(I);
figure,imshow(J);
figure,imhist(J);
|
Hasil yang diperoleh ditunjukkan pada Gambar 2.3.
2. Operasi Spasial
Operasi spasial dalam pengolahan citra digital dilakukan melalui penggunaan suatu kernel konvolusi 2-dimensi. Metode image enhancement dalam operasi spasial antara lain low-pass filtering dan high-pass filtering.
Low-pass Filtering
Low-pass filtering adalah proses filter yang melewatkan komponen citra dengan nilai intensitas yang rendah dan meredam komponen citra dengan nilai intensitas yang tinggi. Low pass filter akan menyebabkan citra menjadi lebih halus dan lebih blur.
Aturan kernel untuk low-pass filter adalah:
1. Semua koefisien kernel harus positif
2. Jumlah semua koefisien kernel harus sama dengan 1
Contoh kernel yang dapat digunakan pada low-pass filtering adalah
Low-pass filtering menggunakan kernel (iii) disebut juga neighborhood averaging. Contoh perintah untuk melakukan low-pass filtering adalah:
1 2 3 4 5 6 7 8 9 10 11 | I=imread( 'bicycle.tif' );
lpf1=[1/16 1/8 1/16;1/8 1/4 1/8;1/16 1/8 1/16];
lpf2=[1/10 1/10 1/10;1/10 1/5 1/10;1/10 1/10 1/10];
lpf3=[1 1 1;1 1 1;1 1 1]/9;
J1=uint8(conv2(double(I),lpf1, 'same' ));
J2=uint8(conv2(double(I),lpf2, 'same' ));
J3=uint8(conv2(double(I),lpf3, 'same' ));
figure,imshow(I);
figure,imshow(J1);
figure,imshow(J2);
figure,imshow(J3);
|
Hasil yang diperoleh ditunjukkan pada Gambar 2.4.
Median Filtering
Median filter merupakan salah satu jenis low-pass filter, yang bekerja dengan mengganti nilai suatu piksel pada citra asal dengan nilai median dari piksel tersebut dan lingkungan tetangganya. Dibandingkan dengan neighborhood averaging, filter ini lebih tidak sensitif terhadap perbedaan intensitas yang ekstrim. Contoh perintah untuk melakukan median filtering terhadap citra yang terkontaminasi noise adalah:
1 2 3 4 5 6 7 8 | I=imread( 'eight.tif' );
IN=imnoise(I, 'salt & pepper' ,0.02);
J1=medfilt2(IN,[3 3]);
J2=medfilt2(IN,[5 5]);
figure,imshow(I);
figure,imshow(IN);
figure,imshow(J1);
figure,imshow(J2);
|
Hasil yang diperoleh ditunjukkan pada Gambar 2.5.
High-pass Filtering
Berkebalikan dengan low-pass filtering, high-pass filtering adalah proses filter yang melewatkan komponen citra dengan nilai intensitas yang tinggi dan meredam komponen citra dengan nilai intensitas yang rendah. High pass filter akan menyebabkan tepi objek tampak lebih tajam dibandingkan sekitarnya.
Aturan kernel untuk high-pass filter adalah:
1. Koefisien kernel boleh positif, negative, atau nol
2. Jumlah semua koefisien kernel adalah 0 atau 1
Contoh kernel yang dapat digunakan pada high-pass filtering adalah
1 2 3 4 5 6 7 8 9 10 11 | I=imread( 'girl_gray.tif' );
hpf1=[-1 -1 -1;-1 8 -1;-1 -1 -1];
hpf2=[ 0 -1 0;-1 5 -1; 0 -1 0];
hpf3=[ 1 -2 1;-2 5 -2; 1 -2 1];
J1=uint8(conv2(double(I),hpf1, 'same' ));
J2=uint8(conv2(double(I),hpf2, 'same' ));
J3=uint8(conv2(double(I),hpf3, 'same' ));
figure,imshow(I);
figure,imshow(J1);
figure,imshow(J2);
figure,imshow(J3);
|
Hasil yang diperoleh ditunjukkan pada Gambar 2.6.
3. Operasi Transformasi
Proses image enhancement berbasis transformasi citra dilakukan dengan:
a. mentransformasi domain citra asal ke dalam domain lain yang sesuai bagi proses enhancement
b. melakukan proses enhancement pada domain baru tersebut
c. mengembalikan citra ke dalam domain spasial untuk ditampilkan/diproses lebih lanjut
Salah satu metode transformasi yang 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. Setelah dilakukan proses enhancement dalam domain frekuensi, informasi citra dikembalikan ke domain spasial. Contoh perintah untuk melakukan low-pass filtering dan high-pass filtering melalui FFT adalah:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | I=imread( 'cameraman.tif' );
IF=fft2(double(I));
mask_high=double(imread( 'maskpojok.bmp' ));
mask_low=1-mask_high;
IFH=(IF.*mask_high);
IFL=(IF.*mask_low );
hasil_high=abs(ifft2(IFH));
hasil_low=abs(ifft2(IFL));
figure,imagesc(I),colormap gray,colorbar,axis image;
figure,imagesc(log(abs(IF +1)),[0 17]),colormap hot,colorbar,axis image;
figure,imagesc(hasil_high),colormap gray,colorbar,axis image;
figure,imagesc(log(abs(IFH+1)),[0 17]),colormap hot,colorbar,axis image;
figure,imagesc(hasil_low ),colormap gray,colorbar,axis image;
figure,imagesc(log(abs(IFL+1)),[0 17]),colormap hot,colorbar,axis image;
|
Hasil yang diperoleh ditunjukkan pada Gambar 2.7.