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使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S