【halcon】亚像素轮廓XLD

2023-10-11 02:30
文章标签 轮廓 像素 halcon xld

本文主要是介绍【halcon】亚像素轮廓XLD,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

XLD(eXtended Line Descriptions):XLD其实就是指的亚像素轮廓。

 如何理解亚像素



上一篇《halcon入门小技巧》提到的:

threshold (Image, Region, 128, 255) 这个呢,是给了一个灰度的范围,通过像素进行划分区域。

像素已经是图片成像的最小单位了,下图就是将一张图片放大到看到像素的程度。这每一个方块就是一个像素,每个像素都有自己的一个灰度值。两个像素之间的灰度值是跳变的

如果进一步细分,假设像素的正中间点才是该像素的值,像素其他地方的值是渐变的方式过度到另一个像素。那么像素内部除中间点之外的点的值需要参考周围像素的值。

现在又有一个函数,针对亚像素:

threshold_sub_pix (ImageReduced, Border, 128)这个函数的意思就是,按照上述的方式,推算出每个像素点中128这个灰度值应该出现在哪个位置,再将128的这个位置连线,得到一个轮廓称之为“亚像素轮廓” :

这里的参数Border就是我们说的轮廓:

类型为 xld_cont, 这种类型就是”亚像素轮廓“,是一条线(线是给你看的,其实是由一系列的点组成)可以用长度描述。

cont是contour的缩写

当我们得到了一堆的轮廓之后,我们应该如何筛选呢?

 我们可以通过长度选择轮廓线,首先通过halcon软件提供的特征提取功能,得到轮廓的长度

然后调用select_contours_xld进行筛选。

select_contours_xld (Border, SelectedContours, 'contour_length', 90, 120, -0.5, 0.5)

参数解释:

  • Border, SelectedContours:从亚像素轮廓Border中选出符合条件的SelectedContours
  • 'contour_length':表示条件是轮廓长度
  • 90, 120:表示轮廓的长度范围
  • -0.5, 0.5:作用目前还不清楚

此时还可以查看符合条件轮廓的个数:

count_obj (SelectedContours, Number)

通过亚像素轮廓得到区域


gen_region_contour_xld (SelectedContours, Region1, 'filled')

 这里就会发现和亚像素轮廓不同,区域和图像一样是一像素为单位的。

 再次通过区域得到image
reduce_domain (ImageReduced, Region1, ImageReduced1)

这里再解释一下reduce_domain,他是通过区域Region得到图片,区域可以很多个,但是得到的图片只能由一张,如果此时有多个Region,那么得到的图片是通过第一个Region生成的图片。

小结:

 这里发现了一个小套路:

1、先得到亚像素轮廓

2、筛选轮廓

3、通过轮廓得到Region

4、通过Region得到图片

这篇关于【halcon】亚像素轮廓XLD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/184884

相关文章

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将

opencv实现像素统计的示例代码

《opencv实现像素统计的示例代码》本文介绍了OpenCV中统计图像像素信息的常用方法和函数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 统计像素值的基本信息2. 统计像素值的直方图3. 统计像素值的总和4. 统计非零像素的数量

Differential Diffusion,赋予每个像素它应有的力量,以及在comfyui中的测试效果

🥽原论文要点 首先是原论文地址:https://differential-diffusion.github.io/paper.pdf 其次是git介绍地址:GitHub - exx8/differential-diffusion 感兴趣的朋友们可以自行阅读。 首先,论文开篇就给了一个例子: 我们的方法根据给定的图片和文本提示,以不同的程度改变图像的不同区域。这种可控性允许我们再现

OpenCV结构分析与形状描述符(10)检测并提取轮廓函数findContours()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 在二值图像中查找轮廓。 该函数使用算法 253从二值图像中检索轮廓。轮廓是有用的工具,可用于形状分析和对象检测与识别。参见 OpenCV 示例目录中的 squares.cpp。 findContours 是 OpenCV 库中的一个重要函数

OpenCV结构分析与形状描述符(9)检测轮廓相对于其凸包的凹陷缺陷函数convexityDefects()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 查找一个轮廓的凸性缺陷。 下图显示了一个手部轮廓的凸性缺陷: convexityDefects 是 OpenCV 库中的一个函数,用于检测轮廓相对于其凸包的凹陷缺陷。这个函数可以帮助识别轮廓中的凹进去的部分,通常被用来分析手部或其他物体的形状

像素间的关系(邻接、连通、区域、边界、距离定义)

文章目录 像素的相邻像素4邻域D邻域8邻域 邻接、连通、区域和边界邻接类型连通区域边界 距离测度欧氏距离城市街区距离(city-block distance)棋盘距离(chessboard distance) 参考 像素的相邻像素 4邻域 坐标 ( x , y ) (x,y) (x,y)处的像素 p p p有2个水平的相邻像素和2个垂直的相邻像素,它们的坐标是: ( x

研究纹理采样器在像素级别的采样位置

问题 【纹理采样器】是一个基础的概念。假设有一个正方形面片,顶点的UV范围是0.0~1.0,那么在这个正方形面片上采样一张纹理时,会呈现出完整的纹理。 但我现在关注的问题是,在像素级别上,采样的位置是怎样的。具体来讲:对于UV值是(0.0,0.0)的点,它对应的采样位置是纹理最左上角像素的中心?还是纹理最左上角像素的左上角?即,下面左右哪个是正确的情况? 在宏观上,尤其是像素较多的时候,二者

将DIB/bitmap读入内存并转为 halcon hobject

问题由来:在mfc halcon混合编程中,发现halcon::readimage() 函数读取图片(8位8M/bmp)至少200ms,当然24位 32位bmp 倍数所消耗的时间倍数上涨。那么有没有什么方法加快读取速度?目前发现一个亲测可行的方式:  1、通过 DIBAPI 读取图片,下载可转到点击打开链接,赚点积分 2、获取所读读片的图像数据的首地址,注意非结构头地址 3、通过halcon

Halcon选择一堆region中面积第N大的region的算法实现

以下图为例: 比如我想把面积第2小的那个“小正方形”选择出来,算法代码如下: 1 read_image (Yuan, 'C:/Users/happy xia/Desktop/yuan.png')2 binary_threshold (Yuan, Region, 'max_separability', 'dark', UsedThreshold)3 connection (Regio