以前用opencv时用canny算法用得挺多。
所以用halcon时,我也直接用canny算法。
介绍一下Canny算子:
使用累计直方图计算两个阀值。凡是大于高阀值的一定是边缘; 凡是小于低阀值的一定不是边缘;如果检测结果大于低阀值但又小于高阀值,那就要看这个像素的邻接像素中有没有超过高阀值的边缘像素:如果有的话那么它就是边缘了,否则他就不是边缘;
 
halcon里面
edges_sub_pix(Image:Edges:Filter,Alpha,Low,High:)
 
提供了这个方法。
 
alpha:参数指定值越小,平滑越强大,会减少边缘细节。(canny刚好相反,值越大,边缘细节越少)。
 
Low:低阀值
High:高阀值
 
例如:
read_p_w_picpath(Image,'test.bmp')
edges_sub_pix(Image,Edges,'canny',0.5,20,40)