matlab中如何把边缘检测出来的图像进行直线拟合

matlab中如何把边缘检测出来的图像进行直线拟合,第1张

用sobel,canny算子都可以提取出边缘

提取出边缘再进行im2bw二值化,得到二值化后的0,1图像

1的图像本质上是由离散的点构成,将离散的点的x,y坐标找出,

可以用find命令,例如[x,y]=find(I==1)

最后用cftool曲线拟合工具箱,拟合出所有的x,y的坐标点

大致这么个思路,往这方面使劲,基本上就可以搞定.

% load image

I = imread('circle.png')

I = rgb2gray(I)

BW = im2bw(I)

% find white points

[Y, X] = find(BW)

% circle fit

H = [X, Y, ones(size(X))]

B = -(X.^2+Y.^2)

P = H\B

% circle function:

% x^2+y^2+P(1)*x+P(2)*y+P(3)=0

最后得到了圆的一般方程,自己整理成标准方程就可以得到圆心和半径了。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存