本文主要是介绍Halcon自动对焦技术验证,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前言
由于相当多的产品是具备封装好的软件和机械机构,不能在人为的控制相机的调焦。与此同时,使用的客户有可能为工厂的普工和技术工程师,所以在对客户的培训上有较大的难度,使用一个可以判断当前图像清晰程度的程序可以帮助完成相机的自动对焦。
1:程序总结
Result_Deviation:=[]
Image_Max:=0
gen_empty_obj (OKImage)
Index_ok:=0
list_files ('C:/Users/1/Desktop/work/2.22自动对焦/正光', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1read_image (Image, ImageFiles[Index])*裁剪所选中的区域gen_rectangle1 (ROI_0, 370.73, 653.962, 593.473, 876.586)reduce_domain (Image, ROI_0, ImageReduced)crop_domain (ImageReduced, ImagePart)*可行方案1get_image_size (ImagePart, Width, Height)crop_part(ImagePart, ImagePart00,0, 0, Width-1, Height-1)crop_part(ImagePart, ImagePart01,0, 1, Width-1, Height-1)crop_part(ImagePart, ImagePart10,1, 0, Width-1, Height-1)convert_image_type(ImagePart00, ImagePart00, 'real')convert_image_type(ImagePart01, ImagePart01, 'real')convert_image_type(ImagePart10, ImagePart10, 'real')sub_image(ImagePart10, ImagePart00, ImageSub1, 1, 0)mult_image(ImageSub1, ImageSub1, ImageResult1,1, 0)sub_image(ImagePart01, ImagePart00, ImageSub2, 1, 0)mult_image(ImageSub2, ImageSub2, ImageResult2,1, 0)add_image(ImageResult1, ImageResult2, ImageResult, 1, 0)intensity(ImageResult, ImageResult2, Value, Deviation)*创建灰度偏差数组Result_Deviation:=[Result_Deviation,Deviation]*选取灰度偏差值最大的图像if (Image_Max<Deviation)Image_Max:=DeviationOKImage:=Image*输出标准差最大的图像Index_ok:=Indexendif
endfor
*显示结果图像
dev_display (OKImage)
stop ()
计算公式:
2:程序分析
2.1采集图像
通常情况下自动对焦可以通过软件控制Z向的伺服轴,以一个指定的距离间隔上升,在每次上升结束后使用相机拍一次照片并返回图像和当前工作的伺服距离。
或者可以采用电动变焦的镜头或者液态镜头,同样也是不同焦距间隔下拍照。
一般伺服移动可以使用1mm为单位,焦距移动以0.5mm为单位。
2.2导入程序图像
在程序中需要预先设定对焦的ROI区域,由于产品通常并不是一个平面,包含高低部分,可以对需要对焦的边缘进行ROI的提取(尤为注意,需要一个灰度对比度大的边缘区域,才可以有效的实现效果)
2.3运行计算程序和效果
每张图片的结果都会返回一个所选中区域的灰度标准差值,当灰度标准差越大时,代表区域锐利度越大,代表图像越清晰。当标准差越小时。代表区域锐利度越小,代表图像越模糊。
注意事项:1:所选中的ROI区域具有不同高度的多条边缘时会出现计算结果异常的情况,需要选中的ROI框中有且仅有一个高度的边缘。
3:图像集验证
这篇关于Halcon自动对焦技术验证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!