您當前的位置:首頁 > 舞蹈

白話影象處理基礎:離散,一階差分,二階差分,偏導差分,拉普拉斯運算元

作者:由 吉吉鍋鍋愛地球 發表于 舞蹈時間:2022-11-09

差分定義廣泛應用在影象處理中。那麼什麼是差分呢?

離散和連續

連續函式:對於我們所認知的函式。定義域和值域都是連續的。比如函式

f=sin(\frac{x}{2})

,影象為

白話影象處理基礎:離散,一階差分,二階差分,偏導差分,拉普拉斯運算元

離散函式:對於我們所知道的函式,定義域是不連續的,比如上面的函式

f=sin(\frac{x}{2})

,當x=1,2,3時。影象為紅色的點

白話影象處理基礎:離散,一階差分,二階差分,偏導差分,拉普拉斯運算元

當定義域能夠在自然數上取值的時候,那麼這就是一個離散函數了。

差分

假設有一個函式:

f(x)=x^{2}

,列出幾項

x

f(x)

1

1

2

4

3

9

4

16

那麼差分就表示為前後相鄰的兩個離散函式的差值。

比如定義一個

\Delta

差分:

\Delta f(1) = f(2)-f(1)=4-1=3

這種由後一個值-前一個值的差分,表示前向差分,記為

\Delta

那麼後向差分

\nabla

表示為:

\nabla f(x)=f(x)-f(x-h)

。(

\nabla

讀作nabla)

中心差分

\delta

表示為:

\delta f(x) = f(x+h)-f(x-h)

這裡我們列出前幾項前向差分:

x

f(x)

前向差分

1

1

3

2

4

5

3

9

7

4

16

9

我們可以看到它是一個等差數列。這個特性可以讓它用在很多電路系統中,求出離散變數的導數。經過一次差分計算叫做一階差分,在一階差分的基礎上再次進行差分,有:

x

f(x)

一階前向差分

二階前向差分

1

1

3

2

2

4

5

2

3

9

7

2

4

16

9

2

可以看到二階(前向)差分是一個常數列。也就是差分的差分,這個和導數求導書的二階導書有異曲同工之妙。

由於差分的這個性質,顯然,我們可以用差分來求影象的邊緣,做邊緣檢測。

多個變數的偏導差分

剛剛介紹和列出的函式都是一個自變數x,如果引申到多變數的情況。我們對x和y兩個變數求偏導,這時候可以把差分看成微分一樣的東西。那我們對x求差分偏導有:

\frac{\delta y}{\delta x}=\frac{f(x,y)-f(x-1,y)}{1}=f(x,y)-f(x-1,y)

由於函式是一個離散函式,x的後向差分為1(2-1=1),所以分母項是1。如果把y也考慮進來。

\frac{\delta y}{\delta y}=f(x,y)-f(x,y-1)

可以看到這是一個後向偏導差分

拉普拉斯運算元

白話影象處理基礎:離散,一階差分,二階差分,偏導差分,拉普拉斯運算元

差分反映了離散函式的值的變化,導數和微分反應的是連續函式的值的變化。對灰度圖不同的兩個畫素點進行差分計算,就能夠得到兩個畫素點的變化快慢。變化過快的地方,就是我們理解的邊緣。所以一階差分是可以檢測邊緣的。

但是,如果以上面這張灰度漸變圖為例子,如果用一階差分從左到右的進行計算,那麼可以發現這裡的一階差分一直都會存在,這個和我們的常識是不同的,儘管它有灰度的變化,但是並不是一個邊緣。那麼很容易就想到上面提到的二階差分。沒錯,二階差分常用來做邊緣檢測的,在這種連續的灰度變化圖片中,它的二階差分始終是0。

加入一張影象的函式表現形式為:

f(x,y)

。它的一階偏差分為:(其實和偏導是一樣的)

\frac{\delta f}{\delta x}=f(x,y)-f(x-1,y)  \newline \frac{\delta f}{\delta y}=f(x,y)-f(x,y-1)

它的二階偏差分為:

\frac{\delta ^{2}y}{\delta x^{2}} =f(x+1,y)-f(x,y) =f(x+1,y)-f(x,y)-[f(x,y)-f(x-1,y)]=f(x+1,y)+f(x-1,y)-2f(x,y) \newline  \frac{\delta ^{2}y}{\delta y^{2}}=f(x,y+1)-f(x,y)=f(x,y+1)-f(x,y)-[f(x,y)-f(x,y-1)]=f(x,y+1)+f(x,y-1)-2f(x,y)

上面這個看著有點複雜,簡化一下:

\frac{\delta ^{2}y}{\delta x^{2}}=f(x+1,y)+f(x-1,y)-2f(x,y) \newline  \frac{\delta ^{2}y}{\delta y^{2}}=f(x,y+1)+f(x,y-1)-2f(x,y)

所以,關於函式

f(x,y)

的二階差分寫作:(這裡類比二階混合偏導是相等的)

\bigtriangledown ^{2}f=[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]-4f(x,y)

這個就是大名鼎鼎的

拉普拉斯運算元

用畫素表示為下,用中間(圓圈)的上下左右的畫素值的和-4倍的中間畫素值。(圖片來源(13條訊息) Laplace(拉普拉斯)運算元_Sagacity_1125的部落格-CSDN部落格_拉普拉斯運算元,侵刪)

白話影象處理基礎:離散,一階差分,二階差分,偏導差分,拉普拉斯運算元

程式碼示例

強大的opencv已經實現了這些傳統運算元了。下面看一下拉普拉斯運算元在影象上的展現。

import cv2

src = cv2。imread(“/home/em/Pictures/images/8。jpg”)

cv2。imshow(“src”,src)

lap = cv2。Laplacian(src, cv2。CV_64F)

img1 = cv2。convertScaleAbs(lap)

cv2。imshow(“lap”,img1)

cv2。waitKey(0)

效果圖

白話影象處理基礎:離散,一階差分,二階差分,偏導差分,拉普拉斯運算元

白話影象處理基礎:離散,一階差分,二階差分,偏導差分,拉普拉斯運算元

參考

拉普拉斯運算元 - 知乎 (zhihu。com)

(13條訊息) Laplace(拉普拉斯)運算元_Sagacity_1125的部落格-CSDN部落格_拉普拉斯運算元

(13條訊息) 簡單易懂地向你解釋:離散函式,差分,二階差分和 Laplacian 濾波原理_class zl=new ZhanL的部落格-CSDN部落格_離散函式

標簽: 差分  函式  二階  運算元  cv2