leisurelywind 发表于 2007-7-11 09:44

Matlab 关于图像处理的求助

现在的问题是2个零件的图像对比,要求自动给出这个零件的好或坏,其中一个是标准件。目前需要比较圆度。有没有高人指点一下。

recbio 发表于 2007-7-11 21:54

理论上的办法,不知道是否有用:

可以用圆去拟合两个零件的轮廓。可以得到两个半径,还有半径的误差,以及最小二乘误差。

用标准件的半径和最小二乘误差以及半径的拟合误差可以估计另外一个零件的合格程度。

lz的圆度可以用拟合半径的误差估计。

当然,也可以用圆的全部弧的曲率半径的方差来估计。(这两个方法得到的结果应该一致)

leisurelywind 发表于 2007-7-16 10:33

多谢楼上,你能给我提供一些源代码吗,不胜感激.

recbio 发表于 2007-7-19 17:32

假如我们已经将图形变成2维灰度矩阵,如同我这里的例子,矩阵 A 和 B
用下面的语句得到的图如下
>>imagesc(A);colormap(gray);



>>figure;imagesc(B);colormap(gray);




>>=find(A>0);
可以得到A的轮廓的坐标;

>>=fminsearch(@(a)sum((a(1)-sqrt((a(2)-x).^2+(a(3)-y).^2)).^2 ), );
可以得到拟和的半径,圆心( ra )以及半径的方差(a );结果:

ra =149.9717256.0000256.0000
a =   24.7709

同样

>>=find(B>0);
>>=fminsearch(@(a)sum((a(1)-sqrt((a(2)-x).^2+(a(3)-y).^2)).^2 ), )
得到
rb = 149.9653259.1205259.1079
b =5.3074e+003

从结果看,半径一样都是 150。圆心偏移 (3.14,3.14)(这个是我们的设计值),主要是测试如果图像不是重合的,是否也可以有结果。

但是半径的方差24 -> 5307 说明第二个圆,不如第一个园 园。

至于多大可以取舍,要看你的实际数据了。

[ 本帖最后由 recbio 于 2007-7-19 18:38 编辑 ]
页: [1]
查看完整版本: Matlab 关于图像处理的求助