理解邊緣檢測,從0基礎開始,數學知識是重點

0基礎自學數字圖像處理中的邊緣檢測,用了幾天時間,大部分用在了學數學上。要想完成邊緣檢測,在程序上用不了多少代碼,而恰恰是這簡單代碼的背後,存在着存在着諸多數學原理。爲此我重學了一部分數學,在這段時間裏,對數學的態度也發生了改變,由過去的覺得它枯燥,抽象,無法理解,到現在的覺得數學精巧,甚至有點習喜歡上數學。

下面就把我這幾點學習的過程描述一下:

邊緣檢測中存在的一個重要概念是梯度。
強烈推薦一個外文網站,
http://mathinsight.org/directional_derivative_gradient_introduction
給這個網站五星好評,裏面對很多數學知識講解的那是相當透徹,裏面有三維動畫。相比之下。。。行,我就不吐槽中國的高數教材了。

簡單的說,在有一個變量的函數中,曲線某點的斜率就等於梯度。
在有兩個或兩個以上變量的函數中,如z = f(x,y),由xy軸組成了一個平面,裏面存在n個方向,其中x和y方向是特例,對x和y方向求導,稱爲偏導數,偏導數又是方向導數的特例,我們可以對處x和y方向的任意方向求導,這就是方向導數的概念,在方向導數中也存在斜率,但隨着曲面上某點方向不同,斜率也不同。但在某一方向,存在一個導數最大值,其值就是梯度。

這是我看了上面那個網站的講解後,說出的我對梯度的理解,寫得比較粗糙,還是建議看上面那個網站。

偏導數,方向導數,梯度是邊緣檢測所需要的數學基礎。

通俗的講,梯度就是變化率,在圖像中,則是某點周圍的像素灰度變化程度,而邊緣檢測研究的就是這個,當一個點周圍臨近點的像素差別很大,從人眼來看,這就是一個邊緣。

由於計算機求導計算量大,因此用一階差分代替一階偏導

梯度值等於某點在水平方向和數值方向偏導數的平方,如此計算量比較大,因此用xy方向的偏導和代替梯度值。

由於計算梯度的方法是近似得出的,因此就由不同人提出了很多近似算法,來代替梯度,計算梯度的加減乘除又可以寫成矩陣形式,人們把這些矩陣稱爲算子。
如 Roberts算子,Prewitt算子,Sobel算子等。

至此我終於明白了這些奇怪算子的由來。
這是這幾天學習的成果。

而至於如何程序實現或其他細節,網上例子很多。

發佈了40 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章