iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0
自我挑戰組

數位影像處理系列 第 9

[Day 9]影像濾波(2)-平均濾波與高斯濾波

  • 分享至 

  • xImage
  •  

今天我們要來介紹兩個基本的影像濾波技術-平均濾波與高斯濾波


1.平均濾波

平均濾波(Average Filtering)是最簡單的影像濾波技術,可對數位影像進行模糊化(Blur)處理。也經常稱為Box濾波器(Box Filter)。
程式碼如下:
import numpy as np
import cv2

img1 = cv2.imread("D:\Desktop\IThome\lena.bmp", -1)
img2 = cv2.blur(img1, (5, 5))
img3 = cv2.blur(img1, (11, 11))
img4 = cv2.blur(img1, (20, 20))

cv2.imshow("Orignial", img1)
cv2.imshow("5x5", img2)
cv2.imshow("11x11", img3)
cv2.imshow("20x20", img4)
cv2.waitKey()

上述範例中使用OpenCV提供的blur涵式,即可處理影像的平均濾波,其中後面的參數(5,5)代表5x5的大小。結果如下

https://ithelp.ithome.com.tw/upload/images/20220916/2015237028BhHY8OkO.png

平均濾波會使的影像變模糊,細節變平坦,因此也經常稱為影像模糊化(Image Blur)。當濾波器的大小愈大,模糊化的效果愈明顯。

2.高斯濾波

高斯濾波(Gaussian Filtering)採用二維的高斯函數作為濾波器的係數,高斯函數的定義如下:

https://ithelp.ithome.com.tw/upload/images/20220916/20152370L9tyIsFm8p.png
這是個很複雜的函數,不過我們只需要知道如何使用就好。高斯濾波與平均濾波類似,可對數位影像進行模糊化,或是消除雜訊。一個高斯濾波的程式碼如下:

import numpy as np
import cv2

img1 = cv2.imread("D:\Desktop\IThome\lena.bmp", -1)
img2 = cv2.GaussianBlur(img1, (5, 5), 0)


cv2.imshow("Orignial", img1)
cv2.imshow("5x5", img2)

cv2.waitKey()

此程式利用OpenCV提供的GaussianBlur涵式,進行數位影像的高斯濾波。若高斯濾波與平均濾波的大小一樣,則高斯濾波通常會保留較多的資訊。結果如下:
https://ithelp.ithome.com.tw/upload/images/20220916/20152370UcoNXSAQc4.png

今天對兩個入門的濾波技術有基礎理解,若有興趣的讀者也可自行設計高斯濾波,並呼叫OpenCV提供的二維濾波涵式Filter2D進行高斯濾波。
那我們明天見!


上一篇
[Day 8]影像濾波(1)-卷積介紹
下一篇
[Day 10] 影像梯度與銳化
系列文
數位影像處理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言