發佈於在下的博客:https://www.pluvet.com/archiv... 不容許轉載。html
若有寫的不對的還望指正!函數
什麼是離散函數?咱們來看幾個例子:spa
這是 $f(x) = \sin x + \sin {x \over 2}$ 的函數圖像。它的定義域是 $R$,是連續的。htm
再看下圖這是 $f(x) = \sin x + \sin {x \over 2}$ 當 $x$ 是 $1\over2$ 的整數倍時的圖像。是離散的。這樣的定義域是離散集合的函數,稱爲離散函數。blog
若是再苛刻一點,定義域是天然數集,值域是實數域,那麼這樣的函數就是離散數值函數rem
差分就是相鄰兩個離散值的差。以函數 $f(x) = x^2,\ x\in Z$爲例get
$x$ | $f(x)$ |
---|---|
1 | 1 |
2 | 4 |
3 | 9 |
4 | 16 |
5 | 25 |
對於 $x = 1$,咱們能夠知道:博客
$f(1) = 1 \\f(1 + 1) = 4$數學
那麼差分 it
$\Delta f(1) = f(1+1) - f(1) = 4 - 1 = 3$
內容補充這樣用$x+1$和 $x$做差的差分,稱爲向前差分,記號是$\Delta$。另有:
$f(x_i) - f(x_i - h)$:向後差分,記做 $\nabla。$
$f(x_i + h) - f(x_i - h)$ :中心差分。
若是進行一次泰勒展開,還能獲得一階微分的中心差商,可用於更高精度要求。有興趣的能夠自行了解。
以此類推,可得:
$x$ | $f(x)$ | $\Delta f(x)$ |
---|---|---|
1 | 1 | 3 |
2 | 4 | 5 |
3 | 9 | 7 |
4 | 16 | 9 |
5 | 25 | $\dots$ |
你會發現執行一次差分以後,差分值爲等差數列。實際上運用這個特色可讓電路進行求導等數學操做,神奇吧?
咱們對$\Delta f(x)$ 也執行差分,也就是差分的差分,稱爲二階差分。
由此可得:
$x$ | $f(x)$ | $\Delta f(x)$ | $\Delta ^2f(x)$ |
---|---|---|---|
1 | 1 | 3 | 2 |
2 | 4 | 5 | 2 |
3 | 9 | 7 | 2 |
4 | 16 | 9 | $\dots$ |
5 | 25 | $\dots$ | $\dots$ |
二階差分以後,咱們獲得了常數列。能夠發現差分的做用和求導是十分相似的。
在實際問題中,咱們經常要面對不止一個自變量。好比圖像處理中的像素,須要面對$x,\ y$兩個自變量。這個時候能夠把差分看做相似微分的東西。那麼咱們對 $x$ 求差分的偏導能夠有:
$$ {\delta f\over\delta x} = {f(x, y) - f(x -1, y)\over1} $$
因爲函數是離散的,因此分母的增量是 $0$。
咱們把 $y$ 也考慮進來:
$$ {\delta f\over\delta x} = {f(x, y) - f(x -1, y)}\\ {\delta f\over\delta y} = {f(x, y) - f(x , y - 1)} $$
則二維的一階差分(向後的)能夠表示爲:
$$ \begin{align} \nabla f(x,y) & = {\delta f\over\delta x}+ {\delta f\over\delta y} \\ & = 2{f(x, y) - f(x -1, y)} - f(x , y - 1) \end{align} $$
實際使用時,可使用向後差分,也可使用向前差分:
$$ \begin{align} \nabla f(x,y) & = {\delta f\over\delta x}+ {\delta f\over\delta y} \\ & = - 2{f(x, y) + f(x -1, y)} + f(x , y - 1) \end{align} $$
也有人叫它導數,我以爲差分更能體現離散型。不過,你們明白意思就好。
差分和導數相似,能夠反映變化的快慢。對灰度不一樣的兩個像素進行差分,獲得的值就是兩個像素的過渡急緩。而過分急劇的地方,每每就是圖像中物體的邊緣,所以咱們認爲:一階差分能夠檢測邊緣存在的可能性。這是一階差分在這裏的實際意義。
那麼若是是二階差分呢?在物理學中,對於位移$\vec{x}$和時間$t$,一階導數表示速度,二階差分表示速度的導數加速度。一樣的,在圖像處理上,一階差分表示相鄰像素的過渡急緩,二階差分就表示這種過分急緩的變化強弱,可能你仍是不明白,不要緊,咱們會在下面進一步解釋。
若是一階差分就能檢測邊緣,咱們爲何還要二階差分呢?
咱們看下面的圖:
這是一張從白到黑均勻漸變的圖案,若是交給一階差分來從上往下分析,會發現差分值一直都存在。因而一階差分濾波器告訴你:這裏全是邊緣。可是這和咱們的常識是不符的,由於雖然灰度變化了,可是變化的趨勢倒是均勻的。那麼怎麼樣才能正確判斷這是否是邊緣呢?聰明的你應該想到了,用二階差分來看,差分值一直是 0,說明變化是十分均勻的,說明邊緣並不存在。所以,二階差分纔是真能肯定邊緣的存在性。
如今知道了它的做用,咱們怎麼計算二階差分呢?顯然的,對一階差分再算一次差分就好了,具體的操做咱們在上一節的表格裏列過,用數學語言表達,對於 $x$ 的二階誤差分就是:
$$ \begin{align} \frac{\partial^2f}{\partial x ^2} & =\frac{\partial f'(x)}{dx^2}=f'(x+1)-f'(x)\\ & =f((x+1)+1)-f((x+1))-(f(x+1)-f(x))\\ & =f(x+2)-f(x+1)-f(x+1)+f(x) \\ & =f(x+2)-2f(x+1)+f(x) \end{align} $$
令 $x=x-1$ 得:
$$ \frac{\partial^2f}{\partial x ^2}=f(x+1)+f(x-1)-2f(x) $$
同理獲得對$y$ 的二階差分。故有:
$$ \frac{\partial^2f}{\partial x ^2}=f(x+1,y)+f(x-1,y)-2f(x,y)\\ \frac{\partial^2f}{\partial y ^2}=f(x,y+1)+f(x,y-1)-2f(x,y) $$
綜合可得:
$$ \begin{align} \Delta^2 f(x,y) & = \frac{\partial^2f}{\partial x ^2}+\frac{\partial^2f}{\partial y ^2} \\ &=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y) \end{align} $$
這個東西就是拉普拉斯掩膜重心繫數,簡稱拉普拉斯算子,以窗口(窗口的概念,見高斯濾波原理章節)中心元素爲座標原點,將窗口中各個元素帶入,便可獲得窗口的權重模板,也稱核(Kernel)。
一個 8 鄰域的窗口核以下:
$$ k = \left[ \begin{matrix} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1 \\ \end{matrix} \right] $$
以此核進行濾波,便可對圖像進行銳化。(提醒:結果中有負值部分,記得進行歸一化,以避免形成缺失)