用matlab图像处理确定激光光斑的中心的详细过程和算法

用matlab图像处理确定激光光斑的中心的详细过程和算法,第1张

用matlab图像处理确定激光光斑的中心的详细过程和算法

个不难的:

- 图像预处理,自动阀值方法二值化,然后滤掉噪声点,得到比较干净的圆形光斑离散点集;

- 用以下这个程序拟合出离散点的圆,并找出圆心。

其中第一步的自动阀值可以用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小白急求大神相助,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/10140823.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存