Python邊緣檢測之prewitt,sobel和laplace算子詳解
濾波算子簡介
ndimage中提供了卷積算法,并且建立在卷積之上,提供了三種邊緣檢測的濾波方案:prewitt, sobel以及l(fā)aplace。
在convolve中列舉了一個用于邊緣檢測的濾波算子,統(tǒng)一維度后,其x xx和y yy向的梯度算子分別寫為
此即prewitt
算子。
Sobel算子為Prewitt增添了中心值的權(quán)重,記為
這兩種邊緣檢測算子,均適用于某一個方向,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濾波封裝在了一個字典中。其中origin
表示原始圖像,對應(yīng)的函數(shù)是一個lambda
表達(dá)式。
在繪圖時,通過將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)的監(jiān)測服務(wù)器硬盤使用率腳本分享
這篇文章主要介紹了Python實(shí)現(xiàn)的監(jiān)測服務(wù)器硬盤使用率腳本分享,本文腳本適應(yīng)windows和linux系統(tǒng),需要的朋友可以參考下2014-11-11Python入門教程(四十一)Python的NumPy數(shù)組索引
這篇文章主要介紹了Python入門教程(四十一)Python的NumPy數(shù)組索引,數(shù)組索引是指使用方括號([])來索引數(shù)組值,numpy提供了比常規(guī)的python序列更多的索引工具,除了按整數(shù)和切片索引之外,數(shù)組可以由整數(shù)數(shù)組索引、布爾索引及花式索引,需要的朋友可以參考下2023-05-05pycharm軟件實(shí)現(xiàn)設(shè)置自動保存操作
這篇文章主要介紹了pycharm軟件實(shí)現(xiàn)設(shè)置自動保存操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06