OpenCV Python - 影像濾波



影像基本上是由0到255之間的二進位制值表示的畫素矩陣,這些值對應於灰度值。彩色影像是具有對應於RGB通道數量的三維矩陣。

影像濾波是一個對畫素值進行平均以改變原始影像的陰影、亮度、對比度等的過程。

透過應用低通濾波器,我們可以去除影像中的任何噪聲。高通濾波器有助於檢測邊緣。

OpenCV庫提供`cv2.filter2D()`函式。它使用大小為3x3或5x5等的方形矩陣核心對原始影像進行卷積。

卷積將核心矩陣水平和垂直地滑過影像矩陣。對於每個位置,將核心下的所有畫素相加,取核心下畫素的平均值,並用平均值替換中心畫素。

對所有畫素執行此操作以獲得輸出影像畫素矩陣。請參考下圖:

Pixel Matrix

`cv2.filter2D()`函式需要輸入陣列、核心矩陣和輸出陣列引數。

示例

下圖使用此函式透過二維卷積獲得平均影像。相應的程式如下:

import numpy as np
import cv2 as cv
from matplotlib import pyplot as plt
img = cv.imread('opencv_logo_gs.png')
kernel = np.ones((3,3),np.float32)/9
dst = cv.filter2D(img,-1,kernel)
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(dst),plt.title('Convolved')
plt.xticks([]), plt.yticks([])
plt.show()

輸出

Pixel Matrix

濾波函式型別

OpenCV中的其他濾波函式包括:

  • 雙邊濾波器 (BilateralFilter) - 減少不需要的噪聲,同時保持邊緣完整。

  • 方框濾波器 (BoxFilter) - 這是一種平均模糊操作。

  • 高斯模糊 (GaussianBlur) - 消除高頻內容,例如噪聲和邊緣。

  • 中值濾波器 (MedianBlur) - 它不取平均值,而是取核心下所有畫素的中值,並替換中心值。

廣告
© . All rights reserved.