Halcon清晰度检测实例(转)

2023-11-08

Halcon清晰度检测实例(转)  

2013-10-08 14:11:07|  分类: halcon|举报|字号 订阅

此实例通过使用Halcon实现5种清晰度算法函数:
1. 方差算法函数;
2. 拉普拉斯能量函数;
3. 能量梯度函数;
4. Brenner函数;
5. Tenegrad函数;
测试效果如下图片;找到峰值对应的那张图,确实是最清晰的那张;使用直方图显示清晰度结果,如果有更好的方法,那就跟帖回复吧。
此实例有HalconBBS群友提供!
 
Halcon清晰度检测实例(转) - zazaniao - zazaniao的个人主页
 
*evaluate_definition的使用例子
*使用halcon自带的图片
*实现了五种评价函数,
*选择算子的Method值,可以观察不同评价函数的效果。
read_image (Image, 'pcb_focus/pcb_focus_telecentric_106')
dev_update_off ()
dev_close_window ()
dev_open_window_fit_image (Image, 0, 0, 752, 480, WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_set_color ('lime green')
dev_set_line_width (3)
Ret:=[]
get_image_size(Image, Width, Height)
for Index := 1 to 121 by 1
    read_image (Image, 'pcb_focus/pcb_focus_telecentric_'+Index$'03d')
    
    evaluate_definition (Image, 'Tenegrad', Value)
    
    dev_display (Image)
    Ret:=[Ret,Value]
endfor
*使用直方图显示清晰度结果,如果有更好的方法,那就跟帖回复吧
VMax:=max(Ret)
VMin:=min(Ret)
GRet := 100*(Ret-VMin)/(VMax-VMin)
gen_region_histo(Region, Ret, 255, 255, 1)
*找到峰值对应的那张图,确实是最清晰的那张。
qxd:=find(Ret, max(Ret))
read_image (GoodImage, 'pcb_focus/pcb_focus_telecentric_'+qxd$'03d')
dev_display (GoodImage)
dev_display (Region)
evaluate_definition函数代码如下:
 
scale_image_max(Image, Image)
get_image_size(Image, Width, Height)

if(Method = 'Deviation')
*方差法
    region_to_mean (Image, 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) 
    
elseif(Method = '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)

elseif(Method = 'energy')
*能量梯度函数
    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)
elseif(Method = '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)
elseif(Method = 'Tenegrad')
*Tenegrad函数法
    sobel_amp (Image, EdgeAmplitude, 'sum_sqrt', 3)
    min_max_gray(EdgeAmplitude, EdgeAmplitude, 0, Min, Max, Range)
    threshold(EdgeAmplitude, Region1, 11.8, 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)
   
elseif(Method = '2')

elseif(Method = '3')
    
endif
    
return ()

 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Halcon清晰度检测实例(转) 的相关文章

  • Python中常用的正则表达式

    正则表达式是对字符串操作的一种逻辑公式 就是用事先定义好的一些特定字符 及这些字符的组合 组成一个 规则字符串 这个 规则字符串 用来表达对字符串的一种过滤逻辑 非python独有 但是python的re模块提供了实现 在python中写正
  • python实战-JSON形式爬虫-批量爬取图片并下载

    文章目录 一 前言 二 思路 1 网站返回内容 2 url分页结构 3 根据请求快速构造代码 三 具体代码的实现 四 总结 一 前言 上一篇文章已经对html形式的爬虫进行实战 批量爬取电影下载链接 接下来将实战json形式爬虫 批量爬取并
  • Java环境配置

    文章目录 windows环境 linux环境 yum安装 压缩包安装 首先需官网下载所需版本jdk 注意与机器对应 官网下载地址 https www oracle com technetwork cn java javase downloa
  • 时间序列--平滑+特征工程

    https machinelearningmastery com moving average smoothing for time series forecasting python 平滑的希望是消除噪声 更好地揭示潜在的因果过程的信号
  • [mpeg4]mpeg4码流分析

    基于内容的AV编码 以前AV信息被看作纯粹的数据 编码时没有结合自身包含的内容 例如视频序列被认为是象素的组合 MPEG 4采用了对象的概念 不同的数据源被视作不同的对象 分别编码 数据的接收者不再是被动的 他可以对不同的对象进行自己的操作
  • 特征工程和多项式回归

    特征工程的定义 特征工程 Feature Engineering 特征工程是将原始数据转化成更好的表达问题本质的特征的过程 使得将这些特征运用到预测模型中能提高对不可见数据的模型预测精度 特征工程简单讲就是发现对因变量y有明显影响作用的特征
  • Multimodal Machine Learning: A Survey and Taxonomy/多模态机器学习综述

    目录 1 介绍 introduction 2 历史回顾 review 3 表示 representation 4 映射 Translation Mapping 5 对齐 Alignment 6 融合 Fusion 7 联合学习 Co lea
  • Spring系列之玩转bean scope

    本文内容 详细介绍5中bean的sope及使用注意点 自定义作用域的实现 应用中 有时候我们需要一个对象在整个应用中只有一个 有些对象希望每次使用的时候都重新创建一个 spring对我们这种需求也提供了支持 在spring中这个叫做bean
  • MySql索引原理与使用大全

    林炳文Evankaka原创作品 转载请注明出处http blog csdn net evankaka 一 索引介绍 索引是对数据库表中一列或多列的值进行排序的一种结构 在关系数据库中 索引是一种与表有关的数据库结构 它可以使对应于表的SQL
  • 一步一步学Silverlight 2系列(5):实现简单的拖放功能

    版权声明 原创作品 允许转载 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http terrylee blog 51cto com 342737 67221 概述 Silverlight 2 Beta
  • Apifox接口测试教程(一)接口测试的原理与工具

    前言 掌握了http协议 就掌握了接口测试 笔者在网络上看过不少接口测试教程 一上来就开始讲怎么操作工具 而不告诉读者为什么要这么操作 读者可能照猫画虎成功了 也可能操作失败了但不知为何出错 因此 本文作为接口测试的入门第一课首先会给大家了
  • 算法:反转链表算法清晰解释-C++

    学习地址 https www cnblogs com wzw0625 p 12536744 html 题目描述 定义一个函数 输入一个链表的头节点 反转该链表并输出反转后链表的头节点 题目示例 示例 输入 1 gt 2 gt 3 gt 4
  • 《超级实习生学员访谈录》—前路浩浩荡荡,万物皆可期待

    一起为有体面的有尊严的未来而奋斗 李同学 大家好 我来自重庆大学城市科技学院 一个双非的民办院校 我就读的专业是软件工程 目前在超级实习生主攻的机器语言学习方向是Java 我是2022年的3月1日正式加入超级实习生的 作为一个即将步入社会的
  • 统一网关Gateway

    Spring Cloud Gateway是Spring官方基于Spring 5 0 Spring Boot 2 0和Project Reactor等技术开发的网关 Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的
  • 使用anaconda创建虚拟环境安装不同深度学习框架

    使用anaconda安装tensorflow caffe pytorch等框架 可以先通过anaconda创建虚拟环境 然后在不同的虚拟环境下装上不同的版本的框架 例如在一个虚拟环境上安装一个tensorflow1 4 在另一个虚拟环境中上
  • 执行脚本报错:无法加载文件 C:\Program Files\nodejs\node_global\cnpm.ps1,因为在此系统上禁止运行脚本。

    在新公司新建项目时候遇到一个问题如上图 安装cnpm或者node都会报这个错误 找了半天发现解决方法如下 操作如上图 1 打开终端 2 在终端执行 get ExecutionPolicy 显示Restricted 表示状态是禁止的 3 在终
  • 机器学习笔试题精选(转载)

    Q1 在回归模型中 下列哪一项在权衡欠拟合 under fitting 和过拟合 over fitting 中影响最大 A 多项式阶数 B 更新权重 w 时 使用的是矩阵求逆还是梯度下降 C 使用常数项 答案 A 解析 选择合适的多项式阶数
  • maven依赖搜索下载

    背景 公司离网开发 找依赖的地址如下 阿里的 仓库服务https developer aliyun com mvn search
  • Ubuntu 、Debian(Kali) 、Centos 命令区别

    1 安装 Ubuntu从软件源 安装 apt get install XXX 包名 Debian Kali 从软件源 安装 apt get install xxx 包名 CentOS从软件源 安装 yum install XXX XXX 包

随机推荐

  • C/C++2019秋招面试题集合02

    C C 2019秋招面试题集合02 8 24 深信服 优招 C 研发 物联网方向 1 C 内存分区 未初始化的全局变量放在哪 如果编译了在二进制文件里会有他的位置吗 答 C 虚拟内存包括栈区 MMP文件映射区 堆区 全局区 代码区 Text
  • Docker删除启动失败的image和docker build失败的images

    1 Docker删除docker build失败的images docker images grep
  • 个人技术总结——vue-quill-editor富文本插件的简单使用

    这个作业属于哪个课程 lt 软件工程23年春季 gt 这个作业要求在哪里 lt 软件工程实践总结 个人技术总结 gt 这个作业的目标 lt 课程回顾与总结 个人技术总结 gt 其他参考文献 构建之法 文章目录 一 技术概述 二 技术详述 2
  • 轻量级cnn网络cv方向总结

    目录 轻量级人脸检测 轻量级人脸检测2 轻量级目标检测1 轻量级目标检测大合集 轻量级行人检测 轻量级人脸识别 轻量级ocr文字检测识别 轻量级高精度人脸检测推荐 轻量级高精度人脸关键点推荐 轻量级高精度分割网络推荐 yolov5face
  • 五、模型训练

    目录 1 线性模型 1 1 Lasso 回归 1 2 Ridge 回归 2 树模型 2 1 随机森林 Random Forest RF 2 2 梯度提升树 GBDT 2 3 XGBoost 2 4 LightGBM 2 5 CatBoost
  • Pandas学习笔记之时间序列总结

    早起导读 pandas是Python数据处理的利器 时间序列数据又是在很多场景中出现 本文来自GitHub 详细讲解了Python和Pandas中的时间及时间序列数据的处理方法与实战 建议收藏阅读 关键词 pandas NumPy 时间序列
  • 沧海的孤塔-chimera

    SaikrVj 沧海的孤塔 chimera Description 为了获得连神都为之陶醉的美味 沧海淡雪糖 美食殿堂的成员决定前往 沧海的孤塔 进行探险 现在他们到达了塔的最顶层 遇上了这座遗迹的守护魔物 奇美拉 只有击败奇美拉 才可以获
  • Tslib和Qt 4.8.4与在开发板上的移植

    这篇博客算是接着Linux 下编译 安装 配置 QT这篇的 搞完PC平台的就来弄一下嵌入式平台的 Linux的东西搞起来麻烦的地方就在于太杂 太散 像QT 各版本之间都有很多差异 因此在网络上查找资料不能光看某一个 必须很多资料综合来判断
  • 卡尔曼滤波(1) 递归算法

    最近这两天 我在整卡尔曼滤波 滤波算法 我实在B站上跟着DR CAN这个主播听的他的课 讲的非常好 就是语速有些快 下面 上链接 DR CAN的个人空间 哔哩哔哩 bilibili 这个是他的B站主页 这个博主是华东理工大学毕业 美国一个大
  • Linux内存占用分析的几个方法,你知道几个?

    0 引言 系统内存是硬件系统中必不可少的部分 定时查看系统内存资源运行情况 可以帮助我们及时发现内存资源是否存在异常占用 确保业务的稳定运行 例如 定期查看公司的网站服务器内存使用情况 可以确保服务器的资源是否够用 或者发现服务器内存被占用
  • C++学习笔记10:异常

    异常处理 异常处理概述 抛出异常 异常捕获 异常接口声明 捕获所有异常 未捕获异常的处理 构造函数 析构函数与异常处理 异常匹配 标准异常及层次结构 异常处理 在编程时 不能忽略异常处理 处理异常的方法多种多样 错误处理代码分布在整个系统代
  • Linux学习-08-Linux目录常用操作命令2

    3 12 Linux cp命令 复制文件和目录 cp 命令 主要用来复制文件和目录 同时借助某些选项 还可以实现复制整个目录 以及比对两文件的新旧而予以升级等功能 cp 命令的基本格式如下 root CncLucZK cp 选项 源文件 目
  • IP地址、子网掩码、网关、DNS和端口(port)之间的关系

    1 IP地址 IP地址是32位 分为网络号和主机号 所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址 并且每台机器的 IP 在全世界是唯一的 按照TCP IP协议规定 IP地址用二进制来表示 每个IP地址长32b
  • MySQL——错误ERROR :没有选择数据库就操作表格和数据

    ERROR 1046 3D000 No database selected 解决方案一 就是使用 USE 数据库名 语句 这样接下来的语句就默认针对这个数据库进行操作 解决方案二 就是所有的表对象前面都加上 数据库
  • python 爬取中国木材价格指数网

    python 爬取中国木材价格指数网 完整代码 https github com tanjunchen SpiderProject tree master yuzhuprice usr bin env python coding utf 8
  • 分布式事务方案整理

    分布式系统有一个著名的CAP理论 即一个分布式系统要同时满足一致性 Consistency 可用性 Availablility 和分区容错 Partition Tolerance 三个特性是一件不可能的事情 CAP理论告诉架构师不要妄想设计
  • python笔记记录神器 jupyter notebook

    之前因为没有用到这款python工具 所以一直没有在号内给大家介绍 实则大部分python开发者已经在使用了 最喜欢它的地方是可以同时支持markdown和ipython的脚本脚本 那就意味着我可以一遍调试我的代码一遍加上每一部分的层级标题
  • RPA如何拓展更多实体应用场景,进一步精益流程管理?

    RPA作为一种灵活 高效 成本可控的数字化转型方式 已成为近年来关注度最高的技术趋势之一 作为企业转型的催化剂 以RPA为代表的 数字员工 通过预先构建的 智能的 高生产率的 自组织的 多任务资源等方式 能够独特地使用和访问与人类相同的IT
  • 存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储

    转载 http www cnblogs com fengty90 p 3768826 html 存储结构分四类 顺序存储 链接存储 索引存储 和 散列存储 顺序结构和链接结构适用在内存结构中 顺序表每个单元都是按物理顺序排列的 如果你想访问
  • Halcon清晰度检测实例(转)

    Halcon清晰度检测实例 转 2013 10 08 14 11 07 分类 halcon 举报 字号 订阅 下载LOFTER 我的照片书 此实例通过使用Halcon实现5种清晰度算法函数 1 方差算法函数 2 拉普拉斯能量函数 3 能量梯