IMAGE ENHANCEMENT


Tutorial singkat ini author intisarikan dari beberapa referensi salah satunya dari modul praktikum Pengolahan Citra Institut Teknologi Bandung. Membahas mengenai teknik mudah untuk melakukan image enhancement, yaitu memperbaiki tampilan citra dengan teknik Histogram dan Tranformasi pada domain Spasial.

Dalam bidang pengolahan citra, istilah citra mengacu pada suatu fungsi intensitas dalam bidang dua dimensi. Pemrosesan citra menggunakan komputer membutuhkan citra digital sebagai masukannya. Oleh karena itu, kita mengenal beberapa macam format citra digital, yang masing-masing memiliki format penyimpanan dan pembacaan data yang berbeda-beda.

 

Dengan menggunakan toolbox image processing di Matlab, proses pembacaan citra dapat dilakukan dengan mudah, sebagaimana diperlihatkan oleh beberapa contoh berikut:

–     Windows Bitmap (*.bmp)

 

a=imread(‘taz_ref.bmp’);

figure,imshow(a);

 

–     Joint Photographic Experts Group (*.jpg)

 

b=imread(‘oranges.jpg’);

figure,imshow(b);

 

 

–     Tagged Image File Format (*.tif)

 

c=imread(‘saturn.tif’);

figure,imshow(c);

 

 

Jumlah warna yang terdapat dalam suatu citra digital berkaitan erat dengan format data digital yang digunakan. Suatu citra 8 bit (misalnya pada format *.bmp 8-bit) dapat memiliki paling banyak 256 jenis warna di dalamnya. Sedangkan suatu citra 24 bit (misalnya pada format *.png 24-bit) memiliki

224 kombinasi data warna yang dapat ditampilkan.

 

Suatu citra berwarna dapat dinyatakan dalam banyak cara. Salah satu metode yang paling populer adalah dengan menggunakan metode kanal RGB. Dalam format ini, suatu citra berwarna dinyatakan dalam bentuk gabungan dari tiga buah citra monochrome merah, hijau, dan biru yang berukuran sama. Warna dari setiap piksel citra digital bergantung pada kombinasi ketiga nilai intensitas piksel monochrome yang bersesuaian.

 

Contoh program untuk mengekstraksi citra monochrome pada toolbox image processing di Matlab adalah sebagai berikut:

 

d=imread(‘flowers.tif’); figure, imshow(d); dR=d(:,:,1); figure,imshow(dR),title(‘Kanal Merah’); dG=d(:,:,2); figure,imshow(dG),title(‘Kanal Hijau’); dB=d(:,:,3); figure,imshow(dB),title(‘Kanal Biru ‘);

 

 

Teknik image enhancement digunakan untuk meningkatkan kualitas suatu citra digital, baik dalam tujuan untuk menonjolkan suatu ciri tertentu dalam citra tersebut, maupun untuk memperbaiki aspek tampilan. Proses ini biasanya didasarkan pada prosedur yang bersifat eksperimental, subjektif, dan amat bergantung pada tujuan yang hendak dicapai.

 

 

1.    Operasi Titik

 

Operasi  titik  dalam  image  enhancement  dilakukan  dengan  memodifikasi  histogram  citra masukan agar sesuai dengan karakteristik yang diharapkan. Histogram dari suatu citra adalah grafik yang menunjukkan distribusi frekuensi dari nilai intensitas piksel dalam citra tersebut. Contoh perintah untuk menampilkan histogram adalah:

 

I=imread(‘rice.tif’); figure,imshow(I); figure,imhist(I);

 

Beberapa teknik image enhancement melalui operasi titik antara lain adalah intensity adjustment

(termasuk brightening dan darkening), histogram equalization, dan thresholding.

 

 

1.1    Intensity Adjustment

 

Intensity adjusment bekerja dengan cara melakukan pemetaan linear terhadap nilai intensitas pada histogram awal menjadi nilai intensitas pada histogram yang baru.

 

Perintah umum untuk melakukan pemetaan linear tersebut adalah:

J = imadjust(I,[low_in,high_in),[low_out,high_out])

dimana :

low_in   merupakan nilai intensitas yang akan dipetakan sebagai low_out high_in merupakan nilai intensitas yang akan dipetakan sebagai high_out

 

Contoh:

 

 

Citra rice.tif di samping memiliki nilai kekontrasan yang rendah. Berdasarkan histogramnya, dapat diketahui bahwa citra ini tidak memiliki piksel dengan intensitas di bawah 40 dan di atas 225. Untuk memperbaikinya, kita dapat memetakan histogram secara linear sehingga diperoleh sebuah citra baru yang memiliki rentang histogram antara 0 hingga 255.

 

Perintah untuk melakukan intensity adjustment:

 

I=imread(‘rice.tif’); J=imadjust(I,[0.15 0.9],[0 1]); figure,imshow(I); figure,imhist(I); figure,imshow(J); figure,imhist(J);

 

 

 

1.2    Histogram Equalization

 

Teknik  histogram  equalization bertujuan  untuk  menghasilkan  suatu  citra  keluaran  yang memiliki nilai histogram yang relatif sama.

Contoh perintah untuk melakukan histogram equalization:

 

I=imread(‘rice.tif’); J=histeq(I); figure,imshow(I); figure,imhist(I); figure,imshow(J); figure,imhist(J);

 

 

1.3    Thresholding

 

Thresholding merupakan proses pemisahan piksel-piksel berdasarkan derajat  keabuan yang dimilikinya. Piksel yang memiliki derajat keabuan lebih kecil dari nilai batas yang ditentukan akan diberikan nilai 0, sementara piksel yang memiliki derajat keabuan yang lebih besar dari batas akan diubah menjadi bernilai 1

Contoh perintah untuk melakukan thresholding:

 

I=imread(‘rice.tif’); J=im2bw(I,0.4); K=im2bw(I,0.5); figure,imshow(I); figure,imhist(I); figure,imshow(J); figure,imshow(K);

 

 

 

 

2.    Operasi Spasial

 

Operasi spasial dalam pengolahan citra digital dilakukan melalui penggunaan suatu kernel konvolusi

2-dimensi.  Beberapa  metode  image  enhancement  yang  termasuk  dalam  keluarga  ini  adalah

neighborhood averaging, median filtering, dan high-pass filtering.

 

2.1    Neighborhood Averaging

 

Pada prinsipnya, filter yang digunakan dalam neighborhood averaging merupakan salah satu jenis low-pass filter, yang bekerja dengan cara mengganti nilai suatu piksel pada citra asal dengan nilai rata-rata dari piksel tersebut dan lingkungan tetangganya.

Contoh perintah untuk melakukan neighborhood averaging dengan kernel berukuran 3×3:

 

I=imread(‘eight.tif’); kernel=[1 1 1;1 1 1;1 1 1]/9; J=uint8(conv2(double(I),kernel,’same’)); figure,imshow(I);

figure,imshow(J);

 

Salah satu persoalan pada penggunaan neighborhood averaging adalah apabila citra masukan telah terkontaminasi noise, sebagaimana diperlihatkan oleh contoh berikut:

 

I=imread(‘eight.tif’); IN=imnoise(I,’salt & pepper’,0.02); kernel=[1 1 1;1 1 1;1 1 1]/9; J=uint8(conv2(double(I),kernel,’same’)); JN=uint8(conv2(double(IN),kernel,’same’)); figure,imshow(I);

figure,imshow(J); figure,imshow(IN); figure,imshow(JN);

 

 

2.2    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 dengan kernel berukuran 3×3:

 

I=imread(‘eight.tif’); IN=imnoise(I,’salt & pepper’,0.02); J=medfilt2(I,[3 3]); JN=medfilt2(IN,[3 3]); figure,imshow(I);

figure,imshow(J); figure,imshow(IN); figure,imshow(JN);

 

 

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=imread(‘saturn.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=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);

 

 

 

 

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 ditampilkan/diproses 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=double(imread(‘cameraman.tif’)); IF=fft2(I); mask_high=double(imread(‘maskpojok.bmp’)); mask_low =not(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(‘vert’); figure,imagesc(log(abs(IF )),[0 17]),colormap(‘hot’) ,colorbar(‘vert’); figure,imagesc(hasil_high)           ,colormap(‘gray’),colorbar(‘vert’); figure,imagesc(log(abs(IFH)),[0 17]),colormap(‘hot’) ,colorbar(‘vert’); figure,imagesc(hasil_low )           ,colormap(‘gray’),colorbar(‘vert’); figure,imagesc(log(abs(IFL)),[0 17]),colormap(‘hot’) ,colorbar(‘vert’);

 

 

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.

 

 

 

 

mask high-pass

 

 

 

mask low-pass

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: