根据参考资料[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),即线性的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)