Pcd topik1 - fundamental
Transcript of Pcd topik1 - fundamental
Praktikum Pengolahan Citra Digital – Topik 1 Yosafat Suryotomo- 612004047
1
Digital Image Processing with MATLAB
Topik 1
The Fundamental and Images Transformations
1. Fundamental
Suatu citra yang direpresentasikan oleh MATLAB
merupakan kuantisasi nilai-nilai grayscale yang
direpresentasikan pada sebuah matrix / array, dimana tiap
nilai baris maupun kolom dari array tersebut merupakan
koordinat dari tiap pixel. Atau dengan kata lain tiap titik
atau pixel dari sebuah citra direpresentasikan oleh tiap
nilai dari tiap array dengan baris dan kolom tertentu,
sebagai contoh suatu citra dengan resolusi 256x256 pixel
akan direpresentasikan ke dalam sebuah matrix atau array
dengan 256 jumlah baris dan 256 jumlah kolom.
Imread
Matlab telah menyediakan banyak toolbox atau fungsi untuk pengolahan citra digital (Image Processing
Toolbox / IPT). Suatu citra supaya dibaca ke dalam data matrix dalam MATLAB menggunakan fungsi
Imread, contoh syntax-nya adalah sebagai berikut :
imread(‘Filename’)
filename disini adalah variable string yang mengandung nama file lengkap dari sebuah data citra.
>> y = imread(‘cameraman.tif’);
Jika path nama file tidak disertakan secara lengkap pada filename maka perintah imread akan membaca
nama file dari current directory MATLAB ( untuk kasus ini ada di Matlab6.5\toolbox\images\ imdemos ).
Namun cara lain-nya dapat juga dengan menyertakan FilePathname yang lengkap, sebagai contoh :
>> z = imread(‘D:\Pictures\Om Albert.jpg’);
Pada kasus ini variable y dan z jika dilihat pada MATLAB workspace akan seperti berikut :
Praktikum Pengolahan Citra Digital – Topik 1 Yosafat Suryotomo- 612004047
2
Imshow
Untuk menampilkan data matrix/array citra ke dalam MATLAB desktop dapat menggunakan fungsi
imshow, dimana syntax dasarnya adalah sebagai berikut :
Imshow(y)
Dimana y adalah array citra, sehingga untuk contoh sebelumnya apabila ditampilkan nilai array y dan z
pada MATLAB akan menghasilkan keluaran sebagai berikut :
>> imshow(y);figure;
>> imshow(z);
Converting Class of Variable ( uint8, mat2gray, im2uint8 )
Pada pengolahan citra digital dengan menggunakan MATLAB terdapat beberapa fungsi konversi, hal ini
dilakukan karena pada dasarnya untuk menampilkan citra (imshow,) variable citra yang tersebut harus
dalam bentuk array 8 bit (uint8) untuk array dengan rentang nilai kuantisasi [0-255], atau dapat juga
untuk variable kelas double namun untuk array dengan rentang nilai [0-1]. Dimana fungsi-fungsi
konversi nya adalah :
Uint8
I = Uint8 (y);
Uint8 berguna untuk mengkonversi tiap elemen dari array menjadi unsigned 8-bit (variable tidak
bertanda 8bit ). Y dapat berupa obyek numeric (missal double), rentang nilai dari variable uint8 ialah [0-
255].
Mat2gray
I = MAT2GRAY(A);
Berguna untuk mengkonversi nilai range array citra [0-255] menjadi [0.0 – 1.0], kelas variable dari
output mat2gray ialah double.
Praktikum Pengolahan Citra Digital – Topik 1 Yosafat Suryotomo- 612004047
3
Im2uint8
B = IM2UINT8(I)
Berguna untuk mengkonversi array citra double dengan range [0.0 – 1.0] menjadi array citra uint8
dengan range [0-255].
Note : Pelajari kembali fungsi-fungsi konversi class of variable, pelajari kegunaanya untuk keseluruhan
pengolahan citra digital terutama hubungannya untuk image transformation.
Beberapa ringkasan diatas adalah dasar-dasar atau fundamental dari pengolahan citra digital, dan untuk
lebih mengenal dan mendalami sifat-sifat dari sebuah citra yang direpresentasikan menjadi matrix
dengan jumlah baris dan kolom yang seusai dengan ukuran pixel dapat dengan mencoba di rumah
contoh berikut ini dan mempelajari algoritma serta kegunaan tiap syntaxnya :
y=imread('saturn.tif');
[m,n]=size(y);
im_yos = uint8(zeros(m,n));
n_show=0;
for i=1:m
im_yos(i,:)=y(i,:);
n_show=n_show+1;
if n_show==3
imshow(im_yos);
n_show=0;
end
%pause(.01); %optional
end
imshow(im_yos);
2. Image Transformation
Image transformation ialah proses untuk mengubah nilai-nilai grayscale dari suatu citra dengan
persamaan transfer function tertentu, hal ini dilakukan untuk beberapa macam tujuan salah satunya
ialah untuk meningkatkan kualitas citra dalam persepsi mata manusia, dikarenakan mata manusia
terbatas dalam melihat perbedaan graylevel yang kecil dan pada posisinya berdekatan, maka diperlukan
sebuah fungsi transformasi untuk meningkatkan level contrast maupun brightness dengan hal ini dapat
meningkatkan kandungan informasi yang di inderakan oleh manusia. Namun selain untuk meningkatkan
kualitas citra terhadap persepsi manusia, image transformation dilakukan juga untuk memberikan
highlights atau perhatian lebih pada bagian-bagian citra yang ingin ditonjolkan untuk diamati.
Persamaan umum untuk image transformation adalah sebagai berikut :
[ ]),(),( yxfTyxg =
Praktikum Pengolahan Citra Digital – Topik 1 Yosafat Suryotomo- 612004047
4
Dimana f(x,y) adalah citra masukan, g(x,y) adalah citra output yang telah diproses, dan T adalah
operator atau fungsi transform, T dapat berlaku untuk operasi tiap-tiap pixel yang diolah dalam ranah
spatial dan juga sebagai tambahan transformasi T dapat dilakukan untuk keseluruhan kesatuan citra,
contoh untuk kasus penambahan atau pengurangan dengan suatu citra noise K dalam noise reduction.
Operasi transformasi citra pada tiap-tiap pixel dengan suatu fungsi transfer dengan kernel array yang
ukurannya jauh lebih kecil merupakan prinsip dasar dari image filtering dalam ranah spatial. Namun
untuk topic pertama ini untuk pendahuluan hanya melakukan operasi image transformation, beberapa
metode nya adalah sebagai berikut :
Image adjustment
Image adjustment (imadjust) merupakan basic tool dari Image Processing Toolbox yang disediakan oleh
MATLAB untuk transformasi intesitas grayscale dari sebuah citra, syntax nya adalah sebagai berikut :
g = imadjust(f, [low_in high_in], [low_out high_out], gamma);
fungsi ini mempunyai grafik transformasi sebagai berikut :
Variable f merupakan input citra dimana tipe variable dapat berupa class uint8, uint16 atau double, dan
ouput citra g mempunyai tipe kelas variable yang sama dari citra input. Jika kita melihat pada grafik
fungsi imadjust diatas terlihat bahwa apabila gamma < 1 maka citra output akan dinaikkan dengan
fungsi eksponesial/pangkat, sehingga citra output akan lebih terang disbanding input, dan sebaliknya
jika gamma > 1. Imadjust pada dasarnya mirip dengan operasi power law transformation. Dan untuk
gamma = 1 tidak terjadi transformasi apapun karena grafik trasnformationnya output =input.
Matrix [low_in high_in] [low_out high_out] merupakan koordinat grafik untuk menentukan titik awal
dan akhir trasnformasi, jika diberikan matrix kosong [ ] maka secara default MATLAB akan mengisi
nilainya menjadi matrix [0 1]. Contoh penggunaan fungsi ini ialah sebagai berikut :
>> y = imread('D:\Software\Matlab6.5\work\PCD\enhancement\rose byrne.jpg');
>> g = imadjust(y,[],[],0.7);
>> imshow(y);figure;
>> imshow(g);
Praktikum Pengolahan Citra Digital – Topik 1 Yosafat Suryotomo- 612004047
5
Hasil keluarannya adalah sebagai berikut :
Gambar 1 . imshow(y) Gambar 2. Imshow(g)
(Citra Input) (Citra Output)
Note : pelajari sifat-sifat masing-masing komponen imadjust, ubahlah nilai-nilai gamma untuk
mengetahui prinsip cara kerja imadjust.
Logarithmic Transformations
Logaritmic transformation merupakan alat atau metode dasar dalam manipulasi rentang dinamik
(dynamic range) dalam sebuah citra. Logaritmic transformation diimplementasikan menggunakan
persamaan berikut :
( ))(1log* fdoublecg +=
Dimana c konstan. Bentuk grafik transfer fungsi dari persamaam logaritma ini hampir mirip dengan
transformasi menggunakan imadjust dengan gamma
kurang dari 1 dimana nilai low dan high diset 0 dan 1,
namun perlu diperhatikan bahwa bentuk kurva pada
gamma dapat dibuat variable, pada transformasi
logaritmik bentuk kurva tetap. Salah satu prinsip
penggunaan trasnformasi logaritma ialah untuk
mengkompres dynamic range. Missal ada sebuah citra
dengan range nilai [0 – 106] atau lebih. Sewaktu
ditampilkan di monitor yang diskalakan secara linear 8
bits (dikuantisasi), nilai yang tinggi akan mendominasi
menghasilkan pengurangan detail citra dari nilai
intensitas yang kecil, permasalahan ini dapat jauh
dikurangi dengan menggunakan transformasi logaritmik.
Contoh penerapan syntax nya di dalam MATLAB adalah sebagai berikut :
Praktikum Pengolahan Citra Digital – Topik 1 Yosafat Suryotomo- 612004047
6
y = imread('D:\Software\Matlab6.5\work\PCD\enhancement\Mother teresa.jpg');
c = 15;
g = c*log(1+double(y1));
gs = im2uint8(mat2gray(g));
imshow(y1);figure;
imshow(gs);
(Input � imshow(y) ) (Output � imshow(g) )
Note : Cobalah contoh diatas untuk citra yang berbeda dan Analisalah sifat dan kegunaan fungsi
transformasi logaritmik.
Contrast-Stretching Transformations
Contrast stretching transformation
mempunyai sifat mengkompres input
level yang lebih rendah dari m
kedalam fungsi rentang yang
menyempit (narrow) menjadi bagian
gelap untuk citra output, dan juga
sebaliknya akan menguatkan input
level yang lebih besar dari m sehingga
memperterang citra output bagian
tersebut, hal ini akan menghasilkan
citra ouput yang mempunyai nilai kontras yang lebih tinggi. Sedangkan apabila grafik fungsi transfer
peralihan m sangat curam (mendekati tegak lurus) maka fungsi ini disebut thresholding function.
Persamaan umum dari Contrast-stretching transformation adalah sebagai berikut :
( )ErmrTs
/1
1)(
+==
Praktikum Pengolahan Citra Digital – Topik 1 Yosafat Suryotomo- 612004047
7
Dimana r merepresentasikan intensitas graylevel dari citra masukan, s adalah output citra, dan E untuk
mengontrol slope atau kemiringan lereng grafik. Implementasi matematis persamaannya dalam
MATLAB adalah sebagai berikut :
>> g = 1./(1+(mean./(double(f)+eps) ).^E);
Perlu diperhatikan terdapat penggunaan eps dilakukan untuk mencegah overflow apabila input
masukan citra mempunyai nilai grayscale 0.
Histogram Processing
Histogram suatu citra secara sederhana adalah nilai yang didapat untuk menunjukkan seberapa sering
suatu nilai grayscale muncul dalam citra tersebut. Nilai suatu grayscale yang muncul direpresentasikan
dalam (rk ) sedangkan seberapa sering rk muncul direpresentasikan dalam nk , sehingga persamaan
histogram adalah :
h(rk ) = nk
Terkadang lebih berguna juga jika menganalisa dengan histogram yang di-normalisasi, secara sederhana
didapat dengan membagi histogram dengan jumlah pixel keseluruhan (n).
pk = nk /n
Atau untuk lebih memudahkan pengertian akan histogram dapat dengan melihat syntax berikut untuk
menghasilkan histogram secara manual (tambahan) :
function [hist] = histogram(image)
[m n o] = size(image); %image hanya untuk citra grayscale
image = double(image);
hist = zeros(256);
for i=1:m
for j=1:n
hist(round( image(i,j) )+1) = hist(round(image(i,j))+1) + 1;
end
end
end
Imhist
Untuk memudahkan penampilan plot histogram dari sebuah citra, MATLAB telah menyediakan fungsi
jadi dalam IPT-nya. Yaitu menggunakan syntax imhist dengan penggunaan sebagai berikut :
>> h = imhist(f);
>> plot(h);
Praktikum Pengolahan Citra Digital – Topik 1 Yosafat Suryotomo- 612004047
8
Histogram Equalization
Histogram equalization ialah persamaan yang di implementasikan pada sebuah citra digital dimana
distribusi histogram nya akan lebih menyebar, dalam hal ini walaupun tidak dapat dibuktikan bahwa
bentuk histogramnya akan uniform namun dengan histogram equalization akan dipastikan histogramnya
akan lebih merata. Seperti pada sebelumnya diketahui bahwa peluang kemunculan graylevel rk didekati
dengan : pk = nk /n
Sedangkan persamaan transformasi histogram equalization adalah :
Secara sederhana penggunaan histogram equalization pada MATLAB adalah sebagai berikut :
>> g = histeq(f);
Berikut ini ialah contoh penggunaan dari imhist dan histeq untuk lebih mengerti dalam mempelajari
histogram processing.
y = imread('tire.tif');
h_y = imhist(y);
g = histeq(y);
h_g = imhist(g);
figure;subplot(211);
imshow(y);subplot(212);
plot(h_y);grid on;
figure;subplot(211);
imshow(g);subplot(212);
plot(h_g);grid on;
Praktikum Pengolahan Citra Digital – Topik 1 Yosafat Suryotomo- 612004047
9
Terlihat bahwa citra output persebaran histogram nya jauh lebih merata dibanding citra input, dengan
histogram yang lebih merata maka akan meningkatkan persebaran nilai grayscale sehingga citra output
akan terkesan terlihat lebih terang dan detailnya lebih terlihat.
Note : Pelajari penggunaan imhist dan histeq untuk citra-citra yang berbeda-beda, pelajari karakteristik
grayscale citra berdasarkan tampilan histogramnya, analisa histogram citra berperan dasar untuk proses
pengolahan citra lebih lanjut yaitu image enhancement, compression, segmentation and description.
Hand-out ini bisa anda download dari link berikut: http://simplyos.wordpress.com/
3. Referensi
[1] Gonzalez, C. Rafael, Woods, E. Richard and Eddins, L. Steven, Digital Image Processing
using MATLAB, Pearson Education.
[2] I. Setyawan, “EE-733 Pengolahan Citra Digital”, Lecturer’s Slide Show Presentation, Satya
Wacana Christian Univ., ECE Dept.,Salatiga, 2007.
“ I have not failed. I've just found 10,000 ways that won't work “
- Thomas Alpha Edison