Pcd topik1 - fundamental

9
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 :

Transcript of Pcd topik1 - fundamental

Page 1: 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 :

Page 2: Pcd   topik1 - fundamental

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.

Page 3: Pcd   topik1 - fundamental

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 =

Page 4: Pcd   topik1 - fundamental

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);

Page 5: Pcd   topik1 - fundamental

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 :

Page 6: Pcd   topik1 - fundamental

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)(

+==

Page 7: Pcd   topik1 - fundamental

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);

Page 8: Pcd   topik1 - fundamental

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;

Page 9: Pcd   topik1 - fundamental

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