機器學習進階-閾值與平滑-圖像平滑操作(去噪操作) 1. cv2.blur(均值濾波) 2.cv2.boxfilter(方框濾波) 3. cv2.Guassiannblur(進行高斯濾波) 4. cv2.medianBlur(進行中值濾波)


 

1.cv2.blur(img, (3, 3))  進行均值濾波

參數說明:img表示輸入的圖片, (3, 3) 表示進行均值濾波的方框大小

2. cv2.boxfilter(img, -1, (3, 3), normalize=True) 表示進行方框濾波,

參數說明當normalize=True時,與均值濾波結果相同, normalize=False,表示對加和后的結果不進行平均操作,大於255的使用255表示

3. cv2.Guassianblur(img, (3, 3), 1) 表示進行高斯濾波, 

參數說明: 1表示σ, x表示與當前值得距離,計算出的G(x)表示權重值

4. cv2.medianBlur(img, 3) #中值濾波,相當於將9個值進行排序,取中值作為當前值

參數說明:img表示當前的圖片,3表示當前的方框尺寸

在圖像的讀取中,會存在一些躁聲點,如一些白噪聲,因此我們需要進行去躁操作

代碼:

1.原始圖片的輸入

2.使用cv2.blur進行均值濾波

3.使用cv2.boxfilter 進行方框濾波, 比較normalize=True or normalize=False

4.使用cv2.GussianBlur 進行高斯濾波

5. 使用cv2.medianBlur  進行中值濾波

6.做一個合並顯示

import cv2
import numpy as np

# 1.圖片中存在一些噪音點
img = cv2.imread('lenaNoise.png')
cv2.imshow('original', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 2. cv2.blur 使用均值濾波,即當對一個值進行濾波時,使用當前值與周圍8個值之和,取平均做為當前值

mean = cv2.blur(img, (3, 3))
cv2.imshow('mean', mean)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 3. cv2.boxFilter 表示進行方框濾波
box = cv2.boxFilter(img, -1, (3, 3), normalize=True)
cv2.imshow('box', box)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 當normalize=False 表示對加和后的9個點,不進行求平均的操作,如果加和后的值大於255,使用255表示
box_1 = cv2.boxFilter(img, -1, (3, 3), normalize=False)
cv2.imshow('box_1', box_1)
cv2.waitKey(0)
cv2.destroyAllWindows()

               

# 4. cv2.GaussianBlur 根據高斯的距離對周圍的點進行加權,求平均值1,0.8, 0.6, 0.8 
gaussian = cv2.GaussianBlur(img, (5, 5), 1)
cv2.imshow('gaussian', gaussian)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 5. cv2.medianBlur #將9個數據從小到大排列,取中間值作為當前值
median = cv2.medianBlur(img, 3)
cv2.imshow('median', median)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 6. 做一個合並顯示
imags = np.vstack((mean, gaussian, median))
cv2.imshow('all', imags)
cv2.waitKey(0)
cv2.destroyAllWindows()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM