日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【opencv】(3) 图像滤波:均值、方框、中值、高斯

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【opencv】(3) 图像滤波:均值、方框、中值、高斯 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內容有: 均值濾波?cv2.blur(),方框濾波?cv2.boxFilter(),高斯濾波?cv2.GaussianBlur(),中值濾波 cv2.medianBlur()


濾波可理解為,平均卷積操作。對于圖像上存在的噪聲點,通過濾波平滑處理操作,可以去除噪聲點。在開始前我們先導入需要用的庫文件,獲取需要用到的圖片。

import cv2
# 指定圖像所在文件夾位置
filepath = 'C:\\Users\\admin\\.spyder-py3\\test\\opencv\\img'
# 獲取文件夾中某張圖像
img = cv2.imread(filepath+'\\lina.jpg')
# 顯示圖像
cv2.imshow('img',img) # (自定義窗口名,圖象變量)
cv2.waitKey(0) # 圖像不會自動消失
cv2.destoryAllWindows() # 按下任意鍵圖像消失

1. 均值濾波

原理: 卷積核在圖像上滑動,將核的錨點放在該特定位置的像素上,同時,核內的其他值與該像素鄰域的各像素重合;對卷積核內的所有像素值求平均,將所得結果放到與錨點對應的像素上;對圖像所有像素重復上述過程。

方法:cv2.blur(img, ksize)

img表示圖像變量;ksize表示卷積核大小(n,n),卷積核是值全為1的矩陣

#(1)均值濾波
# 參數:輸入的圖像數據,卷積核大小,即滑窗的寬和高,一般用奇數
blur = cv2.blur(img,(3,3))
# 顯示圖像
cv2.imshow('blur',blur)
cv2.waitKey(0)
cv2.destoryAllWindows()

??


2. 方框濾波

原理: 卷積核在圖像上滑動,將核的錨點放在該特定位置的像素上,同時,核內的其他值與該像素鄰域的各像素重合;方框濾波有2種方法(1)將卷積核內所有像素值相加,超過255的像素值變成255(2)對卷積核內的所有像素值求平均將所得結果放到與錨點對應的像素上;對圖像所有像素重復上述過程。

如果方框濾波使用第2種方法得到的結果和均值濾波的結果一樣。

濾波函數:?cv2.boxFilter(img, -1, ksize, normalize)

img代表輸入圖像;-1代表得到的結果在顏色通道上是一致的,一般不用改;ksize代表卷積核大小;normalize代表是否歸一化,如果為True,得到的結果同均值濾波。

#(2)方框濾波
# 卷積核3*3
box = cv2.boxFilter(img,-1,(3,3),normalize=True)
# 顯示圖像
cv2.imshow('box',box)
cv2.waitKey(0)
cv2.destoryAllWindows()

下圖左側是normalize=False的圖像,右側是normalize=True的圖像

??


3. 高斯濾波

原理: 卷積核在圖像上滑動,將核的錨點放在該特定位置的像素上,同時,核內的其他值與該像素鄰域的各像素重合;卷積核內的權重值服從高斯分布,離中心點越近的點權值越大。將卷積核內各值與相應像素值做內積,將乘積相加后求平均,將所得結果放到與錨點對應的像素上;對圖像所有像素重復上述過程。

濾波方法:?cv2.GaussianBlur(img, ksize, 標準差x, 標準差y)

img代表輸入圖像;ksize卷積核大小,滑窗寬度高度為奇數;標準差x代表沿x方向的卷積核的標準差;標準差y代表沿y方向的卷積核的標準差,不設置的話則和x軸的標準差一致

# 輸入圖像,卷積核大小,沿x軸方向的標準差=1,沿y軸標準差不設置的話和沿x軸一樣
aussian = cv2.GaussianBlur(img, (5,5), 1)
# 顯示圖像
cv2.imshow('aussian',aussian)
cv2.waitKey(0)
cv2.destoryAllWindows()

下圖左側為原圖,右側為高斯濾波后的圖

??


4. 中值濾波

原理: 卷積核在圖像上滑動,將核的錨點放在該特定位置的像素上,同時,核內的其他值與該像素鄰域的各像素重合;被卷積核框住的像素值從小到大排序,取中間大小的像素值代替滑窗中最中間的值。將所得結果放到與錨點對應的像素上;對圖像所有像素重復上述過程。

濾波方法:?cv2.medianBlur(img, ksize)

img代表輸入的圖像,ksize代表濾波模板的尺寸大小,填一個數值,必須是大于1的奇數

#(4)中值濾波
median = cv2.medianBlur(img,5) # 用5*5的卷積核去做滑窗,排序后,取中間那個值
# 顯示圖像
cv2.imshow('median',median)
cv2.waitKey(0)
cv2.destoryAllWindows()

下圖左側為原圖,右側為濾波后的圖像。可以看出,中值濾波對處理椒鹽噪聲具有很好的效果。

??


最后我們來把這三種濾波(均值、高斯、中值)圖像放在一起看一下

#(5)一個窗口顯示多個圖像
# np.hstack()表示沿著橫向堆疊
# np.vstack()表示沿著縱向堆疊
# 參數應該為一個元組
import numpy as np
res = np.hstack((blur,aussian,median))
# 圖像顯示
cv2.imshow('result',res)
cv2.waitKey(0)
cv2.destoryAllWindows()

總結

以上是生活随笔為你收集整理的【opencv】(3) 图像滤波:均值、方框、中值、高斯的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。