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

相关文章

JAVA实现Token自动续期机制的示例代码

《JAVA实现Token自动续期机制的示例代码》本文主要介绍了JAVA实现Token自动续期机制的示例代码,通过动态调整会话生命周期平衡安全性与用户体验,解决固定有效期Token带来的风险与不便,感兴... 目录1. 固定有效期Token的内在局限性2. 自动续期机制:兼顾安全与体验的解决方案3. 总结PS

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

linux部署NFS和autofs自动挂载实现过程

《linux部署NFS和autofs自动挂载实现过程》文章介绍了NFS(网络文件系统)和Autofs的原理与配置,NFS通过RPC实现跨系统文件共享,需配置/etc/exports和nfs.conf,... 目录(一)NFS1. 什么是NFS2.NFS守护进程3.RPC服务4. 原理5. 部署5.1安装NF

python库pydantic数据验证和设置管理库的用途

《python库pydantic数据验证和设置管理库的用途》pydantic是一个用于数据验证和设置管理的Python库,它主要利用Python类型注解来定义数据模型的结构和验证规则,本文给大家介绍p... 目录主要特点和用途:Field数值验证参数总结pydantic 是一个让你能够 confidentl

MyBatis Plus实现时间字段自动填充的完整方案

《MyBatisPlus实现时间字段自动填充的完整方案》在日常开发中,我们经常需要记录数据的创建时间和更新时间,传统的做法是在每次插入或更新操作时手动设置这些时间字段,这种方式不仅繁琐,还容易遗漏,... 目录前言解决目标技术栈实现步骤1. 实体类注解配置2. 创建元数据处理器3. 服务层代码优化填充机制详

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

基于Redis自动过期的流处理暂停机制

《基于Redis自动过期的流处理暂停机制》基于Redis自动过期的流处理暂停机制是一种高效、可靠且易于实现的解决方案,防止延时过大的数据影响实时处理自动恢复处理,以避免积压的数据影响实时性,下面就来详... 目录核心思路代码实现1. 初始化Redis连接和键前缀2. 接收数据时检查暂停状态3. 检测到延时过

Python中高级文本模式匹配与查找技术指南

《Python中高级文本模式匹配与查找技术指南》文本处理是编程世界的永恒主题,而模式匹配则是文本处理的基石,本文将深度剖析PythonCookbook中的核心匹配技术,并结合实际工程案例展示其应用,希... 目录引言一、基础工具:字符串方法与序列匹配二、正则表达式:模式匹配的瑞士军刀2.1 re模块核心AP

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1