其實我們平時在深度學(xué)習(xí)中所說的卷積操作,在opencv中也可以進(jìn)行,或者說是類似操作。那么它是什么操作呢票顾?它就是圖像的模糊(濾波)處理础浮。
均值濾波
使用opencv中的cv2.blur(src, ksize)
函數(shù)。其參數(shù)說明是:
-
src
: 原圖像 -
ksize
: 模糊核大小
原理:它只取內(nèi)核區(qū)域下所有像素的平均值并替換中心元素奠骄。3x3標(biāo)準(zhǔn)化的盒式過濾器如下所示:
- 特征:核中區(qū)域貢獻(xiàn)率相同豆同。
- 作用:對于椒鹽噪聲的濾除效果比較好。
# -*-coding:utf-8-*-
"""
File Name: image_deeplearning.py
Program IDE: PyCharm
Date: 2021/10/17
Create File By Author: Hong
"""
import cv2 as cv
def image_blur(image_path: str):
"""
圖像卷積操作:設(shè)置卷積核大小含鳞,步距
:param image_path:
:return:
"""
img = cv.imread(image_path, cv.IMREAD_COLOR)
cv.imshow('input', img)
# 模糊操作(類似卷積)影锈,第二個參數(shù)ksize是設(shè)置模糊內(nèi)核大小
result = cv.blur(img, (5, 5))
cv.imshow('result', result)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == '__main__':
path = 'images/2.png'
image_blur(path)
結(jié)果展示:
高斯濾波
高斯濾波使用的是cv2.GuassianBlur(img, ksize,sigmaX,sigmaY)
函數(shù)。
說明:sigmaX
,sigmaY
分別表示X,Y方向的標(biāo)準(zhǔn)偏差蝉绷。如果僅指定了sigmaX
鸭廷,則sigmaY
與sigmaX
相同;如果兩者都為零熔吗,則根據(jù)內(nèi)核大小計算它們辆床。
特征:核中區(qū)域貢獻(xiàn)率與距離區(qū)域中心成正比,權(quán)重與高斯分布相關(guān)桅狠。
作用:高斯模糊在從圖像中去除高斯噪聲方面非常有效讼载。
def image_conv(image_path: str):
"""
高斯模糊
:param image_path:
:return:
"""
img = cv.imread(image_path, cv.IMREAD_COLOR)
cv.imshow('img', img)
# 高斯卷積(高斯濾波), 可以設(shè)置ksize中跌,必須為奇數(shù)咨堤,不為0時,后面的步驟不起作用漩符;也可以設(shè)置成(0一喘,0),然后通過sigmaX和sigmaY計算標(biāo)準(zhǔn)偏差
result = cv.GaussianBlur(img, (0, 0), 15)
cv.imshow('result', result)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == '__main__':
path = 'images/2.png'
image_conv(path)
結(jié)果展示:
高斯雙邊濾波
雙邊濾波(模糊)使用的是cv2.bilateralFilter(img,d, sigmaColor, sigmaSpace)
函數(shù)嗜暴。
說明:d
為鄰域直徑凸克,sigmaColor
為空間高斯函數(shù)標(biāo)準(zhǔn)差,參數(shù)越大闷沥,臨近像素將會在越遠(yuǎn)的地方越小触徐。
sigmaSpace
灰度值相似性高斯函數(shù)標(biāo)準(zhǔn)差,參數(shù)越大狐赡,那些顏色足夠相近的的顏色的影響越大。
雙邊濾波是一種非線性的濾波方法疟丙,是結(jié)合圖像的空間鄰近度和像素值相似度的一種折衷處理颖侄,同時考慮空間與信息和灰度相似性,達(dá)到保邊去噪的目的享郊,具有簡單览祖、非迭代、局部處理的特點炊琉。之所以能夠達(dá)到保邊去噪的濾波效果是因為濾波器由兩個函數(shù)構(gòu)成:一個函數(shù)是由幾何空間距離決定濾波器系數(shù)展蒂,另一個是由像素差值決定濾波器系數(shù)又活。
- 特征:處理耗時。
- 作用:在濾波的同時能保證一定的邊緣信息锰悼。
# 邊緣保留濾波器——高斯雙邊模糊
def image_bifilter(image_path: str):
"""
高斯雙邊模糊
:param image_path: 圖片文件
:return: 無返回值
"""
img = cv.imread(image_path, cv.IMREAD_COLOR)
cv.imshow('input', img)
# 第三個參數(shù)是設(shè)置色彩柳骄、第四個參數(shù)是設(shè)置圖像坐標(biāo)
result = cv.bilateralFilter(img, 0, 50, 10)
cv.imshow('result', result)
cv.waitKey(0)
cv.destroyAllWindows()
if __name__ == '__main__':
path = 'images/2.png'
image_bifilter(path)
結(jié)果展示:
獲取更多計算機(jī)視覺內(nèi)容,請關(guān)注微信公眾號 ”AI與計算機(jī)視覺“箕般。