Senin, 08 April 2013

[Comp Visi] Praktikum 4 - Matriks Affine 1

Petunjuk Praktikum
1. Memasukkan Citra: Memanggil citra tertentu yang akan ditransformasikan
2. Transformasi Affine : Menghitung matriks transformasi dari parameter-parameter transformasi yang diinputkan secara spesifik oleh user, dan kemudian dijadikan parameter untuk memanggil citra
3. Simpan citra : menyimpan citra hasil transformasi

Fungsi-Fungsi *nb: sebaiknya dicopy ke notepad terlebih dahulu

1. Memasukkan citra
function Load_image_callback(hObject,eventdata, handles)
global gg gc;
h=guidata(gcbo);
set(h.message_text,'String',''); %Hapus pesan
gg=gg+2;
h.image_filename=1;
h.image_pathname=1;
%panggil file citra dan nama path
[filename, pathname] = uigetfile ( ...
{'*.bmp;*.tif.*.jpg;*.pcx;*.png;*.hdf;*.xwd;*.ras;*.pbm;*.pgm; *.ppm; *.pnm', 'All MATLAB SUPPORTED IMAGE Files
(*.bmp,*.tif,*.jpg,*.pcx,*.png,*.hdf,*.xwd,*.ras,*.pbm,*.pgm,*.ppm,*.pnm)'} ..., 'Pick a file');
if filename ~=0
gg=1;
h.gg=1;
h.image_filename=filename;    %nama file citra
h.image_filename=pathname;    %nama file citra
set(h.Showaxes,'visible','off');
axes(h.axes1);
set(h.figure1_title,'Visible','on');
image_1=imread([pathname filename]);    %panggil citra
imshow(image_1);    %tampilkan citra yang dipanggil
h.image_1=image_1;
set(h.axes2,'Visible','off');
axes(h.axes2);
cla;
set(h.figure2_title,'Visible','off');
gc=0;
h.axis12=0;
guidata(gcbo,h);
end

++++++

2.Transformasi Affine
function Transform_Callback(hObject, eventdata, handles)
global gg gc;gc=0;
h=guidata(gcbo);
if gg~=2
h=guidata(gcbo);
image_1=h.image_1; %dapatkan citra 1
hb(1)=num_check(h.rot); %rotasi
hb(2)=num_check(h.xscale); % Skala dalam sumbu-x
hb(3)=num_check(h.yscale); % Skala dalam sumbu-y
hb(4)=num_check(h.xshear); % Shear
hb(5)=num_check(h.yshear);
hc=sum(hb);
switch hc
case=0
a=str2num(get(h.xscale,'String'));
b=str2num(get(h.xshear,'String'));
c=str2num(get(h.yshear,'String'));
d=str2num(get(h.yscale,'String'));
th=str2num (get(h.rot,'String'));    %2*pi/10;
ch=get(h.deg,'Value');
swtich ch
case 0
th=th;
otherwise
th=th*pi/180;;
end
k=1;
TT=k*[cos(th) -sin(th); sin(th) cos(th)\*[a b; c d];
TTT=[ 1 0 0 ; 0 1 0 ; 0 0 1];
TTT(1:2,1:2)=TT;
set(h.message_text,'String','Lagi proses transformasi...tunggu');
tform=marketform('affine',TTT);
[image_2] = imtransform(image_1,tform);
h.image_2=image_2;
axes(h.axes2);
set(h.figure2_title,'Visible','on');
imshow(image_2,[]);
set(h.message_text,'String','Done');
set(h.Showaxes,'Visible'.'on');
guidata(gcbo,h);
otherwise
set(h.message_text,'String','Invalid value: Masukkan hanya bilangan real');
end
end

++++++

3.Simpan citra : Menyimpan citra hasil transformasi
function Save_image_Callback(hObject, eventdata, handles)
global gg gc;h=guidata(gcbo);
set(h.message_text,'String','');
if gc~=0
dot='.';pathname=h.image_pathname;
[filename,pathname]=uiputfile('*,*','Simpan hasil Transformasi');
if filename~=0
cobalagi=find(filename==dot);
if ~isempty(cobalagi)
image_ex=filename(cobalagi+1:end);
valid_ex=['BMP';'TIF';'JPG';'PCX';'PNG';'HDF';'XWD';'RAS';'PBM';'PGM';'PPM';'PNM';];
p=['\<' image_ex '\>'];
g=regexpi(valid_ex,p);
b=cell2mat(g);
if b~=0 & length(image_ex)==3
CMap=colormap(h.axes1);
h.savedimage_filename=filename;
h,savedimage_pathname=pathname;
imwrite(h.image_2,CMap,[pathname filename]);
savedto=['Simpan citra ke: ' pathname filename];
set(h.message_text,'String',savedto);
else
set(h.message_text,'String','Invalid file extension: citra tidak disimpan, gunakan salah satu ekstensi berikut, BMP TIF JPG PCX PNG HDF XWD RAS PBM PGM PPM PNM');
end
else
set(h.message_text,'String','Empty file extension: citra tidak disimpan,gunakan salah satu ekstensi berikut, BMP TIF JPG PCX PNG HDF XWD RAS PBM PGM PPM PNM');
end
end
end

Tidak ada komentar: