- OpenCV Python 教程
- OpenCV Python - 首頁
- OpenCV Python - 概述
- OpenCV Python - 環境配置
- OpenCV Python - 讀取影像
- OpenCV Python - 寫入影像
- OpenCV Python - 使用 Matplotlib
- OpenCV Python - 影像屬性
- OpenCV Python - 位運算
- OpenCV Python - 形狀和文字
- OpenCV Python - 滑鼠事件
- OpenCV Python - 新增軌跡條
- OpenCV Python - 縮放和旋轉
- OpenCV Python - 影像閾值
- OpenCV Python - 影像濾波
- OpenCV Python - 邊緣檢測
- OpenCV Python - 直方圖
- OpenCV Python - 顏色空間
- OpenCV Python - 影像變換
- OpenCV Python - 影像輪廓
- OpenCV Python - 模板匹配
- OpenCV Python - 影像金字塔
- OpenCV Python - 影像加法
- OpenCV Python - 影像混合
- OpenCV Python - 傅立葉變換
- OpenCV Python - 捕捉影片
- OpenCV Python - 播放影片
- OpenCV Python - 從影片中提取影像
- OpenCV Python - 從影像生成影片
- OpenCV Python - 人臉檢測
- OpenCV Python - 均值漂移/CamShift
- OpenCV Python - 特徵檢測
- OpenCV Python - 特徵匹配
- OpenCV Python - 數字識別
- OpenCV Python 資源
- OpenCV Python - 快速指南
- OpenCV Python - 資源
- OpenCV Python - 討論
OpenCV Python - 影像濾波
影像基本上是由0到255之間的二進位制值表示的畫素矩陣,這些值對應於灰度值。彩色影像是具有對應於RGB通道數量的三維矩陣。
影像濾波是一個對畫素值進行平均以改變原始影像的陰影、亮度、對比度等的過程。
透過應用低通濾波器,我們可以去除影像中的任何噪聲。高通濾波器有助於檢測邊緣。
OpenCV庫提供`cv2.filter2D()`函式。它使用大小為3x3或5x5等的方形矩陣核心對原始影像進行卷積。
卷積將核心矩陣水平和垂直地滑過影像矩陣。對於每個位置,將核心下的所有畫素相加,取核心下畫素的平均值,並用平均值替換中心畫素。
對所有畫素執行此操作以獲得輸出影像畫素矩陣。請參考下圖:
`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()
輸出
濾波函式型別
OpenCV中的其他濾波函式包括:
雙邊濾波器 (BilateralFilter) - 減少不需要的噪聲,同時保持邊緣完整。
方框濾波器 (BoxFilter) - 這是一種平均模糊操作。
高斯模糊 (GaussianBlur) - 消除高頻內容,例如噪聲和邊緣。
中值濾波器 (MedianBlur) - 它不取平均值,而是取核心下所有畫素的中值,並替換中心值。
廣告