Opencv第七課--形態(tài)學(xué)濾波

形態(tài)學(xué)濾波

形態(tài)學(xué)濾波包括腐蝕、膨脹、開運(yùn)算、閉運(yùn)算、形態(tài)學(xué)梯度、禮帽、黑帽
下面針對(duì)這四種形態(tài)學(xué)操作,說明一下其原理。

腐蝕操作

顧名思義,腐蝕操作會(huì)一定程度上對(duì)圖像前景物體的邊界進(jìn)行腐蝕,減少圖像的高亮部分。腐蝕也是一種與圖像之間的卷積操作,與卷積核對(duì)應(yīng)的源圖像像素為1時(shí)保留,否則置零。

import cv2
import numpy as np
img = cv2.imread("erode.jpg",0)
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations=1)
image.png

image.png

可以看出腐蝕操作令圖像的邊界縮小,高亮部分減少,有助于消除噪聲。因此,在對(duì)圖像進(jìn)行預(yù)處理時(shí),通常會(huì)先進(jìn)行腐蝕操作,消除噪聲干擾。

膨脹

與腐蝕操作相反的是膨脹操作,膨脹操作會(huì)使得圖像的高亮部分增大,突出前景目標(biāo),也可以用于連接兩個(gè)分開的物體。

import cv2
import numpy as np
img = cv2.imread("erode.jpg",0)
kernel = np.ones((5,5),np.uint8)
dilate = cv2.dilate(img,kernel,iterations=1)
image.png

開運(yùn)算

開運(yùn)算就是對(duì)圖像先進(jìn)行腐蝕,再進(jìn)行膨脹

import cv2
import numpy as np
img = cv2.imread("erode.jpg",0)
kernel = np.ones((5,5),np.uint8)
#開運(yùn)算接口函數(shù)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
image.png

閉運(yùn)算

閉運(yùn)算就是與開運(yùn)算相反的操作,先膨脹后腐蝕,用來填充前景物體的小洞,或者前景物體的小黑點(diǎn)。

#閉運(yùn)算接口函數(shù)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

形態(tài)學(xué)梯度

一副圖像膨脹和腐蝕的差

gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)
image.png

禮帽

原圖像和開運(yùn)算之后圖像的差

tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

黑帽

源圖像和閉運(yùn)算之后圖像的差

blackhat = cv2.morphologyEx(img, cv2.MORPHBLACKHAT, kernel)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容