Halcon自动对焦技术验证

2024-03-09 16:04

本文主要是介绍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自动对焦技术验证的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/791186

相关文章

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

shell脚本自动删除30天以前的文件(最新推荐)

《shell脚本自动删除30天以前的文件(最新推荐)》该文章介绍了如何使用Shell脚本自动删除指定目录下30天以前的文件,并通过crontab设置定时任务,此外,还提供了如何使用Shell脚本删除E... 目录shell脚本自动删除30天以前的文件linux按照日期定时删除elasticsearch索引s

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

C语言中自动与强制转换全解析

《C语言中自动与强制转换全解析》在编写C程序时,类型转换是确保数据正确性和一致性的关键环节,无论是隐式转换还是显式转换,都各有特点和应用场景,本文将详细探讨C语言中的类型转换机制,帮助您更好地理解并在... 目录类型转换的重要性自动类型转换(隐式转换)强制类型转换(显式转换)常见错误与注意事项总结与建议类型

IDEA如何让控制台自动换行

《IDEA如何让控制台自动换行》本文介绍了如何在IDEA中设置控制台自动换行,具体步骤为:File-Settings-Editor-General-Console,然后勾选Usesoftwrapsin... 目录IDEA如何让控制台自http://www.chinasem.cn动换行操作流http://www

vscode保存代码时自动eslint格式化图文教程

《vscode保存代码时自动eslint格式化图文教程》:本文主要介绍vscode保存代码时自动eslint格式化的相关资料,包括打开设置文件并复制特定内容,文中通过代码介绍的非常详细,需要的朋友... 目录1、点击设置2、选择远程--->点击右上角打开设置3、会弹出settings.json文件,将以下内

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne