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.mzph.cn/diannao/59924.shtml

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

相关文章

C语言 | Leetcode C语言题解之第546题移除盒子

题目: 题解: int dp[100][100][100];int calculatePoints(int* boxes, int l, int r, int k) {if (l > r) {return 0;}if (dp[l][r][k] 0) {int r1 r, k1 k;while (r1 > l && boxes[r1] boxes[r1 - 1]) {r1--;k1;}dp[l][r][k] calcu…

玩的花,云产品也能拼团了!!!

说起拼单大家都不陌生,电商一贯的营销手段,不过确实可以给消费者省下一笔钱。双11到了,腾讯云产品也玩起了拼团,这明显是对开发人员和各企业的福利。 对于有云产品需求的个人或企业,这次绝对是难得的一次薅羊毛机会。…

win10@win10 配置openssh服务

1.下载离线包:https://github.com/PowerShell/Win32-OpenSSH/releases 2.然后管理员打开powershell,cd到这个安装包放置的目录中来,输入以下命令:powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1 此时要注意pow…

全面解析:网络协议及其应用

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 # 全面解析:网络协议及其应用 文章目录 网络协议概述定义发展历程主要优势 主要网络协议应用层协议传输层协议网络层…

webWorker基本用法

我们都知道js是一个单线程的语言,当线程堵塞时,可能会导致页面无法正常交互,如一些复杂的可视化处理。即使是异步处理,也只是将其暂存到任务队列中去,等主线程执行完后依然会从任务队列中取过去。 为此,js提…

【1】虚拟机安装

1.安装VMware WorkStation Pro VMware下载地址: 2.新建虚拟机 centos7下载地址:centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云

2-149 基于matlab的LDPC译码性能分析

基于matlab的LDPC译码性能分析,LDPC(Low-Density Parity-Check)码作为编码技术,具有优秀的纠错性能和较低的编解码复杂度。为保证可靠的数据传输,对传输过程中可能出现的信道噪声、干扰等进行模拟和分析。分析对比了误…

游戏开发--C#面试题

游戏开发--C#面试题 C#1. 值类型和引用类型的区别2. 重载和重写的区别3. ArrayList和List的区别4. List底层是什么实现的?5. 抽象类和接口的区别6. 静态成员和⾮静态成员的区别7. 装箱和拆箱是指什么?8. 值和引用类型在变量赋值时的区别是什么&#xff1…

DAY23|回溯算法Part02|LeetCode: 39. 组合总和 、40.组合总和II 、131.分割回文串

目录 LeetCode: 39. 组合总和 基本思路 C代码 LeetCode: 40.组合总和II 基本思路 C代码 LeetCode: 131.分割回文串 基本思路 C代码 LeetCode: 39. 组合总和 力扣代码链接 文字讲解:LeetCode: 39. 组合总和 视频讲解:带你学透回溯算法-组合总和…

【linux】再谈网络基础(二)

8. 再谈端口号 (一)与协议之间的关系 端口号(Port)标识了一个主机上进行通信的不同的应用程序 在TCP/IP协议中, 用 "源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识…

OpenCV视觉分析之目标跟踪(12)找到局部的最大值函数meanShift()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在反向投影图像上找到一个对象。 meanShift 是一种用于图像处理和计算机视觉领域的算法,特别适用于目标跟踪、图像分割等任务。该算…

VS2022配置OpenGL

下载地址: https://download.csdn.net/download/hgaohr1021/89974202 1、下载后,直接把OpenGL文件,全部放在 D:\Program Files这里,OpenGL这个名字也不要改!!! 2、把文件PropertySheetOpenGL.p…

革命性AI搜索引擎!ChatGPT最新功能发布,无广告更智能!

文章目录 零、前言一、ChatGPT最新AI搜索引擎功能操作指导实战1:搜索新闻实战2:搜索天气实战3:搜索体育消息 二、感受 零、前言 大人,时代变了。 最强 AI 助力下的无广告搜索引擎终于问世。我们期待已久的这一刻终于到来了,从今天起,ChatGPT…

微积分复习笔记 Calculus Volume 1 - 4.10 Antiderivatives

4.10 Antiderivatives - Calculus Volume 1 | OpenStax

O-RAN Fronthual CU/Sync/Mgmt 平面和协议栈

O-RAN Fronthual CU/Sync/Mgmt 平面和协议栈 O-RAN Fronthual CU/Sync/Mgmt 平面和协议栈O-RAN前端O-RAN 前传平面C-Plane(控制平面):控制平面消息定义数据传输、波束形成等所需的调度、协调。U-Plane(用户平面)&#…

PADS操作技巧

CTRL左键单击:结束布线 过孔:信号换层、散热 F2布线,然后右键添加过孔。 切换过孔大小

给初学者的 Jupyter Notebook 教程

目录 一、什么是Jupyter Notebook? 1. 简介 2. 组成部分 ① 网页应用 ② 文档 3. Jupyter Notebook的主要特点 二、安装Jupyter Notebook 0. 先试用,再决定 1. 安装 ① 安装前提 ② 使用Anaconda安装 ③ 使用pip命令安装 三、运行Jupyter No…

window下安装rust 及 vscode配置

安装 安装mingw64 (c语言环境 选择posix-ucrt) ucrt:通用c运行时库配置mingw64/bin的路径到环境变量中在cmd窗口中输入命令 "gcc -v" 4. 下载Rust安装程序 安装 Rust - Rust 程序设计语言 5. 配置rustup和cargo目录 (cargo是包管…

RHCE的学习(13)

第十章openEuler简介 概述 openEuler的前身是运行在华为公司通用服务器上的操作系统EulerOS。 EulerOS是一款基于Linux内核的开源操作系统,支持X86和ARM等多种处理器架构,伴随着华为公司鲲鹏芯片的研发,EulerOS 理所当然地成为与鲲鹏芯片配…

ElasticSearch 添加IK分词器

ElasticSearch 添加IK分词器 前言一、IK分词器的算法二、Ik分词器的下载安装(Winows 版本)三、Ik分词器的下载安装(Linux 版本)四、验证测试(postman工具)测试 ik_smart 分词算法测试 ik_max_word 分词算法…