Marr Hildreth邊緣檢測器

2021-08-28 16:35:31 字數 1125 閱讀 5835

用於邊緣檢測的運算元應該有兩個顯著的特點:

1.它應該能夠計算圖中每乙個點處的一階導數或者二階導數的數字近似的微分運算元。

2.它能夠被「調整」以便在任何期望的尺寸上其作用。因此,大的運算元也可以用於檢測模糊邊緣,小的運算元可以用來檢測銳度集中的精細細節。

滿足上面兩個要求的最好運算元是濾波器∇2g

\nabla^2g

∇2g其中∇

2\nabla^2

∇2是拉普拉斯運算元,而g是標準差為σ

\sigma

σ的二維高斯函式。

我們簡稱其為高斯拉普拉斯(log):

選擇∇ 2g

\nabla^2g

∇2g的原因如下:

1.運算元的高斯部分會模糊影象,從而在尺寸上將結構的灰度(包括雜訊)降低到遠小於σ

\sigma

σ的程度。

2.高斯函式在空間和頻率兩個域平滑影象,因而在原影象中引入不存在的人為干擾(如振鈴)的可能性較小。

3.儘管一階導數可用於檢測灰度突變,但是它們是有方向的運算元,而拉普拉斯有各項同性(旋轉不變)的特點。

如何構造log運算元模板:

目的:獲取log函式的基本形狀,這意味著乙個正的中心項由緊臨的負區域包圍著,中心項的值以距原點的距離為函式而增大,而外層區域的值為零。係數之和必須為零,從而模板的響應在恆定灰度區域為零。

大小:為確定高斯濾波器的大小,仍採用位於二維高斯表面下其均值在正負3

σ3\sigma

3σ之間的99.7%,作為一種經驗法則,乙個大小為n*n的log離散濾波器,其n值應是大於等於6

σ6\sigma

6σ的最小奇數。n小於該值的濾波器模板會「截斷」log函式,截斷的程度與模板的大小成反比;而是用較大的模板對結果的影響不大(因為超過6σ

\sigma

σ的地方數值為0)。

我們知道二階導數對邊緣檢測會產生零交叉,於是我們接下來要做的就是對上一步得到的的影象尋找零交叉,我們一般以3*3的領域尋找零交叉。

邊緣檢測運算元Marr Hildreth實現

二階微分運算元典型的是laplace運算元,log可以看成是乙個高斯模板的拉普拉斯變換。log最底層的原理是二階微分運算元,也就是對原始影象求二次微分的邊緣定位演算法,當使用二階微分運算元的時候,其對邊緣的響應是乙個零交叉,而且能夠判斷出高灰度方向,但二階微分對雜訊的敏感度過高,需要平滑預處理。由於...

Python Opencv Canny邊緣檢測

去噪 梯度 非極大值抑制 滯後閾值 梯度 角度 非極大值抑制 滯後閾值 梯度值 maxval 邊界 maxval 梯度值 minval 與邊界相連,保留。否則拋棄 梯度值 梯度值 ma xval maxv al 梯度 值 mi nval 梯度值nval 邊界與 邊界相連 保留。否則拋棄 拋棄 返回值...

opencv python Canny邊緣檢測

處理順序 1.彩色影象轉換成灰度圖 2.對影象進行高斯模糊 3.計算影象梯度 根據梯度計算 影象邊緣幅值與角度 4.非最大訊號壓制處理 在獲得梯度的方向和大小之後,應該對整幅影象做乙個掃瞄,去除那些非邊界上的點。對每乙個畫素進行檢查,看這個點的梯度是不是周圍具有相同梯度方向的點中最大的。5.雙閾值邊...