📜  OpenCV图像过滤器(1)

📅  最后修改于: 2023-12-03 15:03:22.904000             🧑  作者: Mango

OpenCV图像过滤器介绍

OpenCV是一个开放源代码的计算机视觉库,提供了许多图像处理和计算机视觉算法,包括图像过滤器。图像过滤器是一种可以改变图像外观和属性的技术。这篇文章将向程序员们介绍OpenCV图像过滤器的基础知识和使用方法。

图像过滤器分类

OpenCV中的图像过滤器主要分为两种:滤波器和变换器。

  • 滤波器:基于图像的像素的局部区域来处理像素值。根据处理方式,滤波器可以分为低通滤波器和高通滤波器。

    • 低通滤波器:将高频内容滤除,保留低频内容,常用于模糊和平滑图像。
    • 高通滤波器:将低频内容滤除,保留高频内容,常用于增强图像边缘和细节。
  • 变换器:通过应用变换的方式对图像进行处理,如傅里叶变换、拉普拉斯变换、Canny边缘检测等。

OpenCV滤波器函数

OpenCV提供了多种滤波器函数,包括低通滤波器函数、高通滤波器函数、中值滤波器函数、Bilateral滤波器函数等,这里只介绍几个常用的滤波器函数:

cv2.blur()
dst = cv2.blur(src,ksize)

功能:利用归一化卷积框来进行模糊化处理。

src:输入图像

dst:输出图像

ksize:卷积核的大小。如(3,3)表示3x3的卷积核,(5,5)表示5x5的卷积核。

# 示例代码
import cv2  
import numpy as np  

img=cv2.imread('lena.jpg') 

# 模糊处理,卷积框大小为(5,5)
dst=cv2.blur(img, (5,5))  

cv2.imshow('dst',dst)  
cv2.waitKey(0)  
cv2.destroyAllWindows()
cv2.GaussianBlur()
dst = cv2.GaussianBlur(src,ksize,sigmaX[,sigmaY[,borderType]])

功能:实现高斯滤波器,卷积核中心元素权重高,逐渐递减至边缘。

src:输入图像

dst:输出图像

ksize:高斯核尺寸,如(3,3)表示3x3的高斯核。

sigmaX:高斯核在X方向上的标准偏差。

sigmaY:高斯核在Y方向上的标准偏差。如果sigmaY=0,则与sigmaX相同。

borderType:边缘填充方式。

# 示例代码
import cv2  
import numpy as np  

img=cv2.imread('lena.jpg') 

# 高斯滤波,卷积核大小为(5,5),sigmaX=5
dst=cv2.GaussianBlur(img, (5,5), 5)  

cv2.imshow('dst',dst)  
cv2.waitKey(0)  
cv2.destroyAllWindows()
cv2.medianBlur()
dst = cv2.medianBlur(src,ksize)

功能:中值滤波器

src:输入图像

dst:输出图像

ksize:滤波器大小,必须是奇数。

# 示例代码
import cv2  
import numpy as np  

img=cv2.imread('lena.jpg') 

# 中值滤波,卷积框大小为5
dst=cv2.medianBlur(img, 5)  

cv2.imshow('dst',dst)  
cv2.waitKey(0)  
cv2.destroyAllWindows()
结论

本文简要介绍了OpenCV图像过滤器的基础知识和常用函数,复杂应用仍需探索。图片质量影响算法的迭代效果,应尽可能进行归一化处理。