边界跟踪与直线检测
示例一:
clc
clear all;
rgb=imread('001.png');
figure,imshow(rgb);
I=rgb2gray(rgb);
threshold=graythresh(I);
BW=im2bw(I,threshold);
figure,imshow(BW);
dim=size(BW);
col=round(dim(2)/2)-90;
row=find(BW(:,col),1);
connectivity=8;
num_points=180;
contour=bwtraceboundary(BW,[row,col],'N',connectivity,num_points);
figure,imshow(rgb);
hold on;
plot(contour(:,2),contour(:,1),'g','LineWidth
示例二:
rgb=imread('001.png');
I=rgb2gray(rgb);
threshold=graythresh(I);
BW=im2bw(I,threshold);
figure,imshow(BW);
[B,L]=bwboundaries(BW,'noholes');
imshow(label2rgb(L,@jet,[.5 .5 .5]));
hold on;
for k=1:length(B);
boundary=B(k);
plot(boundary(:,2),boundary(:,1),'w','LineWidth',2);
end
示例三:
rgb=imread('001.png');
I=rgb2gray(rgb);
threshold=graythresh(I);
BW=im2bw(I,threshold);
figure,imshow(BW);
B=bwboundaries(BW);
C=B{1,1};
figure
plot(C(:,2),C(:,1))
set(gca,'YDir','reverse')