当前位置: 首页 > article >正文

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.kler.cn/a/386567.html

相关文章:

  • 从0开始学习--Day26--聚类算法
  • react之了解jsx
  • go反射深入学习
  • Iotop使用
  • 大数据新视界 -- 大数据大厂之 Impala 存储格式转换:从原理到实践,开启大数据性能优化星际之旅(下)(20/30)
  • HAproxy 详解
  • .NET 黑名单上传 突破WAF防护的SoapShell (免杀版)
  • MySQL数据库专栏(五)连接MySQL数据库C API篇
  • Unity3D ASTC贴图压缩格式详解
  • MacOs上如何彻底卸载DevEco Studio?
  • VSCode 多工程联合调试
  • PythonBase02
  • MFC图形函数学习06——画椭圆弧线函数
  • EDUCODER头哥 SpringBoot 异常处理
  • UE5.4 PCG 自定义PCG蓝图节点
  • memcache redis区别
  • 【Java项目】基于SpringBoot的【时间管理系统】
  • 选项式api和组合式api
  • 【如何获取股票数据40】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深指数最新分时KDJ数据获取实例演示及接口API说明文档
  • input file检验成功之后才可以点击
  • 网络--应用层协议--HTTP
  • Go语言死锁和阻塞
  • 一种EF(EntityFramework) MySQL修改表名去掉dbo前缀的方法
  • 从0开始搭建一个生产级SpringBoot2.0.X项目(十)SpringBoot 集成RabbitMQ
  • Vue Element-UI 选择隐藏表格中的局部字段信息
  • 智慧交通系统:构建高效安全的城市交通网络