matlab对边界跟踪实现bwtraceboundary函数使用解析

边界跟踪实现DIY
1、简单来讲bwtraceboundary函数使用
通过顺序找出边缘点来跟踪边界的。若图象是二值图象或图象中不同区域具有不同的象素值,但每个区域内的象素值是相同的,则如下算法可完成基于4连通或8连通区域的轮廓跟踪。

也就是说,bwtraceboundary-二进制图像中的跟踪对象,该MATLAB函数以二进制图像BW跟踪对象的轮廓。
函数使用方法如下:

B = bwtraceboundary(BW,P,fstep)
B = bwtraceboundary(BW,P,fstep,conn)
B = bwtraceboundary(BW,P,fstep,conn,m,dir)

另请参阅 bwboundaries, bwperim

B = bwtraceboundary(BW,P,fstep)跟踪二进制图像BW中对象的轮廓。 非零像素属于对象,零值像素构成背景。 P指定对象边界上要开始跟踪的点的行和列坐标。 fstep指定连接到P的下一个对象像素的初始搜索方向。B保留该区域的边界像素的行和列坐标。

B = bwtraceboundary(BW,P,fstep,conn)跟踪边界,其中conn指定所需的连接性。

B = bwtraceboundary(BW,P,fstep,conn,m,dir)指定m(要提取的最大边界像素数)和dir(跟踪边界的方向)。 默认情况下,bwtraceboundary标识边界上的所有像素。
源码如下方案:

clear all;clc;close all;
I=imread('W:\PY\PY\temmm\mnsdf (7).jpg'); %读取当前路径下的图片
figure
imshow(I);
title('原始图像');
I1=rgb2gray(I); %将彩色图像转化灰度图像
threshold=graythresh(I1);%计算将灰度图像转化为二值图像所需的门限
BW=im2bw(I1, threshold);%将灰度图像转化为二值图像
figure
imshow(BW);
title('二值图像');
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(I1);
hold on;
plot(contour(:,2),contour(:,1), 'g','LineWidth' ,2);
title('边界跟踪图像');

效果如图:在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
换张图,效果如下:
在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海宝7号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值