关于图像边缘的一些知识点:
在拟合之前,需要先进行边缘提取。
图像边缘的总结:灰度值变化剧烈的地方为边缘,其实就是求导,导数的绝对值越大,越可能为边缘
边缘有正负之分,就像导数有正值也有负值一样:由暗到亮为正,由亮到暗为负
求边缘幅度的算法:
一阶导数:sobel、Roberts、prewitt等算子
二阶导数:Laplacian、Canny算子
Canny算子效果比其他的都要好,但是实现起来有点麻烦
在halcon的示例程序中,关于边缘提取,主要看两个地方:
1. 边缘提取(像素精度)
2. 边缘提取(亚像素精度)
边缘提取的一些函数说明:
//提取亚像素边缘轮廓(此函数在边缘提取中使用比较多)
edge_sub_pix
Image:输入图像
Edges:提取出来的边缘
Filter:使用的边缘提取算子
Alpha:滤波参数:值越小,越平滑(canny算子相反)
Low:低阈值
High:高阈值
在Low和High之间的像素,如果八临域中有一个像素高于High,那么也是边缘。
edges_image
Image:输入图像
ImaAmp:边缘幅度图像
ImaDir:边缘方向图像
Filter:使用的边缘提取算法,如canny等
Alpha:滤波参数,值越小,越平滑,细节越少,如果使用canny,则相反
NMS:非极大值抑制
Low:滞后阈值操作的阈值较低(如果不需要阈值处理,则为负)
High:滞后阈值操作的上限阈值(如果不需要阈值处理,则为负)
在Low和High之间的像素,如果八临域中有一个像素高于High,那么也是边缘。
//提取骨架
//计算一个区域的骨架
skeleton
Region:要被稀疏的区域
Skeleton:骨架结果
//对区域去获取边缘
boundary
Region:被计算边缘的区域
RegionBorder:边缘结果
BoundaryType:边缘类型
//获取亚像素轮廓
threshold_sub_pix
Image:输入图像
Border:输出边缘
Threshold:分割边缘的幅度值
更多halcon和六轴机械臂算法公众号: