1. 程式人生 > >6.邊緣檢測:梯度——梯度計算中濾波器的線性特性的利用_6

6.邊緣檢測:梯度——梯度計算中濾波器的線性特性的利用_6

到現在為止還挺好。

在現實世界中,在這裡有這個小函式f(x):

它有一些東西,然後它需要一個跳躍,它在那裡有更多的東西:

這就是強度作為x的函式。

如果我實際上只是通過做一個正確的差異來獲取該函式的梯度。

我要做的是,應用導數運算元,得到這個:

有人可能會問,邊緣在哪裡。

我們可以看到,這條邊,哎呀,我漏了,這條邊就在這裡。如圖:

但在這導數這個圖種很混亂,很找到邊緣在哪裡。如圖:

問題當然是我們增加了噪音。

這個噪聲使得我們在各處都有正的和負的導數。

我們來看一下噪聲對一些導數的影響,以及我們可以做些什麼。

這裡我們再次提供了更多的條紋鴨,這裡我們有梯度影象:

你可以看到,當我給影象新增噪音時,我的梯度開始崩潰。

那是我開始看到這個,我有一點點高斯噪音,現在我變成了這些大椒鹽噪音。

感覺像是鹽和胡椒的聲音,只是這些大的尖峰在我的導數中發生。

所以我們必須以某種方式處理這種噪音。

您可能知道如何處理,我們如何處理噪音?

我們過濾,我們要順利擺脫它,我們之前做過。

這是我的影象 f,現在讓我應用一個平滑核心,h。如圖:

我只是想平滑一點。所以,當我平滑它的時候,我使用這個是 h 來卷積 f 。

無論你是進行卷積還是相關。H 與 f 卷積,你現在看到我得到了一個漂亮,流暢的函式:

現在,我們已經平滑了訊號,我們可以採取導數,你看到的是,我們得到這個好,平滑的峰值:

那麼,邊緣在哪裡?

邊緣將在此處達到此峰值,對應於那邊的邊緣。

所以基本上為了找到我們的邊緣,我們將不得不以某種方式基本上應用平滑漸變並尋找一些峰值。

在我們繼續這樣做之前,請記住關聯屬性和線性等的整個概念。

我們可以自己儲存一個操作,因為與f卷積的h的導數與用f卷積的h的導數相同。

那麼當我們進行邊緣檢測時,它會是什麼樣子?

請繼續看以下內容:

所以在這裡我們擁有與以前相同的 f:

現在,我取h,然後求導,現在看起來像這樣:

當我將該函式直接應用於f時,我得到的值與我上次得到的值相同。Wow,你會發現神奇的地方出現了:

這必須是因為線性運算元的關聯屬性,導數和濾波是這些線性運算元。

好的,最後一個問題。我們現在有這個美好的峰值:

我們必須找到峰值。我們必須找到該導數的最大值。

我們如何找到最大值?

我們取更多的導數。

所以我們將不得不採取另一種導數。

所以現在,我們只需要做一個二階導數,而不是隻做一個導數:

在h是高斯函式之前,這是高斯函式的一階導數。

如果我們再對它求導,就會得到這個,有時被稱為倒墨西哥帽。

你會看到,當我們在2D中做的時候,對吧,因為它有點像這個草帽狀的,但是上下的,對吧?

當我們將該運算子應用於影象時,我們可以通過這個強斜率得到這個漂亮的零交叉:

這就是我們的邊:

這是一個強力的斜率零交叉。

我們不需要找到一般的最大值,我們只需要找到任何一個值為0的地方附近有一個強梯度。

小測驗:

那麼我們利用了哪些線性性質首先求核的導數然後應用它,而不需要在前兩個步驟中做?

A、相關;

B、可交換;

C、區分;

D、A 和 C;

答案:D。我們採用了相關,並且區分是線性的,並且可以應用相關,

這就是允許我們採用運算子的導數並將其應用於整個影象的原因。

我們稍後會談一談,為什麼有時這是好事。

但最簡單的解釋是,假設我的影象是1,000 x 1,000。

假設導數是31×31。

我可以把31乘31的導數,這個很小,然後將其應用到我的1,000乘1,000。

或者,我可以把31×31應用到1000×1000上然後對整個1000×1000求導,這比對小一點的濾波器求導的計算量要大得多。

這就是我們這樣做的原因之一。


——學會編寫自己的程式碼,才能練出真功夫。