1. 程式人生 > >影象二階導數的本質

影象二階導數的本質

前面我們介紹過了影象的二階導數,並且指出,二階導數比一階導數有更好的細節增強表現。那麼,其原理是什麼呢?

我們仍然簡化問題,考慮下x方向,選取某個畫素,如下圖所示:
這裡寫圖片描述

可以看出,在圖中標紅色框框的畫素附近是一個明顯的分界線,上面是一片平坦的灰度區域,下面是灰度緩慢變化的區域。而且有著明顯的灰度突變:從100突變到50。我們可以把這個看作影象中物體的輪廓邊緣。

根據前幾篇文章的介紹,影象在x方向的一階導數和二階導數分別是:

fx=f(x+1)f(x) 2fx2=f(x+1,y)+f(x1,y)2f(x,y)

我們根據上面的式子計算下這個畫素x方向上的一階導數和二階導數,如下圖所示:
這裡寫圖片描述

我們注意到:對於一階導數,除了灰度突變的地方,其它灰度緩慢變化的地方數值相同,而且符號也相同。而二階導數在灰度緩慢變化的地方數值為0,而在灰度突變的地方有符號相反的2個數值。也即二階導數產生了一個畫素寬雙邊緣

前面提到,求一階導數時,用的是絕對值,而二階導數並沒有用絕對值,因為在邊緣處,有符號相反的二階導數值,可以強化這個邊緣的對比度。如下圖所示:

這裡寫圖片描述

我們看到,原影象與二階導數影象合併後,在灰度均勻或灰度緩慢變化的地方,影象並沒有任何改變;但在灰度突變的邊緣處,原來是100和50的灰度差別,現在是150和10的灰度差別,對比度增強了很多。

因為二階導數產生了一個畫素寬的雙邊緣,且2個邊緣的二階導數值符號相反,因此在合併影象時,就要考慮符號的問題,不然就適得其反。如果像一階導數那樣,使用了絕對值,那麼這種雙邊緣的對比反差就沒有了,所以二階導數也就沒有使用絕對值。

一般來說,二階導數比一階導數獲得的物體邊界更加細緻。但是,顯而易見的,二階導數對噪聲點也更加敏感,會放大噪聲的影響。看看下圖就明白了:

這裡寫圖片描述

在一片灰度均勻的區域,有一個噪聲點,經過二階導數處理後,噪聲點更加孤立明顯了,尤其在這些灰度平滑區域更加的顯眼,噪聲被放大了。