Cropping Image merupakan teknik pemotongan gambar yang digunakan untuk menentukan secara tepat bagian yang ingin dipotong dan diolah. Fungsi cropping pada gambar yaitu dapat menghilangkan bagian gambar yang dirasa tidak dipentingkan atau tidak sesuai dengan pesan yang disampaikan (point of interest) dalam pengolahan gambar.
langsung aja tkp gan...
pertama, agan bikin tampilan seperti ini dulu di GUI..,
kalau agan sudah bikin tampilan seperti itu, lalu agan tinggal masukan codingnya dibawah ini.
Ketikan coding dibawah ini pada bagian pushbutton1 (browse image) pada gambar.
function varargout =
FinalprojectCroping(varargin)
function
pushbutton1_Callback(hObject, eventdata, handles)
axes(handles.axes1)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
axes(handles.axes2)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
[filename,pathname]=uigetfile({'*.*'});
if isequal(filename,0)
return
else
Info =
imfinfo(fullfile(pathname,filename));
BitDepth = Info.BitDepth;
if BitDepth == 1
msgbox('Please insert RGB image or
Grayscale image')
return
end
Img = imread(fullfile(pathname,filename));
axes(handles.axes1)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
imshow(Img)
end
set(handles.radiobutton1,'Enable','on')
set(handles.radiobutton2,'Enable','on')
set(handles.radiobutton3,'Enable','on')
set(handles.radiobutton4,'Enable','on')
set(handles.radiobutton5,'Enable','on')
set(handles.pushbutton2,'Enable','on')
handles.Img = Img;
handles.BitDepth = BitDepth;
guidata(hObject, handles)
Ketikan coding dibawah ini pada bagian pushbutton2 (Crop) pada gambar.
% --- Executes on button
press in pushbutton2.
function
pushbutton2_Callback(hObject, eventdata, handles)
Img = handles.Img;
[m,n,~] = size(Img);
val1=get(handles.radiobutton1,'Value');
val2=get(handles.radiobutton2,'Value');
val3=get(handles.radiobutton3,'Value');
val4=get(handles.radiobutton4,'Value');
val5=get(handles.radiobutton5,'Value');
axes(handles.axes2)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
axes(handles.axes1)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
imshow(Img);
if val1 == 1
h = imrect(gca ,[n/2 m/2 0.2*n 0.2*m]);
wait(h);
mask = createMask(h);
elseif val2 == 1
h = imrect(gca,[n/2 m/2 0.2*m 0.2*m]);
setFixedAspectRatioMode(h,'true')
wait(h);
mask = createMask(h);
elseif val3 == 1
h = imellipse(gca,[n/2 m/2 0.2*m 0.2*m]);
setFixedAspectRatioMode(h,'true')
wait(h);
mask = createMask(h);
elseif val4 == 1
h = imellipse(gca,[n/2 m/2 0.2*n 0.2*m]);
wait(h);
mask = createMask(h);
elseif val5 == 1
h= impoly(gca);
wait(h);
mask = createMask(h);
end
[B,~] = bwboundaries(mask,'noholes');
for k = 1:length(B)
boundary = B{k};
axes(handles.axes1)
cla reset
set(gca,'XTick',[])
set(gca,'YTick',[])
imshow(Img);
hold on
plot(boundary(:,2), boundary(:,1), 'b', 'LineWidth', 2)
hold off
end
if handles.BitDepth == 8
Img(~mask) = 0;
[row,col] = find(mask==1);
h_Gray = imcrop(Img,[min(col) min(row) max(col)-min(col)
max(row)-min(row)]);
axes(handles.axes2)
imshow(h_Gray);
else
R = Img(:,:,1);
G = Img(:,:,2);
B = Img(:,:,3);
R(~mask) = 0;
G(~mask) = 0;
B(~mask) = 0;
RGB = cat(3,R,G,B);
[row,col] = find(mask==1);
h_RGB = imcrop(RGB,[min(col) min(row)
max(col)-min(col) max(row)-min(row)]);
axes(handles.axes2)
imshow(h_RGB);
end
Ketikan coding dibawah ini pada bagian radiobutton1 (Rectangle) pada gambar.
% --- Executes on button
press in radiobutton1.
function
radiobutton1_Callback(hObject, eventdata, handles)
set(handles.radiobutton1,'Value',1)
set(handles.radiobutton2,'Value',0)
set(handles.radiobutton3,'Value',0)
set(handles.radiobutton4,'Value',0)
set(handles.radiobutton5,'Value',0)
Ketikan coding dibawah ini pada bagian pushbutton2 (Square) pada gambar.
% --- Executes on button
press in radiobutton2.
function
radiobutton2_Callback(hObject, eventdata, handles)
set(handles.radiobutton1,'Value',0)
set(handles.radiobutton2,'Value',1)
set(handles.radiobutton3,'Value',0)
set(handles.radiobutton4,'Value',0)
set(handles.radiobutton5,'Value',0)
Ketikan coding dibawah ini pada bagian pushbutton3 (Circle) pada gambar.
% --- Executes on button
press in radiobutton3.
function
radiobutton3_Callback(hObject, eventdata, handles)
set(handles.radiobutton1,'Value',0)
set(handles.radiobutton2,'Value',0)
set(handles.radiobutton3,'Value',1)
set(handles.radiobutton4,'Value',0)
set(handles.radiobutton5,'Value',0)
Ketikan coding dibawah ini pada bagian pushbutton4 (Ellipse) pada gambar.
% --- Executes on button
press in radiobutton4.
function
radiobutton4_Callback(hObject, eventdata, handles)
set(handles.radiobutton1,'Value',0)
set(handles.radiobutton2,'Value',0)
set(handles.radiobutton3,'Value',0)
set(handles.radiobutton4,'Value',1)
set(handles.radiobutton5,'Value',0)
Ketikan coding dibawah ini pada bagian pushbutton5 (Polygon) pada gambar.
% --- Executes on button
press in radiobutton5.
function
radiobutton5_Callback(hObject, eventdata, handles)
set(handles.radiobutton1,'Value',0)
set(handles.radiobutton2,'Value',0)
set(handles.radiobutton3,'Value',0)
set(handles.radiobutton4,'Value',0)
set(handles.radiobutton5,'Value',1)
Ketikan coding dibawah ini pada bagian pushbutton5 (Reset) pada gambar.
% --- Executes on button
press in pushbutton5.
function
pushbutton5_Callback(hObject, eventdata, handles)
cla(handles.axes2,'reset');
cla(handles.axes1,'reset');
Ketikan coding dibawah ini pada bagian pushbutton6 (Blur) pada gambar.
% --- Executes on button
press in pushbutton6.
function
pushbutton6_Callback(hObject, eventdata, handles)
gambarblur = getimage
(handles.axes1);
G = fspecial ('motion',45,70);
blur = imfilter (gambarblur, G, 'replicate');
axes (handles.axes2);
imshow (blur); title ('Proses gambar
blur');
Ketikan coding dibawah ini pada bagian pushbutton7 (Keluar) pada gambar.
% --- Executes on button
press in pushbutton7.
function
pushbutton7_Callback(hObject, eventdata, handles)
selection = questdlg(['Tutup '
get(handles.figure1,'Name') '?'],...
['Tutup ' get(handles.figure1,'Name') '...'],...
'Ya','Tidak','Ya');
if strcmp(selection,'Tidak')
return;
end
delete(handles.figure1)
Ketikan coding dibawah ini pada bagian slider3 (Rotasi) pada gambar.
% --- Executes on slider
movement.
function
slider3_Callback(hObject, eventdata, handles)
nilai_slider =
get(handles.slider3,'Value');
handles.nilai_slider=round(nilai_slider);
guidata(hObject,handles);
set(handles.edit5,'String',handles.nilai_slider);
hasil =
imrotate(handles.Img,handles.nilai_slider,'bilinear','crop');
handles.hasil=hasil;
guidata(hObject,handles);
axes(handles.axes2);
imshow(hasil); title ('Hasil Rotasi
Gambar Asli');
Ketikan coding dibawah ini pada bagian slider4 (Blur) pada gambar.
% --- Executes on slider
movement.
function
slider4_Callback(hObject, eventdata, handles)
nilai_slider = get(handles.slider4,'Value');
handles.nilai_slider=round(nilai_slider);
guidata(hObject,handles);
set(handles.edit4,'String',handles.nilai_slider);
hasil =
blurVal(handles.Img,handles.nilai_slider,'bilinear','crop');
handles.hasil=hasil;
guidata(hObject,handles);
axes(handles.axes2);
imshow(hasil); title ('Hasil Blur');
Ketikan coding dibawah ini pada bagian pushbutton8 (Simpan) pada gambar.
% --- Executes on button
press in pushbutton8.
function
pushbutton8_Callback(hObject, eventdata, handles)
[nama_file_simpan,
path_simpan]=uiputfile(...
{'*.bmp','file citra
(*.bmp)';
'*.bmp','citra bmp
(*.bmp)';...
'*.*','Semua File
(*.*)'},...
'Menyimpan Citra Hasil Rotasi');
imwrite(handles.hasil,fullfile(path_simpan,nama_file_simpan),'BMP');
Download disini Cropping Image
cukup segitu penjelasannya, selamat mencoba semoga bermanfaat dan berhasil! :)

Tidak ada komentar:
Posting Komentar