上海開藝設(shè)計(jì)集團(tuán)有限公司網(wǎng)站優(yōu)化推廣排名
本文對(duì)均值、中值和高斯濾波進(jìn)行詳解,以幫助大家理解和使用。
這里寫目錄標(biāo)題
- 均值濾波
- 中值濾波
- 高斯濾波
- 核大小為(9,9)
- 核大小為(51,51)
- 小結(jié)
下面是示例中使用的原圖。
均值濾波
均值濾波是一種簡(jiǎn)單的平滑濾波器,它通過(guò)將每個(gè)像素點(diǎn)的值設(shè)置為其鄰域內(nèi)像素點(diǎn)的平均值來(lái)消除噪聲。均值濾波器通常用于去除高斯噪聲和均勻噪聲。
import cv2
import numpy as np# 讀入圖像
img = cv2.imread('Noisy.jpg')# 定義濾波器大小
kernel_size = (5, 5)# 進(jìn)行均值濾波
blur = cv2.blur(img, kernel_size)# 顯示原圖和濾波后的圖像
cv2.imshow('Original Image', img)
cv2.imshow('Blur Image', blur)
cv2.imwrite("meanImage.jpg",blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
效果圖:
可以通過(guò)改變kernel_size = (5, 5)大小,來(lái)改變?yōu)V波結(jié)果。
中值濾波
中值濾波是一種非線性平滑濾波器,它將每個(gè)像素點(diǎn)的值設(shè)置為其鄰域內(nèi)像素點(diǎn)中值來(lái)消除噪聲。中值濾波器通常用于去除椒鹽噪聲和其他孤立的噪聲點(diǎn)。
import cv2
import numpy as np# 讀入圖像
img = cv2.imread('Noisy.jpg')# 定義濾波器大小
#kernel_size = (5, 5)# 進(jìn)行中值濾波
median = cv2.medianBlur(img, 5)# 顯示原圖和濾波后的圖像
cv2.imshow('Original Image', img)
cv2.imshow('Median Image', median)
cv2.imwrite("zhongImage.jpg",median)
cv2.waitKey(0)
cv2.destroyAllWindows()
高斯濾波
高斯濾波是一種基于高斯函數(shù)的平滑濾波器,它通過(guò)將每個(gè)像素點(diǎn)的值設(shè)置為其鄰域內(nèi)像素點(diǎn)的高斯加權(quán)平均值來(lái)消除噪聲。高斯濾波器通常用于去除高斯噪聲和其他類型的噪聲,同時(shí)保留圖像的邊緣信息。
import cv2
import numpy as np# 讀入圖像
img = cv2.imread('Noisy.jpg')# 定義濾波器大小和標(biāo)準(zhǔn)差
kernel_size = (9, 9)
sigmaX = 3 # X方向的標(biāo)準(zhǔn)差,可以根據(jù)需要調(diào)整
sigmaY = 3 # Y方向的標(biāo)準(zhǔn)差,可以根據(jù)需要調(diào)整# 進(jìn)行高斯濾波
gsblur = cv2.GaussianBlur(img, kernel_size, sigmaX, sigmaY)
# 顯示原圖和濾波后的圖像
cv2.imshow('Original Image', img)
cv2.imshow('gsblur Image', gsblur )
cv2.imwrite("gsblur9*9.jpg",gsblur )
cv2.waitKey(0)
cv2.destroyAllWindows()
運(yùn)行結(jié)果:
核大小為(9,9)
改變核大小為9*9,效果為:
核大小為(51,51)
小結(jié)
本文使用的原圖噪聲級(jí)別較高,所以各濾波結(jié)果的差距較小,但可以看出,隨著核大小的增大,圖像變得更平滑,但也變得更模糊。
在應(yīng)用時(shí),可以調(diào)整核的大小,以滿足自己的降噪場(chǎng)景和效果。