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);
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);
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.
0 comments:
Post a Comment