Python邊緣檢測之prewitt,sobel和laplace算子詳解
濾波算子簡介
ndimage中提供了卷積算法,并且建立在卷積之上,提供了三種邊緣檢測的濾波方案:prewitt, sobel以及l(fā)aplace。
在convolve中列舉了一個(gè)用于邊緣檢測的濾波算子,統(tǒng)一維度后,其x xx和y yy向的梯度算子分別寫為

此即prewitt算子。
Sobel算子為Prewitt增添了中心值的權(quán)重,記為

這兩種邊緣檢測算子,均適用于某一個(gè)方向,ndimage還提供了lapace算子,其本質(zhì)是二階微分算子,其3×3卷積模板可表示為

具體實(shí)現(xiàn)
ndimage封裝的這三種卷積濾波算法,定義如下
prewitt(input, axis=-1, output=None, mode='reflect', cval=0.0) sobel(input, axis=-1, output=None, mode='reflect', cval=0.0) laplace(input, output=None, mode='reflect', cval=0.0)
其中,mode表示卷積過程中對邊緣效應(yīng)的彌補(bǔ)方案,設(shè)待濾波數(shù)組為a b c d,則在不同的模式下,對邊緣進(jìn)行如下填充
| 左側(cè)填充 | 數(shù)據(jù) | 右側(cè)填充 | |
|---|---|---|---|
| reflect | d c b a | a b c d | d c b a |
| constant | k k k k | a b c d | k k k k |
| nearest | a a a a | a b c d | d d d d |
| mirror | d c b | a b c d | c b a |
| wrap | a b c d | a b c d | a b c d |
測試
接下來測試一下
from scipy.ndimage import prewitt, sobel, laplace
from scipy.misc import ascent
import matplotlib.pyplot as plt
img = ascent()
dct = {
"origin" : lambda img:img,
"prewitt" : prewitt,
"sobel" : sobel,
"laplace" : lambda img : abs(laplace(img))
}
fig = plt.figure()
for i,key in enumerate(dct):
ax = fig.add_subplot(2,2,i+1)
ax.imshow(dct[key](img), cmap=plt.cm.gray)
plt.ylabel(key)
plt.show()
為了看上去更加簡潔,代碼中將原圖、prewitt濾波、sobel濾波以及l(fā)aplace濾波封裝在了一個(gè)字典中。其中origin表示原始圖像,對應(yīng)的函數(shù)是一個(gè)lambda表達(dá)式。
在繪圖時(shí),通過將cmap映射到plt.cm.gray,使得繪圖之后表現(xiàn)為灰度圖像。
效果如下

到此這篇關(guān)于Python邊緣檢測之prewitt,sobel和laplace算子詳解的文章就介紹到這了,更多相關(guān)Python邊緣檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)網(wǎng)頁截圖(PyQT5)過程解析
這篇文章主要介紹了Python實(shí)現(xiàn)網(wǎng)頁截圖(PyQT5)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python學(xué)習(xí)筆記之視頻人臉檢測識(shí)別實(shí)例教程
這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)筆記之視頻人臉檢測識(shí)別的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
python實(shí)現(xiàn)網(wǎng)絡(luò)五子棋
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)網(wǎng)絡(luò)五子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04

