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

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

這兩種邊緣檢測(cè)算子,均適用于某一個(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表示卷積過(guò)程中對(duì)邊緣效應(yīng)的彌補(bǔ)方案,設(shè)待濾波數(shù)組為a b c d,則在不同的模式下,對(duì)邊緣進(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 |
測(cè)試
接下來(lái)測(cè)試一下
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()
為了看上去更加簡(jiǎn)潔,代碼中將原圖、prewitt濾波、sobel濾波以及l(fā)aplace濾波封裝在了一個(gè)字典中。其中origin表示原始圖像,對(duì)應(yīng)的函數(shù)是一個(gè)lambda表達(dá)式。
在繪圖時(shí),通過(guò)將cmap映射到plt.cm.gray,使得繪圖之后表現(xiàn)為灰度圖像。
效果如下

到此這篇關(guān)于Python邊緣檢測(cè)之prewitt,sobel和laplace算子詳解的文章就介紹到這了,更多相關(guān)Python邊緣檢測(cè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)網(wǎng)頁(yè)截圖(PyQT5)過(guò)程解析
這篇文章主要介紹了Python實(shí)現(xiàn)網(wǎng)頁(yè)截圖(PyQT5)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python學(xué)習(xí)筆記之視頻人臉檢測(cè)識(shí)別實(shí)例教程
這篇文章主要給大家介紹了關(guān)于Python學(xué)習(xí)筆記之視頻人臉檢測(cè)識(shí)別的相關(guān)資料,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
python?服務(wù)器批處理得到PSSM矩陣的問(wèn)題
這篇文章主要介紹了python?服務(wù)器批處理得到PSSM矩陣,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
Python 50行爬蟲(chóng)抓取并處理圖靈書(shū)目過(guò)程詳解
這篇文章主要介紹了Python 50行爬蟲(chóng)抓取并處理圖靈書(shū)目過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
python實(shí)現(xiàn)網(wǎng)絡(luò)五子棋
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)網(wǎng)絡(luò)五子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04

