您好,登錄后才能下訂單哦!
這篇文章跟大家分析一下“如何進行Python OpenCV圖像模糊處理分析”。內容詳細易懂,對“如何進行Python OpenCV圖像模糊處理分析”感興趣的朋友可以跟著小編的思路慢慢深入來閱讀一下,希望閱讀后能夠對大家有所幫助。下面跟著小編一起深入學習“如何進行Python OpenCV圖像模糊處理分析”的知識吧。
其實我們平時在深度學習中所說的卷積操作,在 opencv 中也可以進行,或者說是類似操作。那么它是什么操作呢?它就是圖像的模糊(濾波)處理。
使用 opencv 中的cv2.blur(src, ksize)
函數。其參數說明是:
src
: 原圖像ksize
: 模糊核大小
原理:它只取內核區域下所有像素的平均值并替換中心元素。3x3 標準化的盒式過濾器如下所示:
特征:核中區域貢獻率相同。作用:對于椒鹽噪聲的濾除效果比較好。
# -*-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): """ 圖像卷積操作:設置卷積核大小,步距 :param image_path: :return: """ img = cv.imread(image_path, cv.IMREAD_COLOR) cv.imshow('input', img) # 模糊操作(類似卷積),第二個參數ksize是設置模糊內核大小 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)
結果展示:
高斯濾波使用的是cv2.GuassianBlur(img, ksize,sigmaX,sigmaY)
函數。
說明:sigmaX
,sigmaY
分別表示 X,Y 方向的標準偏差。如果僅指定了sigmaX
,則sigmaY
與sigmaX
相同;如果兩者都為零,則根據內核大小計算它們。
特征:核中區域貢獻率與距離區域中心成正比,權重與高斯分布相關。
作用:高斯模糊在從圖像中去除高斯噪聲方面非常有效。
def image_conv(image_path: str): """ 高斯模糊 :param image_path: :return: """ img = cv.imread(image_path, cv.IMREAD_COLOR) cv.imshow('img', img) # 高斯卷積(高斯濾波), 可以設置ksize,必須為奇數,不為0時,后面的步驟不起作用;也可以設置成(0,0),然后通過sigmaX和sigmaY計算標準偏差 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)
結果展示:
雙邊濾波(模糊)使用的是cv2.bilateralFilter(img,d, sigmaColor, sigmaSpace)
函數。
說明:d
為鄰域直徑,sigmaColor
為空間高斯函數標準差,參數越大,臨近像素將會在越遠的地方越小。
sigmaSpace
灰度值相似性高斯函數標準差,參數越大,那些顏色足夠相近的的顏色的影響越大。
雙邊濾波是一種非線性的濾波方法,是結合圖像的空間鄰近度和像素值相似度的一種折衷處理,同時考慮空間與信息和灰度相似性,達到保邊去噪的目的,具有簡單、非迭代、局部處理的特點。之所以能夠達到保邊去噪的濾波效果是因為濾波器由兩個函數構成:一個函數是由幾何空間距離決定濾波器系數,另一個是由像素差值決定濾波器系數。
特征:處理耗時。作用:在濾波的同時能保證一定的邊緣信息。
# 邊緣保留濾波器——高斯雙邊模糊 def image_bifilter(image_path: str): """ 高斯雙邊模糊 :param image_path: 圖片文件 :return: 無返回值 """ img = cv.imread(image_path, cv.IMREAD_COLOR) cv.imshow('input', img) # 第三個參數是設置色彩、第四個參數是設置圖像坐標 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)
結果展示:
關于如何進行Python OpenCV圖像模糊處理分析就分享到這里啦,希望上述內容能夠讓大家有所提升。如果想要學習更多知識,請大家多多留意小編的更新。謝謝大家關注一下億速云網站!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。