Python OpenCV對(duì)圖像進(jìn)行模糊處理詳解流程
其實(shí)我們平時(shí)在深度學(xué)習(xí)中所說(shuō)的卷積操作,在 opencv 中也可以進(jìn)行,或者說(shuō)是類(lèi)似操作。那么它是什么操作呢?它就是圖像的模糊(濾波)處理。
均值濾波
使用 opencv 中的cv2.blur(src, ksize)
函數(shù)。其參數(shù)說(shuō)明是:
src
: 原圖像ksize
: 模糊核大小
原理:它只取內(nèi)核區(qū)域下所有像素的平均值并替換中心元素。3x3 標(biāo)準(zhǔn)化的盒式過(guò)濾器如下所示:
- 特征:核中區(qū)域貢獻(xiàn)率相同。
- 作用:對(duì)于椒鹽噪聲的濾除效果比較好。
# -*-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) # 模糊操作(類(lèi)似卷積),第二個(gè)參數(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ù)。
說(shuō)明:sigmaX
,sigmaY
分別表示 X,Y 方向的標(biāo)準(zhǔn)偏差。如果僅指定了sigmaX
,則sigmaY
與sigmaX
相同;如果兩者都為零,則根據(jù)內(nèi)核大小計(jì)算它們。
- 特征:核中區(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í),后面的步驟不起作用;也可以設(shè)置成(0,0),然后通過(guò)sigmaX和sigmaY計(jì)算標(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ù)。
說(shuō)明:d
為鄰域直徑,sigmaColor
為空間高斯函數(shù)標(biāo)準(zhǔn)差,參數(shù)越大,臨近像素將會(huì)在越遠(yuǎn)的地方越小。
sigmaSpace
灰度值相似性高斯函數(shù)標(biāo)準(zhǔn)差,參數(shù)越大,那些顏色足夠相近的的顏色的影響越大。
雙邊濾波是一種非線性的濾波方法,是結(jié)合圖像的空間鄰近度和像素值相似度的一種折衷處理,同時(shí)考慮空間與信息和灰度相似性,達(dá)到保邊去噪的目的,具有簡(jiǎn)單、非迭代、局部處理的特點(diǎn)。之所以能夠達(dá)到保邊去噪的濾波效果是因?yàn)闉V波器由兩個(gè)函數(shù)構(gòu)成:一個(gè)函數(shù)是由幾何空間距離決定濾波器系數(shù),另一個(gè)是由像素差值決定濾波器系數(shù)。
- 特征:處理耗時(shí)。
- 作用:在濾波的同時(shí)能保證一定的邊緣信息。
# 邊緣保留濾波器——高斯雙邊模糊 def image_bifilter(image_path: str): """ 高斯雙邊模糊 :param image_path: 圖片文件 :return: 無(wú)返回值 """ img = cv.imread(image_path, cv.IMREAD_COLOR) cv.imshow('input', img) # 第三個(gè)參數(shù)是設(shè)置色彩、第四個(gè)參數(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é)果展示:
到此這篇關(guān)于Python OpenCV對(duì)圖像進(jìn)行模糊處理詳解流程的文章就介紹到這了,更多相關(guān)Python 圖像模糊處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
3分鐘學(xué)會(huì)一個(gè)Python小技巧
Python時(shí)間日期轉(zhuǎn)換在開(kāi)發(fā)中是非常高頻的一個(gè)操作,你經(jīng)常會(huì)遇到需要將字符串轉(zhuǎn)換成 datetime 或者是反過(guò)來(lái)將 datetime 轉(zhuǎn)換成字符串,今天小編給大家?guī)?lái)了一個(gè)Python小技巧,感興趣的朋友一起看看吧2018-11-11Python實(shí)現(xiàn)倉(cāng)庫(kù)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)倉(cāng)庫(kù)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05基于Linux系統(tǒng)中python matplotlib畫(huà)圖的中文顯示問(wèn)題的解決方法
下面小編就為大家?guī)?lái)一篇基于Linux系統(tǒng)中python matplotlib畫(huà)圖的中文顯示問(wèn)題的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06python使用multiprocessing的詳細(xì)方法
multiprocessing是Python標(biāo)準(zhǔn)庫(kù)中的一個(gè)模塊,用于實(shí)現(xiàn)多進(jìn)程編程,它提供了一種簡(jiǎn)單而高效的方式來(lái)利用多核處理器的能力,通過(guò)在多個(gè)進(jìn)程中同時(shí)執(zhí)行任務(wù),加快程序的執(zhí)行速度和提高系統(tǒng)的吞吐量,這篇文章主要介紹了python使用multiprocessing,需要的朋友可以參考下2024-03-03