halcon自动对焦算法

1、介绍

图像清晰度是衡量图像质量的一个重要指标,对于相机来说,其一般工作在无参考图像的模式下,所以在拍照时需要进行对焦的控制。对焦不准确,图像就会变得比较模糊不清晰。相机对焦时通过一些清晰度评判指标,控制镜头与CCD的距离,使图像成像清晰。一般对焦时有一个调整的过程,图像从模糊到清晰,再到模糊,确定清晰度峰值,再最终到达最清晰的位置。

常见的图像清晰度评价一般都是基于梯度的方法,本文将介绍五种简单的评价指标,分别是Brenner梯度法、Tenegrad梯度法、laplace梯度法、方差法、能量梯度法。

2、Halcon代码

①、Tenegrad函数
在这里插入图片描述

//Tenegrad梯度法
sobel_amp(Image, EdgeAmplitude, 'sum_sqrt', 3)
min_max_gray(EdgeAmplitude, EdgeAmplitude, 0, Min, Max, Range)
threshold(EdgeAmplitude, Region1, 20, 255)
region_to_bin(Region1, BinImage, 1, 0, Width, Height)
mult_image(EdgeAmplitude, BinImage, ImageResult4, 1, 0)
mult_image(ImageResult4, ImageResult4, ImageResult, 1, 0)
intensity(ImageResult, ImageResult, Value, Deviation)

②、方差函数
在这里插入图片描述

//方差法
region_to_mean(ImageReduced, Image, ImageMean)
convert_image_type(ImageMean, ImageMean, 'real')
convert_image_type(Image, Image, 'real')
sub_image(Image, ImageMean, ImageSub, 1, 0)
mult_image(ImageSub, ImageSub, ImageResult, 1, 0)
intensity(ImageResult, ImageResult, Value, Deviation)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

③、能量函数
在这里插入图片描述
在这里插入图片描述

//能量梯度函数
crop_part(Image, ImagePart00, 0, 0, Width-1, Height-1)
crop_part(Image, ImagePart01, 0, 1, Width-1, Height-1)
crop_part(Image, ImagePart10, 1, 0, Width-1, Height-1)
convert_image_type(ImagePart00, ImagePart00, 'real')
convert_image_type(ImagePart10, ImagePart10, 'real')
convert_image_type(ImagePart01, ImagePart01, '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, ImageResult, Value, Deviation)

④、Brenner函数
在这里插入图片描述

//Brenner梯度法
crop_part(Image, ImagePart00, 0, 0, Width, Height-2)
convert_image_type(ImagePart00, ImagePart00, 'real')
crop_part(Image, ImagePart20, 2, 0, Width, Height-2)
convert_image_type(ImagePart20, ImagePart20, 'real')
sub_image(ImagePart20, ImagePart00, ImageSub, 1, 0)
mult_image(ImageSub, ImageSub, ImageResult, 1, 0)
intensity(ImageResult, ImageResult, Value, Deviation)

⑤、Laplace函数
在这里插入图片描述

//拉普拉斯梯度函数
laplace(Image, ImageLaplace4, 'signed', 3, 'n_4')
laplace(Image, ImageLaplace8, 'signed', 3, 'n_8')
add_image(ImageLaplace4, ImageLaplace4, ImageResult1, 1, 0)
add_image(ImageLaplace4, ImageResult1, ImageResult1, 1, 0)
add_image(ImageLaplace8, ImageResult1, ImageResult1, 1, 0)
mult_image(ImageResult1, ImageResult1, ImageResult, 1, 0)
intensity(ImageResult, ImageResult, Value, Deviation)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/254216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML学习笔记06-连接

HTML超链接 HTML使用标签<a>来设置文本超链接。 超链接可以是文字&#xff0c;也可以是图片&#xff0c;点击这些内容跳转到新的文档或当前文档的某个部分 代码类似这样&#xff1a; <a href"url">连接文本</a> 实例&#xff1a; <!DOCTYPE HTM…

在Xcode中使用Git进行源码版本控制

在Xcode中使用Git进行源码版本控制 在应用程序开发过程中&#xff0c;很重要的一部分工作就是如何进行源码的版本控制。当代码出现问题时&#xff0c;我们就需要将代码恢复到原先正常的版本。如果是多个人共同开发一个项目&#xff0c;那么代码的控制就会非常复杂。幸运的是&am…

Linux环境变量的设置和查看方法

1. 显示环境变量HOME $ echo $HOME /home/redbooks 2. 设置一个新的环境变量hello $ export HELLO"Hello!" $ echo $HELLO Hello! 3. 使用env命令显示所有的环境变量 $ env HOSTNAMEredbooks.safe.org PVM_RSH/usr/bin/rsh Shell/bin/bash TERMxterm HISTSIZE1000 ..…

CefSharp试用

Github地址&#xff1a; https://github.com/cefsharp/CefSharp 首先下载所有源代码下来 然后直接打开Sln 然后就可以直接调试WinForm、Wpf的Example了 注意地方&#xff1a; CefSharp.Core、CefSharp.BrowserSubprocess.Core 这两个类库是用C写的&#xff0c;所以VisualStudio…

ORA-30649: 缺少DIRECTORY关键字的问题解决方法

在oracle 里执行该语句时 提示 ORA-30649: 缺少 DIRECTORY 关键字把NOT null 放到 default 后面&#xff0c;就是如下写法&#xff0c;oracle 正常执行alter table PM_INFO ADD sort NUMBER(10,0) DEFAULT (0) NOT NULL;转载于:https://www.cnblogs.com/person008/p/9234637.ht…

java 解决汉诺塔问题

//汉诺塔问题//HanYang 2016/10/15 import java.util.Scanner; //输出public class Hanuota { public static void Show(String a,String b){ System.out.print(" " a "->" b " " ); } //从a移到c public static void Fun(int n, Str…

利用VC++实现局域网实时传输

本文针对不同的局域网&#xff0c;提出一种通用的实时视频传输的解决方案。在使用Divx编解码的基础上&#xff0c;提出了从压缩、组帧、发送到接收、解压整个流程的思想&#xff0c;具体实施方案和VC实现核心源代码以及传输控制策略&#xff0c;有效地保证了高质量的实时视频传…

ASP.NET Web API之消息[拦截]处理(转)

出处&#xff1a;http://www.cnblogs.com/Leo_wl/p/3238719.html 标题相当难取&#xff0c;内容也许和您想的不一样&#xff0c;而且网上已经有很多这方面的资料了&#xff0c;我不过是在实践过程中作下记录。废话少说&#xff0c;直接开始。 Exception 当服务端抛出未处理异常…

无人驾驶遇见人工智能 百度将推有“大脑”的汽车

在日前举行的中国云计算大会&#xff0c;百度高级副总裁、技术战略委员会主席王劲表示&#xff0c;百度将在今年下半年推出无人驾驶汽车。不过&#xff0c;百度自己并不会造车&#xff0c;它将与第三方汽车厂商合作制造。据介绍&#xff0c;百度将利用现有的大数据、地图、人工…

AdlinkMotionCardLibrary函数C++

#include "stdafx.h" #include "AdlinkMotionCardLibrary.h"extern "C" _declspec(dllexport) bool _stdcall MotionCardIni(I32& BoardId_InBits, I32 Mode) { try{//mode0&#xff1a;&#xff1a; 系统指定卡号 mode1&#xff1a;&am…

查看表的结构

describe 表名转载于:https://www.cnblogs.com/dengyg200891/p/5966565.html

定制一个网络文件系统

定制一个网络文件系统【把pc上的文件系统挂接到开发板上面】 1、修改exports文件【PC上】一定要修改&#xff0c;否则不会成功 vi /etc/exports 修改为 /空格* 并保存 2、设置开发板上的IP地址 ifconfig eth0 192.168.0.11 up 3、设置PC上的IP地址 ifconfig et…

创建Hbase Hive外部表报错: Unable to determine ZooKeeper ensemble

创建HBase的Hive外部表1: create external table ttt(rowkey string,info map<string,string>)STORED BY org.apache.hadoop.hive.hbase.HBaseStorageHandler WITH SERDEPROPERTIES ("hbase.columns.mapping" ":key,info:") TBLPROPERTIES ("h…

死磕算法之快速排序

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。博客源地址为zhixiang.org.cn https://blog.csdn.net/myFirstCN/article/details/80851021 学习更多算法系列请参考文章&#xff1a;死磕算法之汇总篇 快速排序是一个运用了分治法和递归算法的排序方…

九点标定进行仿射变换halcon仿真代码

筛选出来的点得坐标已经显示在PxRow、PxColunm里边 * Image Acquisition 01: Code generated by Image Acquisition 01 read_image (Image, C:/Users/Administrator/Desktop/标定板图片.png) dev_close_window () dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHand…

用SQL语句添加删除修改字段_常用SQL

1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME DROP COLUMNcolumn_NAME3.修改字段类型 ALTER TABLE table_name ALTER COLUMNcolumn_name new_data_type4.sp_rename 改名 EXEC sp_rename [dbo].[Table_1].[fi…

DAVINCI开发原理之三----达芬奇编解码引擎Codec Engine(CE)

DaVinci是DSP和ARM 双核架构的SOC芯片。对芯片与外界的交互通过ARM端的Montavista Linux和相关驱动与应用程序来管理&#xff0c; DSP端只处理编解码相关的算法。DSP和ARM之间的通讯和交互是通过引擎(Engine)和服务器(Server)来完成的。1. 编解码引擎(Codec Engine) a. 核心引…

Windows操作系统安全加固

本文档旨在指导系统管理人员或安全检查人员进行Windows操作系统的安全合规性检查和配置。 1. 账户管理和认证授权 1.1 账户 默认账户安全 禁用Guest账户。禁用或删除其他无用账户&#xff08;建议先禁用账户三个月&#xff0c;待确认没有问题后删除。&#xff09;操作步骤 打开…

ios修改了coredata数据结构后,更新安装会闪退

如果iOS App 使用到CoreData&#xff0c;并且在上一个版本上有数据库更新&#xff08;新增表、字段等操作&#xff09;&#xff0c;那在覆盖安装程序时就要进行CoreData数据库的迁移&#xff0c;具体操作如下&#xff1a; 1.选中你的mydata.xcdatamodeld文件&#xff0c;选择菜…

TI DAVINCI开发原理(总共5部分)

2011-06-03 11:14:17| 分类&#xff1a; TI 达芬奇视频处 | 标签&#xff1a; |字号大中小订阅 DAVINCI开发原理之一----ARM端开发环境的建立(DVEVM) 1. 对DAVINCI平台&#xff0c;TI在硬件上给予双核架构强有力的支撑&#xff0c;在DSP端用DSP/BIOS来支持音视频算法的运行…