
clear
R=0.1
lambda=1.064e-3
k=2*pi/lambda
z=1.0e3
xmax=8*1.22*lambda/2/R*z
x=linspace(-xmax,xmax,200)
y=x
[x,y]=meshgrid(x,y)
IF=sin(k*x*R/z).ˆ2.*sin(k*y*R/z).ˆ2./(k*x/2/z).ˆ2./(k*y/2/z).ˆ2/lambdaˆ2/zˆ2
surf(x,y,IF.ˆ(1/2))
colormap(’hot’)
axis equal
shading interp
用matlab图像处理确定激光光斑的中心的详细过程和算法个不难的:-图像预处理,自动阀值方法二值化,然后滤掉噪声点,得到比较干净的圆形光斑离散点集;-用以下这个程序拟合出离散点的圆,并找出圆心。其中第一步的自动阀值可以用otsu函数(otsumethod,大津法),其余都很基础;第二步的程序如果看不懂,可以进一步看看参考资料连接。function[xc,yc,R,a]=circfit(x,y)%%[xcyxR]=circfit(x,y)%%fitsacircleinx,yplaneinamoreaccurate%(lesspronetoillcondition)%procedurethancircfit2butusingmorememory%x,yarecolumnvectorwhere(x(i),y(i))isameasuredpoint%%resultiscenterpoint(yc,xc)andradiusR%anoptionaloutputisthevectorofcoeficienta%describingthecircle'sequation%%x^2+y^2+a(1)*x+a(2)*y+a(3)=0%%By:Izhakbucher25/oct/1991,x=x(:)y=y(:)a=[xyones(size(x))]\[-(x.^2+y.^2)]xc=-.5*a(1)yc=-.5*a(2)R=sqrt((a(1)^2+a(2)^2)/4-a(3))参考资料:欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)