《數(shù)字圖像處理-OpenCV/Python》連載:空間濾波之高斯濾波器
本書京東 優(yōu)惠購(gòu)書鏈接 https://item.jd.com/14098452.html
本書CSDN 獨(dú)家連載專欄 https://blog.csdn.net/youcans/category_12418787.html
第 10 章 圖像卷積與空間濾波
圖像濾波是指在盡可能保留圖像細(xì)節(jié)特征的條件下對(duì)目標(biāo)圖像的噪聲進(jìn)行抑制,是常用的圖像處理方法。
空間濾波也稱空間域?yàn)V波,濾波器規(guī)定了鄰域形狀與鄰域像素的處理方法。線性濾波通過(guò)圖像與濾波器核進(jìn)行卷積計(jì)算,非線性濾波則包含了絕對(duì)值、置零和統(tǒng)計(jì)等非線性運(yùn)算,通過(guò)邏輯運(yùn)算實(shí)現(xiàn)圖像濾波。
本章內(nèi)容概要
- 學(xué)習(xí)圖像的卷積運(yùn)算,介紹可分離卷積核與圖像的邊界擴(kuò)充。
- 學(xué)習(xí)典型的空間濾波器,包括盒式濾波器和高斯濾波器。
- 介紹常用的非線性濾波器,包括統(tǒng)計(jì)排序?yàn)V波器、自適應(yīng)濾波器和雙邊濾波器。
- 學(xué)習(xí)常用的梯度算子,包括Laplacian算子、Sobel算子和Scharr算子。
- 介紹圖像金字塔,包括高斯金字塔和拉普拉斯金字塔。
10.3 空間濾波之高斯濾波器
高斯濾波器(Gaussian Filter)是以高斯核函數(shù)為權(quán)函數(shù)的濾波器,在信號(hào)和圖像處理領(lǐng)域的應(yīng)用非常廣泛。
高斯核函數(shù)的數(shù)學(xué)描述如下。
w ( s , t ) = G ( s , t ) = 1 2 π σ 2 e ? r 2 / 2 σ 2 w(s,t) = G(s,t) =\frac{1}{2\pi\sigma^2} e^{-r^2/2\sigma^2} w(s,t)=G(s,t)=2πσ21?e?r2/2σ2
式中, σ \sigma σ 是高斯核的標(biāo)準(zhǔn)差(尺度因子);r 表示任意點(diǎn)到中心點(diǎn)的距離。
高斯卷積核有很多重要的性質(zhì)。
(1) 高斯卷積核是圓對(duì)稱(各向同性)的,中心點(diǎn)的權(quán)重最大,離中心點(diǎn)越遠(yuǎn),權(quán)重越小。
(2) 高斯卷積核是可分離卷積核,可以通過(guò)水平卷積核和垂直卷積核實(shí)現(xiàn)對(duì)圖像的卷積。
(3) 高斯卷積核的有效尺寸為
(
6
σ
+
1
)
(
6
σ
+
1
)
(6\sigma+1) (6\sigma+1)
(6σ+1)(6σ+1) ,尺寸越大,平滑程度越高。
OpenCV中的函數(shù)cv.GaussianBlur用于實(shí)現(xiàn)高斯低通濾波,函數(shù)cv.getGaussianKernel用于計(jì)算一維高斯濾波器的系數(shù)。
函數(shù)原型
cv.GaussianBlur(src, ksize, sigmaX[, dst, sigmaY, borderType]) → dst
cv.getGaussianKernel(ksize, sigma[, ktype]) → retval
參數(shù)說(shuō)明
- src:輸入圖像,是多維Numpy數(shù)組,允許為單通道圖像或多通道圖像。
- dst:輸出圖像,大小和通道數(shù)與src相同。
- ksize:高斯濾波器核的尺寸,格式為元組(w,h),0表示由sigma計(jì)算。
- sigmaX:x軸方向的高斯核標(biāo)準(zhǔn)差。
- sigmaY:y軸方向的高斯核標(biāo)準(zhǔn)差,可選項(xiàng),默認(rèn)值為0。
- sigma:高斯核的標(biāo)準(zhǔn)差,是浮點(diǎn)型數(shù)據(jù)。
- borderType:邊界擴(kuò)充類型,可選項(xiàng),不支持BORDER_WRAP。
- ktype:高斯核的數(shù)據(jù)類型,可選項(xiàng),默認(rèn)值為CV_64F,可選CV_32F。
- retval:返回值,是一維高斯核的系數(shù),形狀為(ksize,1)的Numpy數(shù)組。
注意問(wèn)題
- (1) 高斯核標(biāo)準(zhǔn)差sigmaX不能省略,sigmaY可以省略,缺省時(shí),表示sigmaY=sigmaX。
- (2) 如果sigmaX=sigmaY=0,則由ksize計(jì)算:sigma=0.3*[(ksize-1)/2-1]+0.8 。
- (3) 如果 ksize=0,則由 sigma 自動(dòng)計(jì)算 ksize。
- (4) ksize 的寬度 w 與高度 h 必須是奇數(shù)。
- (5) 注意在函數(shù)cv.GaussianBlur中,ksize的格式為元組 (w,h),表示濾波器的尺寸;而在函數(shù)cv.getGaussianKernel中,ksize的格式為數(shù)值,表示濾波器的孔徑。
- (6) 使用函數(shù) cv.GaussianBlur時(shí),推薦對(duì)ksize、sigmaX、sigmaY都進(jìn)行賦值。
- (7) 函數(shù)cv.getGaussianKernel能返回一維高斯濾波器的系數(shù),形狀為(ksize,1)。
【例程1003】空間濾波之高斯濾波器
本例程介紹高斯濾波器的使用。
# 【1003】空間濾波之高斯低通濾波器
import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
if __name__ == '__main__':
img = cv.imread("../images/Fig1001.png", flags=0) # 讀取灰度圖像
# (1) 計(jì)算高斯核
kernX = cv.getGaussianKernel(5, 0) # 一維高斯核
kernel = kernX * kernX.T # 二維高斯核
print("1D kernel of Gaussian:{}".format(kernX.shape))
print(kernX.T.round(4))
print("2D kernel of Gaussian:{}".format(kernel.shape))
print(kernel.round(4))
# (2) 高斯低通濾波核
ksize = (11, 11) # 高斯濾波器核的尺寸
GaussBlur11 = cv.GaussianBlur(img, ksize, 0) # sigma 由 ksize 計(jì)算
ksize = (43, 43)
GaussBlur43 = cv.GaussianBlur(img, ksize, 0)
plt.figure(figsize=(9, 3.2))
plt.subplot(131), plt.axis('off'), plt.title("1. Original")
plt.imshow(img, cmap='gray', vmin=0, vmax=255)
plt.subplot(132), plt.axis('off'), plt.title("2. GaussianFilter (k=11)")
plt.imshow(GaussBlur11, cmap='gray', vmin=0, vmax=255)
plt.subplot(133), plt.axis('off'), plt.title("3. GaussianFilter (k=43)")
plt.imshow(GaussBlur43, cmap='gray', vmin=0, vmax=255)
plt.tight_layout()
plt.show()
運(yùn)行結(jié)果:
1D kernel of Gaussian:(5, 1)
[[0.0625 0.25 0.375 0.25 0.0625]]
2D kernel of Gaussian:(5, 5)
[[0.0039 0.0156 0.0234 0.0156 0.0039]
[0.0156 0.0625 0.0938 0.0625 0.0156]
[0.0234 0.0938 0.1406 0.0938 0.0234]
[0.0156 0.0625 0.0938 0.0625 0.0156]
[0.0039 0.0156 0.0234 0.0156 0.0039]]
程序說(shuō)明:
(1) 函數(shù)cv.getGaussianKernel能返回一維高斯濾波器的系數(shù),可以由此計(jì)算并得到二維高斯濾波器的系數(shù)。
(2) 運(yùn)行結(jié)果,高斯低通濾波器的濾波圖像如圖10-3所示。圖10-3(2)和圖10-3(3)所示為使用不同濾波器尺寸的平滑圖像。高斯核的標(biāo)準(zhǔn)差sigma越大,高斯濾波器核的尺寸ksize越大,濾波圖像越模糊。
圖10-3 高斯低通濾波器的濾波圖像
版權(quán)聲明:
youcans@xupt 原創(chuàng)作品,轉(zhuǎn)載必須標(biāo)注原文鏈接:(https://blog.csdn.net/youcans/article/details/135370696)
Copyright 2024 youcans, XUPT
Crated:2024-01-03文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-783590.html
《數(shù)字圖像處理-OpenCV/Python》 獨(dú)家連載專欄 : https://blog.csdn.net/youcans/category_12418787.html文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-783590.html
到了這里,關(guān)于《數(shù)字圖像處理-OpenCV/Python》連載:空間濾波之高斯濾波器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!