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

[janshendry@gmail.com]

Page 1

[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 mengulangulang 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

[janshendry@gmail.com]

Page 2

[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

[janshendry@gmail.com]

Page 3

[image processing]

June 10, 2012

[janshendry@gmail.com]

Page 4

[image processing]

June 10, 2012

Program ternyata dapat bekerja dengan baik. Anda bisa membandingkan hasilnya dengan menggunakan toolbox crop pada Matlab. Selamat mencoba... @ thanks...

[janshendry@gmail.com]

Page 5

Anda mungkin juga menyukai