
个不难的:
- 图像预处理,自动阀值方法二值化,然后滤掉噪声点,得到比较干净的圆形光斑离散点集;
- 用以下这个程序拟合出离散点的圆,并找出圆心。
其中第一步的自动阀值可以用otsu函数(otsu method,大津法),其余都很基础;第二步的程序如果看不懂,可以进一步看看参考资料连接。
function [xc,yc,R,a] = circfit(x,y)
%
% [xc yx R] = circfit(x,y)
%
% fits a circle in x,y plane in a more accurate
% (less prone to ill condition )
% procedure than circfit2 but using more memory
% x,y are column vector where (x(i),y(i)) is a measured point
%
% result is center point (yc,xc) and radius R
% an optional output is the vector of coeficient a
% describing the circle's equation
%
% x^2+y^2+a(1)x+a(2)y+a(3)=0
%
% By: Izhak bucher 25/oct /1991,
x=x(:); y=y(:);
a=[x y ones(size(x))]\[-(x^2+y^2)];
xc = -5a(1);
yc = -5a(2);
R = sqrt((a(1)^2+a(2)^2)/4-a(3));
参考资料:
朋友,我觉得这个似乎有点问题,你这些点没有质量重心法应该是:比如说求重心的x坐标,你把每个点的重量乘以他们的x坐标,然后求和,求和之后除以所有点的质量之和~~ 有了正确的算法,实现他就是一个很简单的事了~~
#include "mathh"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{ x=sqrt(i+100); /x为加上100后开方后的结果/
y=sqrt(i+268); /y为再加上168后开方后的结果/
if(xx==i+100&&yy==i+268)/如果一个数的平方根的平方等于该数,这说明此数是完全平方数/
printf("\n%ld\n",i);
}
}
以上就是关于用matlab图像处理确定激光光斑的中心的详细过程和算法全部的内容,包括:用matlab图像处理确定激光光斑的中心的详细过程和算法、怎么用matlab求图像的重心、MATLAB中如何画图像中心线,即图像轮廓上的所有点到直线的距离最短,MATLAB小白急求大神相助,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)