组合边缘提取和亚像素边缘提取
组合边缘提取
组合边缘就是去提取图片的边缘,算子包含canny算法其中包含高斯平滑+梯度计算+NMS+双阈值。
read_image (Image, 'fabrik')edges_image (Image, ImaAmp, ImaDir, 'canny', 1, 'nms', 20, 40)
* 参数2 输出边沿幅度图像
* 参数3 输出带方向的图像 输出边缘的角度图范围[0-2]
* 参数4 canny算法 包含高斯平滑+梯度计算+NMS+双阈值* lanser1 抗噪能力更强* sobel_fast 快速边缘
* 参数5 高斯平滑的程度 值越小 平滑程度越强。值越大平滑程度越弱
* 参数6 nms 是否启用非极大值的抑制作用,nms 开启,none 不开启
* 参数7 低阈值 低于低阈值将排除掉
* 参数8 高阈值 高于此值为强边缘 低阈值一般是高阈值的1/3或者1/2



后面我们可以进行阈值过滤,并把骨骼轮廓转成轮廓;以下代码为例子:
threshold (ImaAmp, Region, 1, 255)
skeleton (Region, Skeleton)
gen_contours_skeleton_xld (Skeleton, Contours, 10, 'filter')
* filter 过滤 把轮廓长度小于10过滤掉了,如果1 保留所有的轮廓读点
dev_display (Contours)



亚像素边缘提取
在Halcon中,进行亚像素边缘提取通常涉及到使用图像分析的高级功能,特别是当图像中的边缘细节非常精细时。以下是使用Halcon进行亚像素边缘提取的步骤和使用说明:
read_image (Image, 'fabrik')
* 亚像素边缘提取
edges_sub_pix (Image, Edges, 'canny', 1, 20, 40)* 展示部分
dev_set_part (324, 284, 511, 511)
dev_display (Image)
dev_display (Edges)




亚像素边缘提取使用的是亚像素,它和物理像素是有区别的:
物理像素:
- 数字图像由离散的像素点组成
- 每个像素代表图像传感器上的一个感光单元
- 传统边缘检测只能定位到整数像素位置
亚像素:
- 通过数学方法在像素之间进行插值计算
- 可以将边缘、特征点等定位到像素内部的位置
- 典型精度可达0.1像素甚至更高