Halcon resistor.hedv 使用多个对焦级别提取深度

depth_from_focus

* Extract depth using multiple focus levels  
* 使用多个对焦级别提取深度  
Names := []  
* 初始化一个空数组,用于存储图像名称  
dev_close_window ()  
* 关闭当前打开的图像窗口  
for i := 1 to 10 by 1  * 循环开始,从1到10  Names := [Names,'dff/focus_' + (i$'.2')]  * 将格式化的字符串添加到Names数组中,形成如'dff/focus_01'到'dff/focus_10'的名称  
endfor  
read_image (Image, Names)  
* 读取Names数组中的所有图像到Image变量中(注意:这里假设Names包含的是可以读取的图像文件路径列表,但根据上下文,此行代码可能需要根据实际情况调整,因为前面生成的Names是格式化的字符串,可能并非直接指向图像文件)  
channels_to_image (Image, Image)  
* 如果Image是多通道图像,此函数将通道组合成完整的图像(但这里使用相同的Image变量作为输入和输出,可能是个误用或特殊用例)  
get_image_size (Image, Width, Height)  
* 获取图像的宽度和高度  
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)  
* 打开一个新的图像窗口,大小为图像的宽度和高度,背景为黑色  * Access a channel of a multichannel image  
* 访问多通道图像的一个通道  
for i := 1 to 10 by 1  * 循环开始,从1到10  access_channel (Image, Image1, i)  * 从Image中提取第i个通道到Image1中(但注意,这里每次循环都覆盖了Image1的内容,可能并不是预期的行为)  
endfor  
depth_from_focus (Image, Depth, Confidence, 'highpass', 'next_maximum')  
* 使用对焦深度方法从图像中提取深度信息,并计算置信度  * Smooth by averaging  
* 通过平均进行平滑处理  
mean_image (Depth, DepthHighConf, 11, 11)  
* 对Depth图像进行11x11的平均滤波,结果存储在DepthHighConf中  
scale_image_max (DepthHighConf, ImageScaleMax)  
* 将DepthHighConf图像的最大值缩放到255,结果存储在ImageScaleMax中  
mean_image (ImageScaleMax, DepthMean, 51, 51)  
* 对ImageScaleMax进行51x51的平均滤波,结果存储在DepthMean中  
threshold (DepthMean, Resistor, 158, 255)  
* 对DepthMean应用阈值操作,生成二值图像Resistor,其中像素值大于158的设为255(白色),其余设为0(黑色)  
connection (Resistor, ConnectedRes)  
* 连接Resistor图像中的白色区域,形成连通的区域  * Select regions of a given shape  
* 选择给定形状的区域  
select_shape_std (ConnectedRes, FinalRes, 'max_area', 0)  
* 从ConnectedRes中选择面积最大的区域作为FinalRes  
threshold (DepthMean, Solder, 125, 158)  
* 对DepthMean再次应用阈值操作,生成二值图像Solder  
connection (Solder, ConnectedSol)  
* 连接Solder图像中的白色区域,形成连通的区域  
select_shape_std (ConnectedSol, SelectedSol, 'max_area', 0)  
* 从ConnectedSol中选择面积最大的区域作为SelectedSol  * Fill up holes  
* 填充孔洞  
fill_up (SelectedSol, FinalSol)  
* 填充SelectedSol中的孔洞,结果存储在FinalSol中  
dev_set_line_width (3)  
* 设置绘制线条的宽度为3  
dev_set_draw ('margin')  
* 设置绘制模式为边缘绘制  
dev_display (Image)  
* 在窗口中显示原始图像  
dev_set_color ('red')  
* 设置绘制颜色为红色  
dev_display (FinalSol)  
* 在窗口中显示填充孔洞后的Solder区域(FinalSol)  
dev_set_color ('blue')  
* 设置绘制颜色为蓝色  
dev_display (FinalRes)  
* 在窗口中显示最终选择的电阻区域(FinalRes)

 

depth_from_focus是Halcon图像处理库中的一个算子,它用于从一系列不同对焦级别的图像中提取深度信息。以下是关于该算子的详细介绍:

一、算子功能

depth_from_focus算子通过比较同一场景在不同对焦级别下拍摄的图像,利用聚焦法恢复出物体的三维信息。具体来说,该算子会分析每个像素在不同对焦级别下的清晰度或锐度,并选择清晰度最高的那个对焦级别作为该像素的深度值。这样,就可以生成一个表示场景深度的图像,其中每个像素的深度值反映了场景中对应点的距离。

二、输入参数

  • MultiFocusImage:这是一个多通道灰度图像,由多个不同对焦级别的图像组成。每个对焦级别的图像都作为图像的一个通道。
  • Filter:用于寻找锐利的像素的过滤器。常用的过滤器类型包括'highpass'和'bandpass'。'highpass'过滤器会强调高频成分,适用于噪声较少的图像;而'bandpass'过滤器则会抑制高频和低频成分,适用于包含强噪声的图像。
  • Selection:这是一个可选参数,用于指定在选择最佳对焦级别时要考虑的区域或条件。例如,可以指定只考虑图像的某个部分或只考虑满足特定条件的像素。

三、输出参数

  • Depth:这是一个深度图像,其中每个像素的值表示场景中对应点的深度。深度值的具体含义取决于摄像机的标定参数和拍摄条件。
  • Confidence:这是一个可信度图像,其中每个像素的值表示对应深度估计的置信度。置信度越高,表示深度估计越可靠。

四、应用场景

depth_from_focus算子在三维重建、物体识别、表面检测等领域有着广泛的应用。例如,在三维重建中,可以利用该算子从一系列不同对焦级别的图像中提取深度信息,进而构建出物体的三维模型;在物体识别中,可以利用深度信息来提高识别的准确性和鲁棒性;在表面检测中,可以利用深度信息来检测物体表面的缺陷和变化。

五、注意事项

  • 在使用depth_from_focus算子时,需要确保输入的多通道图像是由同一场景在不同对焦级别下拍摄的。
  • 过滤器的选择对深度提取的结果有很大影响,因此需要根据实际情况选择合适的过滤器类型。
  • 深度估计的置信度可以提供有关深度信息可靠性的有用信息,因此在后续处理中需要加以考虑。

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

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

相关文章

qt QTreeWidgetItem详解

1、概述 QTreeWidgetItem 是 Qt 框架中的一个类,专门用于在 QTreeWidget(一个基于项的树形视图)中表示单个节点(或称为项)。QTreeWidget 继承自 QAbstractItemView,而 QTreeWidgetItem 则作为树中的一个节…

三.Linux用户和用户管理

前言:Linux系统是一个多用户多任务的分时操作系统,任何一个要使用资源的都必须向系统管理员申请一个账户,然后通过这个账户的身份进入系统。 一.此次目的 用户账号的添加、删除与修改。 用户口令的管理。 用户组的管理。 二.用户账号的添加…

SpringBoot技术栈:构建高效共享汽车系统

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

【笔记】扩散模型(九):Imagen 理论与实现

论文链接:Photorealistic Text-to-Image Diffusion Models with Deep Language Understanding 非官方实现:lucidrains/imagen-pytorch Imagen 是 Google Research 的文生图工作,这个工作并没有沿用 Stable Diffusion 的架构,而是级…

css:基础

前言 我们之前其实也可以写出一个看起来算是一个网页的网页,为什么我们还要学css? CSS(Cascading Style Sheets)也叫层叠样式表,是负责美化的,我们之前说html就是一个骨架,css就可以用来美化网…

[全网最细数据结构完整版]第七篇:3分钟带你吃透队列

目录 1->队列的概念及结构 2->队列的实现 2.1定义队列基本结构 struct QueueNode 和 struct Queue 2.2队列初始化函数 QueueInit 函数 2.3队列销毁函数 QueueDestroy 函数 2.4队列插入数据函数 QueuePush 函数 2.5判断队列是否为空,空返回true,非空返回false 2.6队列删…

Android笔记(三十五):用责任链模式封装一个App首页Dialog管理工具

背景 项目需要在首页弹一系列弹窗,每个弹窗是否弹出都有自己的策略,以及哪个优先弹出,哪个在上一个关闭后再弹出,为了更好管理,于是封装了一个Dialog管理工具 效果 整体采用责任链模块设计,控制优先级及弹…

掌握软件组件/单元测试中的这些术语,你就算正式入门了

上篇干货,和大家分享了软件测试的几个级别,在【组件/单元测试】当中,涉及不少名词术语。从之前的学员学习过程来看,这里比较容易出现概念混乱,进而导致面试过程中频频翻车,所以有必要在这里单独拎出来和大家…

html的week控件 获取周(星期)的第一天(周一)和最后一天(周日)

html的week控件 获取周(星期)的第一天(周一)和最后一天(周日) <input type"week" id"week" class"my-css" value"ViewBag.DefaultWeek" /><script> function PageList() { var dateStrin…

【主机游戏】艾尔登法环游戏攻略

艾尔登法环&#xff0c;作为一款备受好评但优化问题频发的游戏&#xff0c;就连马斯克都夸过 今天介绍一下这款游戏 https://pan.quark.cn/s/24760186ac0b 角色升级 在《艾尔登法环》中&#xff0c;角色升级需要找到梅琳娜。你可以在关卡前废墟的营地附近&#xff0c;风暴关…

CSS 中三角形的绘制方法详解

在网页设计领域&#xff0c;特殊形状常常能为页面增添独特的视觉效果&#xff0c;三角形便是其中之一。本文将详细介绍如何利用 CSS 绘制三角形。 一、原理阐述 CSS 中一个元素的边框分为上边框、右边框、下边框和左边框。当把一个元素的宽度和高度设为 0&#xff0c;且只让其…

虚拟机linux7.9下安装mysql

1.MySQL官网下载安装包&#xff1a; MySQL :: Download MySQL Community Server https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 2.解压文件&#xff1a; #tar xvzf mysql-5.7.39-linux-glibc2.12-x86_64.tar.gz 3.移动文件&#…

负载均衡式在线oj项目开发文档(个人项目)

项目目标 需要使用的技术栈&#xff1a; 这个项目共分成三个模块第一个模块为公共的模块&#xff0c;用于解决字符串处理&#xff0c;文件操作&#xff0c;网络连接等等的问题。 第二个模块是一个编译运行的模块&#xff0c;这个模块的主要功能就是将用户的代码收集上来之后要…

MySQL数据库专栏(五)连接MySQL数据库C API篇

摘要 本篇文章主要介绍通过C语言API接口链接MySQL数据库&#xff0c;各接口功能及使用方式&#xff0c;辅助类的封装及调用实例&#xff0c;可以直接移植到项目里面使用。 目录 1、环境配置 1.1、添加头文件 1.2、添加库目录 2、接口介绍 2.1、MySql初始化及数据清理 2.1.…

PH热榜 | 2024-11-08

DevNow 是一个精简的开源技术博客项目模版&#xff0c;支持 Vercel 一键部署&#xff0c;支持评论、搜索等功能&#xff0c;欢迎大家体验。 在线预览 1. Quorini 标语&#xff1a;几分钟内设计并运行无服务器云 API 介绍&#xff1a;Quorini 提供了一套可视化的工具&#xff…

QML:Menu详细使用方法

目录 一.性质 二.作用 三.方法 四.使用 1.改变标签 2.打开本地文件 3.退出程序 4.打开Dialog 五.效果 六.代码 在 QML 中&#xff0c;Menu 是一个用于创建下拉菜单或上下文菜单的控件。它通常由多个 MenuItem 组成&#xff0c;每个 MenuItem 可以包含文本、图标和快捷…

k8s 处理namespace删除一直处于Terminating —— 筑梦之路

问题现象 k8s集群要清理某个名空间&#xff0c;把该名空间下的资源全部删除后&#xff0c;删除名空间&#xff0c;一直处于Terminating状态&#xff0c;无法完全清理掉。 如何处理 为什么要记录下这个处理的步骤&#xff0c;经过查询资料&#xff0c;网上也有各种各样的方法&…

>>,<<,~,,|,∧

‌监视器中的数值在十六进制显示时没有负数&#xff0c;主要是因为十六进制本身不直接表示负数&#xff0c;而是通过补码的形式来表示。

【韩老师零基础30天学会Java 】03章 变量

第三章 变量 1. 变量介绍 为什么需要变量&#xff1f; 变量是程序的基本组成单位 变量有三个基本单位&#xff1a;类型名称值 //1.定义变量int age 20;double score88.6;char gender男;String namejack;变量使用注意事项 变量表示内存中的一个存储区域[不同的变量,类型不同&am…

扭蛋机小程序开发,潮玩扭蛋机市场下新机遇

随着大众对潮玩文化的需求不断增长&#xff0c;市场进行了创新升级&#xff0c;不再局限于传统的销售营销模式&#xff0c;进一步推动行业的发展。目前&#xff0c;扭蛋机的种类越来越丰富&#xff0c;从手办、玩具到各种IP周边等&#xff0c;为市场带来更多新颖的扭蛋商品。销…