OpenCV Python 图像滤波

OpenCV Python 图像滤波

图像基本上是一个由二进制值表示的像素矩阵,取值范围为0到255,对应灰度值。彩色图像将是一个三维矩阵,通道数对应RGB。

图像滤波是一种对像素值进行平均处理的过程,以改变原始图像的阴影、亮度、对比度等。

通过应用低通滤波器,我们可以去除图像中的任何噪声。高通滤波器有助于检测边缘。

OpenCV库提供了 cv2.filter2D() 函数。它通过3X3或5X5等大小的方形矩阵内的核对原始图像进行卷积。

卷积将核矩阵在图像矩阵上水平和垂直滑动。对于每个位置,将核下的所有像素相加,取核下像素的平均值,并用平均值替换中心像素。

对所有像素执行此操作,以获取输出图像像素矩阵。参考下图:

OpenCV Python 图像滤波

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 Python 图像滤波

滤波函数的类型

OpenCV中其他类型的滤波函数包括:

  • BilateralFilter - 保持边缘完整的降噪方法。

  • BoxFilter - 这是一个平均模糊操作。

  • GaussianBlur - 消除高频内容,如噪点和边缘。

  • MedianBlur - 取中值代替中心像素,而不是取平均值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程