Selasa, 15 Desember 2009

Menampilkan Image sebagai matriks pada Matlab

Citra digital merupakan suatu larik dua dimensi atau suatu matriks yang elemen-elemennya menyatakan tingkat keabuan dari elemen gambar. Jadi informasi yang terkandung bersifat diskret. Citra digital tidak selalu merupakan hasil langsung data rekaman suatu sistem. Kadang-kadang hasil rekaman data bersifat kontinu seperti gambar pada monitor televisi, foto sinar-X, dan lain sebagainya. Dengan demikian untuk mendapatkan suatu citra digital diperlukan suatu proses konversi, sehingga citra tersebut selanjutnya dapat diproses dengan komputer.

Pada tulisan kali ini, penulis akan menjelaskan cara menampilkan sebuah citra atau image sebagai matriks menggunakan Matlab. Sebagai contoh penulis akan menggunakan sebuah gambar dengan format jpg.

plus44

Image logo plus44 diatas berukuran 300 x 300 yang berarti image tersebut terdiri dari 300 kolom dan 300 baris pixel. Jadi total keseluruhan image tersebut terdiri dari 90000 pixel, dan tiap pixel tersebut merupakan perpaduan dari 3 warna utama yaitu: Red, Green, Blue yang lebih dikenal dengan istilah RGB.

Untuk menampilkan image tersebut sebagai matriks pada matlab tidaklah sulit, berikut adalah sintaks yang digunakan untuk menampilkan image tersebut sebagai matriks.

>> c=imread(‘plus44.jpg’,’jpg’);
>> asci=uint8(c)

Fungsi imread() digunakan untuk membaca image yang ada pada komputer kita, image kucing itu pun harus sudah ada pada folder work didalam matlab.

C:\Program Files\MATLAB71\work

Fungsi uint8() digunakan untuk mengubah string menjadi bilangan integer.

asciGambar dibawah merupakan hasil dari sintaks “asci=uint8(c)

asci2

Perbandingan Deteksi Tepi Menggunakan Operator Prewitt dan Sobel pada Matlab

Pada tulisan kali ini kita akan mencoba melihat perbandingan deteksi tepi sebuah gambar menggunakan operator prewitt dan sobel. Operator prewitt dan sobel termasuk ke dalam operator gradien pertama.

Operator sobel

Peninjauan pengaturan pixel di sekitar pixelnya (x,y) adalah :

Operator sobel adalah magnitudo dari gradien yang dihitung dengan :

Dimana dalam hal ini turunan parsial dihitung dengan :

Dengan konstanta c = 2. Dalam bentuk mask, sy dan sx dapat dinyatakan sebagai :

Arah tepi dihitung dengan persamaan :

Berikut adalah contoh penggunaan operator sobel . Konvolusi pertama dilakukan terhadap pixel yang bernilai 1 (titik pusat mask) :

Nilai 18 pada citra hasil konvolusi didapatkan dengan perhitungan :

Operator Prewitt

Persamaan gradien pada operator prewitt sama dengan gradien pada operator sobel perbedaannya adalah pada prewitt menggunakan konstanta c = 1

Berikut adalah pengaplikasian kedua algoritma tersebut menggunakan aplikasi matlab. gambar yang penulis gunakan untuk membandingkan kedua operator di atas adalah :

Kemudian ketikkan listing program di bawah ini pada program matlab :

R=imread(‘flower.jpg’);
gray=rgb2gray(R);
BR1 = edge (gray,’prewitt’);
BR2 = edge (gray,’sobel’);
figure, imshow(BR1);
figure, imshow(BR2);

Imread berfungsi untuk membaca gambar dan variabel R adalah variabel untuk menyimpan file gambar ‘water lilies’ . BR1 adalah variabel untuk menyimpan gambar yang telah diproses menggunakan deteksi tepi operator ‘prewitt’ dan BR2 adalah variabel untuk menyimpan gambar yang telah diproses menggunakan deteksi tepi operator ’sobel’. Untuk menampilkan hasil pemrosesan menggunakan perintah ‘figure, imshow(var)’.

Hasil dari kedua deteksi tepi tersebut adalah :

Hasil operator prewitt

Hasil operator sobel

Senin, 14 Desember 2009

Perataan Histogram pada Matlab



gambar=imread(‘gambarkoe.jpg’); %--------membaca file gambar
red=gambar(:,:,1); %memanggil matriks gambar yang hanya berisi piksel warna
merah
green=gambar(:,:,2);% memanggil matriks gambar yang hanya berisi piksel
warna merah
blue=gambar(:,:,3); %memanggil matriks gambar yang hanya berisi piksel
warna merah
merahgray2=0.3*red+0.5*green+0.2*blue ;
imhist(red)
imhist(green)
imhist(blue)
imhist(gray)




Rgb2gray Histogram


[nama_file1,nama_path1]=
uigetfile(... {’*.bmp;*.jpg
’,’File Citra
(*.bmp,*.jpg)’;
’*.bmp’,’ File Bitmap
(*.bmp)’; ... ’*.jpg’,’File
jpeg (*.jpg)’; ’*.*’,’
Semua File (*.*)’},...
’Buka File Citra
Host/Asli’); if ˜isequal(nama_file1,
0)
handles.citra1=imread
(fullfile(nama_path1,nama_file1));
x=rgb2gray(handles.citra1);
guidata(hObject,handles); hold on;
axes(handles.sb_citra_asli);
imshow(x); hold on;
axes(handles.sb_hist_asli);
imhist(x); else
return; end set(handles.text9,
’string’ ,nama_file1);
set(handles.text10,’string’ ,
size(handles.citra1,1));
set(handles.text12,’string’ ,
size(handles.citra1,2));
x=rgb2gray(handles.citra1);
handles.citra2=histeq(x);
guidata(hObject,handles);
hold on;
axes(handles.sb_citra_perataan);
imshow(handles.citra2); hold on;
axes(handles.sb_hist_perataan);
imhist(handles.citra2);

RGB Histogram




uigetfile(...
{’*.bmp;*.jpg’,’File Citra
(*.bmp,*.jpg)’;
’*.bmp’,’File Bitmap
(*.bmp)’; ... ’*.jpg’,’File
jpeg (*.jpg)’;
’*.*’,’Semua File (*.*)’},...
’Buka File Citra
Host/Asli’);
if ˜isequal(nama_file1, 0)
handles.citra1=
imread(fullfile
(nama_path1,nama_file1));
[x,map]=rgb2ind(handles.citra1,256);
guidata(hObject,handles);
hold on; axes(handles.sb_citra_asli);
imshow(handles.citra1);
R=handles.citra1(:,:,1);
hold on;
axes(handles.sb_hist_red);
imhist(R); G=handles.citra1(:,:,2);
hold on;
axes(handles.sb_hist_green);
imhist(G);
B=handles.citra1(:,:,3);
hold on; axes(handles.sb_hist_blue);
imhist(B);
else return; end
set(handles.text10,’string’
,nama_file1);
set(handles.text12,’string’
,size(handles.citra1,1));
set(handles.text14,’string’
,size(handles.citra1,2));