Федеральное государственное автономное образовательное учреждение
высшего образования
«БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»
(НИУ «БелГУ»)
Институт инженерных технологий и естественных наук
Кафедра прикладной информатики и информационных технологий
Отчет по лабораторной работе №7
Тема работы: Морфологическая обработка изображений
студента очного отделения
3 курса 07001504 группы
Богомазова Александра Михайловича
Проверил:
Старший преподаватель
Болгова Евгения Витальевна
БЕЛГОРОД 2017
Цель работы
Целью лабораторной работы является получение навыков самостоятельной алгоритмической и программной реализации на компьютерной технике методов морфологической обработки изображений в MatLab.
imdilate

imerode

imopen

imclose

bwhitmiss

bwmorph

Центр массы

Размыкание реконструкцией

imfill

imclearborder

размыкание и замыкание

«верх шляпы»

гранулометрия

реконструкция

function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global A;
global B;
C=[ 0 1 0; 1 1 1; 0 1 0 ];
B=imdilate(A,C);
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
global A;
global B;
se=strel('line', 11, 90);
B=imerode(A, se);
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton4.
function pushbutton4_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton4 (see GCBO)
global A;
global B;
se=strel('line', 11, 90);
B=imopen(A, se);
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton5.
function pushbutton5_Callback(hObject, eventdata, handles)
global A;
global B;
se=strel('line', 11, 90);
B=imopen(A, se);
B = imclose(B, se);
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton6.
function pushbutton6_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton6 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global A;
global B;
B1 = [0 1 0; 1 1 1; 0 1 0];
B2 = [1 0 1; 0 0 0; 1 0 1];
B = bwhitmiss ( A , B1 , B2 );
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton7.
function pushbutton7_Callback(hObject, eventdata, handles)
global B;
B = bwmorph ( A , 'thin' , Inf ) ;
B = bwmorph ( B , 'skel' , Inf ) ;
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton8.
function pushbutton8_Callback(hObject, eventdata, handles)
global A;
global B;
B = A;
[ L , n ] = bwlabel ( B ) ;
axes(handles.axes2)
imshow ( B )
hold on
for k = 1: n
[ r , c ] = find ( L == k ) ;
rbar = mean ( r ) ;
cbar = mean ( c ) ;
plot ( cbar , rbar , 'Marker' , 'o' , 'MarkerEdgeColor' , 'k' , 'MarkerFaceColor' , 'k' , 'MarkerSize' , 10 )
plot ( cbar , rbar , 'Marker' , '*' , 'MarkerEdgeColor' , 'w' )
end
% --- Executes on button press in pushbutton9.
function pushbutton9_Callback(hObject, eventdata, handles)
global A;
global B;
B = imerode ( A , ones ( 51, 1 ) ) ;
B = imreconstruct (B, A) ;
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton10.
function pushbutton10_Callback(hObject, eventdata, handles)
global A;
global B;
B = imfill ( A , 'holes' );
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton11.
function pushbutton11_Callback(hObject, eventdata, handles)
global A;
global B;
B = imclearborder ( A , 8 );
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton12.
function pushbutton12_Callback(hObject, eventdata, handles)
global A;
global B;
se = strel ( 'disk', 5 ) ;
A = imopen ( A , se ) ;
B = imclose ( B , se ) ;
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton13.
function pushbutton13_Callback(hObject, eventdata, handles)
global A;
global B;
se = strel ( 'disk' , 10 ) ;
B = imopen ( A, se );
B = imsubtract ( imadd ( B , imtophat ( B , se ) ) , imtophat ( B , se ) ) ;
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
% --- Executes on button press in pushbutton14.
function pushbutton14_Callback(hObject, eventdata, handles)
global A;
sumpixels = zeros ( 1 , 36 ) ;
for k = 0:35
se = strel ( 'disk' , k ) ;
fo = imopen ( A , se ) ;
sumpixels ( k + 1 ) = sum ( fo (:) ) ;
end
axes(handles.axes2);
plot ( 0:35 , sumpixels ) , zlabel ( 'k' ) , ylabel ( 'Surface area' )
% --- Executes on button press in pushbutton15.
function pushbutton15_Callback(hObject, eventdata, handles)
global A;
global B;
f = A;
f_obr = imreconstruct ( imerode ( f , ones ( 1 , 71 ) ) , f ) ;
% f_o = imopen ( f , ones ( 1 , 71 ) ) ;
f_thr = imsubtract ( f , f_obr );
% f_th = imsubtract ( f , f_o );
g_obr = imreconstruct ( imerode ( f_thr , ones ( 1 , 11 ) ) , f_thr ) ;
g_obrd = imdilate ( g_obr , ones ( 1 , 21 ) ) ;
f2 = imreconstruct ( min ( g_obrd , f_thr ) , f_thr ) ;
B = f2;
[N1,N2]=size(B);
axes(handles.axes2)
imshow(B, []);
title('Результат преобразования');
12