Halcon —— 边缘检测算子详解
一、算子介紹
1.1 種類
halcon內常用的邊緣檢測算子包括如下幾種:
1.edges_image: 提取2D 圖像邊緣
2.edges_sub_pix:提取2D圖像亞像素邊緣
3.edges_object_model_3d :提取3D圖像邊緣
4.edges_color和edges_color_sub_pix:提取彩色圖像邊緣
1.2 區(qū)別
edges_image可選擇多種邊緣檢測算法來提取物體邊緣,其與亞像素邊緣算子的區(qū)別在于edges_image提取是以像素為單位的邊緣特征,edges_sub_pix是以比像素還小的單位來提取的邊緣,一般采用矩方法,插值法和擬合法。
二、詳解
2.1 edges_image(Image : ImaAmp, ImaDir : Filter, Alpha, NMS, Low, High : )
該算子內主要參數包括:
ImaDir(圖像邊緣方向,對sobel_fast算法無用,因為其不計算方向信息)
Filter(邊緣算子,包括’canny’, ‘deriche1’, ‘deriche1_int4’, ‘deriche2’, ‘deriche2_int4’, ‘lanser1’, ‘lanser2’, ‘mshen’, ‘shen’, ‘sobel_fast’)
Alpha(過濾器參數,小的值導致強平滑,但是更少的細節(jié)(canny算子相反))
NMS(非最大值抑制(設置為none,表示不需要使用該值))
Low(滯后閾值操作的下閾值(如果不需要閾值設置,則為負值))
High(滯后閾值操作的上閾值(如果不需要閾值設置,則為負值))
2.2 邊緣檢測算法
對于算法來講,目前canny算子是最穩(wěn)定的邊緣檢測方法。
canny算法由邊緣強度、邊緣細化(NMS)、滯后閾值三個階段組成。
首先,邊緣強度的計算是計算圖像梯度:梯度幅值矩陣、梯度方向矩陣:
1)圖像灰度化
2)高斯濾波
3)sobel濾波器求出x,y方向上梯度圖像,記為fx、fy
4)利用fx、fy求出梯度幅值和梯度的方向
5)此時的梯度方向為[-90,+90]之間的任意值,將它們規(guī)則化為四類種0、45、90、135度。
然后,計算非最大值抑制(NMS),我們根據已經規(guī)則化的方向矩陣中存儲的方向先分類,之后比較相同方向上的三顆像素,確保中間像素的值最大,否則將它置零,最后得出了清洗過的梯度幅值矩陣。
最后,繼續(xù)處理梯度幅值矩陣,根據設定高閾值high、低閾值low將圖像分成三部分:
1.梯度幅值大于high的像素,將值置為255;
2.梯度幅值小于low的像素,將值置為0;
3.梯度幅值在中間的像素,用它的8鄰域判斷,鄰域內若有值大于high,則將中間的像素置為255;
下面對涉及
下面結合程序對每種濾波算法進行演示講解:
總結
以上是生活随笔為你收集整理的Halcon —— 边缘检测算子详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Halcon例程详解(基于卡尺工具的匹配
- 下一篇: java中资源获取