如何用Matlab对二值图像进行矩形轮廓提取

如何用Matlab对二值图像进行矩形轮廓提取,第1张

1 bwperim

根据参考资料[2]的提示,可以使用bwperim()函数进行轮廓提取,具体代码如下:

%读取原图

im = imread( filepath )

imshow(im)

title('原图')

% 转二值图像

bw = im2bw( im )

%轮廓提取

contour = bwperim(bw)

figure

imshow(contour)

title('轮廓')

原图和所提取的轮廓分别如图1和图2所示。

2 edge

可以借助edge()函数进行边界检测,算子可以选择canny,soble等等。具体代码如下:

%读取原图

im = imread( filepath )

imshow(im)

title('原图')

% 转二值图像

bw = im2bw( im )

% 边界检测

contour = edge(bw ,'canny')

figure

imshow(contour)

title('边界')

1 随机选取k个中心点

2 遍历所有数据,将每个数据划分到最近的中心点中

3 计算每个聚类的平均值,并作为新的中心点

4 重复2-3,直到这k个中线点不再变化(收敛了),或执行了足够多的迭代

时间复杂度:O(I*n*k*m)

空间复杂度:O(n*m)

其中m为每个元素字段个数,n为数据量,I为跌打个数。一般I,k,m均可认为是常量,所以时间和空间复杂度可以简化为O(n),即线性的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12126680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存