Step1: 显示选择的图像 (图1)
global RGB; [filename, pathname] = uigetfile({'*.bmp';'*.jpg';'*.gif'},'choose image pathway'); str = [pathname filename]; if (filename~=0) RGB=imread(str); axes(handles.axes1) imshow(RGB) else %empty file clear; end
Step2: 对选择图像二值化(图2)
global RGB; global bw; bw=imbinarize(RGB,'global'); %二值化 axes(handles.axes2) imshow(bw)
Step3: 去除噪点并取反(图3)
global bw; global bwf_open; bw_open=bwareaopen(bw,70000); %去掉连通像素小于90000的区域;去除噪点 bwf_open = ~ bw_open ;% 图像取反 axes(handles.axes3) imshow(bwf_open)
Step4: 膨胀运算 (图4)
global bwf_open; se = strel('disk',11); img_src = imerode(bwf_open,se); axes(handles.axes4) imshow(img_src)
Step5: 计算边界定位(图5)
global img_src; global RGB; [B,L] = bwboundaries(img_src); axes(handles.axes5) imshow(RGB); hold on; for k = 1:length(B) boundary = B{k}; x = boundary(:,2); % 黑色区域的x轴坐标 y = boundary(:,1); % 黑色区域的y轴坐标 if y < 450 % 防止把边框圈住了 plot(x,y,'g','LineWidth',2); end end