Anda di halaman 1dari 5

[image processing]

June 10, 2012

DESIGN PROGRAM TO CROP IMAGE IN MATLAB

Artikel kali ini hanya tulisan belaka tentang bagaimana kita bisa membangun sebuah fungsi cropping sendiri yang lebih attraktif. Fungsi crop pada Matlab sendiri sesungguhnya sudah bagus tapi saya mencoba menghadirkan cara kerja crop tersebut dalam artikel ini. Dalam membuat fungsi crop, hal terpenting adalah kita bisa membuat script untuk mengambil koordinat yang diberikan dari aktifitas mouse. Kita sangat beruntung bahwa Matlab telah mengakomodasi hal tersebut dengan diberikannya 2 fungsi berikut:

- Waitforbuttonpress

- Rbbox

Waitforbuttopress berfungsi untuk mendeteksi aktifitas dari mouse pada figure yang aktif apakah sudah click atau belum. Sementara rbbox mendeteksi koordinat dari aktifitas mouse setelah click yang tersusun dalam vektor baris berukuran 1x4 yang berisi:

[x y lebar tinggi]

Dengan fasilitas tersebut kita bisa menambahkan script lainnya untuk menyempurnakan program crop kita. Memang salah satu kekurangannya adalah crop ini masih mengikuti style dari crop Matlab, dimana area yang kita crop masih berbentuk rectangular atau persegi panjang.

Program yang dibuat terdiri atas 3 m file, yang terdiri dari 2 buah fungsi dan 1 program utama. Program utama ini saya beri nama program.m dengan codenya adalah

% image cropping manual

clear all;

close all

clc;

%% operasi pilih='Ga Jadi'; while strcmp(pilih,'Ga Jadi')

filename='image2.jpg';

I=imread(filename);

% I=I(:,:,1);

imshow (I);

kotak=potongcitra; pilih=questdlg('Proceed to Crop?', 'Activity', 'Jadi','Ga Jadi','Jadi');

switch pilih

[image processing]

June 10, 2012

case 'Jadi'

% I2=imcrop(I,kotak);

% figure, imshow(I2);

x1=round(kotak(1));

y1=round(kotak(2));

x2=round(kotak(3));

y2=round(kotak(4));

I3=potmanual(I,x1,y1,x2,y2);

figure, imshow(I3); case 'Ga Jadi' clf;

end end %% jans hendry

Dalam program utama di atas, saya menggunakan toolbox questdlg untuk meminta konfirmasi apakah crop dilanjutkan atau tidak (proceed or not). Dengan demikian kita bisa mengulang- ulang aktifitas tanpa harus menjalankan program kembali. Tidak ada yang baru selain toolbox tersebut dalam program utama.

Program kedua merupakan sebuah fungsi untuk mendapatkan koordinat dari crop. Program ini saya beri nama potongcitra.m yang akan memberikan ouput berupa koordinat dalam format rbbox di atas. Berikut ini programnya

% fungsi untuk ambil koordinat

%% function kotak=potongcitra() waitforbuttonpress;

pt1=get(gca,'CurrentPoint');

finalrect=rbbox;

pt2=get(gca,'CurrentPoint');

pt1=pt1(1,1:2);

pt2=pt2(1,1:2);

p1=min(pt1,pt2);

beda = abs(pt1-pt2); x=[p1(1) p1(1)+beda(1) p1(1)+beda(1) p1(1) p1(1)]; y=[p1(2) p1(2) p1(2)+beda(2) p1(2)+beda(2) p1(2)]; hold on axis manual

plot(x,y,'b','linewidth',2)

hold off;

kotak=[p1(1),p1(2),beda(1),beda(2)];

%% jans

Juga pada dasarnya tidak ada yang baru dalam program di atas. Karena saya yakin anda bisa

men-trace jalan pikiran dari program tersebut

Program yang ketiga merupakan fungsi untuk crop yang sebenarnya. Fungsi ini akan membantu kita dalam menggantikan toolbox crop pada Matlab. Program crop telah dirancang agar bisa

[image processing]

June 10, 2012

memfasilitasi citra berwarna. Bila anda ingin melakukan crop terhadap citra 8 bit (1 jenis warna) maka anda bisa melakukan modifikasi pada program dengan sangat mudah. Anda bisa memperhatikan bagian-bagian tersebut yang perlu dimodifikasi. Maka program untuk crop manual ini saya beri nama potmanual.m dengan script sebagai berikut

%% % fungsi potong manual function I3=potmanual(I,x1,y1,x2,y2)

R=I(:,:,1);

G=I(:,:,2);

B=I(:,:,3);

d1=x1+x2;

d2=y1+y2;

[Y,X]=meshgrid(y1:d2,x1:d1);

Y=Y'; X=X';

r=zeros(1+y2,1+x2);

g=zeros(1+y2,1+x2);

b=zeros(1+y2,1+x2);

for m=1:size(r,1) for n=1:size(r,2) r(m,n)=R(Y(m,n),X(m,n)); g(m,n)=G(Y(m,n),X(m,n)); b(m,n)=B(Y(m,n),X(m,n));

end

end

R=uint8(r);

G=uint8(g);

B=uint8(b);

I3=cat(3,R,G,B);

%% jans

Lagi-lagi tidak ada yang istimewa dalam program di atas. Sehingga bisa disimpulkan bahwa dengan logika pemrograman biasa kita bisa membuat program crop sendiri dengan mudah. Waktu komputasi yang dibutuhkan juga tidak lama sehingga terbilang bisa diandalkan.

Dengan menggunakan gambar pinjaman dari seorang teman, maka program di atas kita ujicobakan yang menghasilkan

[image processing]

June 10, 2012

[image processing] June 10, 2012 [janshendry@gmail.com] Page 4
[image processing] June 10, 2012 [janshendry@gmail.com] Page 4

[image processing]

[image processing] June 10, 2012 Program ternyata dapat bekerja dengan baik. Anda bisa membandingkan hasilnya dengan

June 10, 2012

[image processing] June 10, 2012 Program ternyata dapat bekerja dengan baik. Anda bisa membandingkan hasilnya dengan

Program ternyata dapat bekerja dengan baik. Anda bisa membandingkan hasilnya dengan

menggunakan toolbox crop pada Matlab. Selamat mencoba

@ thanks