OpenCV(二十四):可分离滤波

简介: OpenCV(二十四):可分离滤波



1.可分离滤波的原理

      可分离滤波的原理基于滤波器的可分离性。对于一个二维滤波器,如果它可以表示为水平方向和垂直方向两个一维滤波器的卷积,那么它就是可分离的。也就是说,一个二维滤波器可以通过两次一维卷积来实现,分别在水平和垂直方向进行滤波。

2.可分离滤波函数sepFilter2D()

void cv::sepFilter2D ( InputArray  src,

OutputArray dst,

int   ddepth,

InputArray   kernelX,

InputArray    kernelY,

Point       anchor = point(-1,-1),

double        delta =0 ,

int     borderType = BORDER_DEFAULT

)

  • src:待滤波图像
  • dst:输出图像,与输入图像src具有相同的尺寸、通道数和数据类型
  • ddepth: 输出图像的数据类型(深度)。
  • kernelX:X方向的滤波器
  • kernelY:Y方向的滤波器
  • anchor:内核的基准点(锚点),其默认值为(-1,-1)代表内核基准点位于kernel的中心位置delta: 偏值,在计算结果中加上偏值。
  • borderType:像素外推法选择标志。

3.示例代码

展示如何使用可分离滤波在图像上应用高斯滤波:

//可分离滤波
void  Separable_filtering(Mat image){
    // 定义滤波器大小和标准差
    int ksize = 3;
    double sigma = 1.0;
    // 获取水平方向和垂直方向的高斯滤波器
    cv::Mat kernelX = cv::getGaussianKernel(ksize, sigma);
    cv::Mat kernelY = cv::getGaussianKernel(ksize, sigma);
    // 计算水平方向和垂直方向上的一维滤波器
    cv::Mat kernelXY = kernelX * kernelY.t();
    // 执行可分离滤波
    cv::Mat result;
    cv::sepFilter2D(image, result, -1, kernelX, kernelY);
 
}

在上述示例中,cv::getGaussianKernel()函数用于获取高斯滤波器。ksize参数表示滤波器的大小,sigmaXsigmaY参数表示X和Y方向上的标准差。

通过将一维滤波器应用于图像的两个方向,并使用cv::sepFilter2D()函数将它们结合起来,我们可以实现高效的可分离滤波操作。

目录
相关文章
|
1月前
|
计算机视觉
OpenCV(二十三):中值滤波
OpenCV(二十三):中值滤波
44 0
|
6月前
|
计算机视觉
openCV的中值滤波
openCV的中值滤波
22 0
|
6月前
|
计算机视觉
OpenCV-中值滤波cv::medianBlur
OpenCV-中值滤波cv::medianBlur
|
8月前
|
计算机视觉
opencv 之 各种滤波总结
opencv 之 各种滤波总结
|
4月前
|
计算机视觉
opencv滤波技术
opencv滤波技术
37 0
|
4月前
|
Serverless 计算机视觉
OpenCV(二十二):均值滤波、方框滤波和高斯滤波
OpenCV(二十二):均值滤波、方框滤波和高斯滤波
80 1
|
4月前
|
计算机视觉
[OpenCV] 图像的几种滤波方式
[OpenCV] 图像的几种滤波方式
22 0
|
9月前
|
资源调度 计算机视觉
07 OpenCV各类滤波
均值滤波器是一种基本的线性滤波器,常用于图像处理中的平滑操作。在 OpenCV 中,可以使用cv2.blur()函数或cv2.boxFilter()函数进行均值滤波操作。 均值滤波器的原理是将每个像素的灰度值替换为其周围像素灰度值的平均值。其核心思想是去除图像中的高频噪声,同时保留图像中的低频信息
|
11月前
|
资源调度 算法 API
OpenCV_06 图像平滑:图像噪声+图像平滑+滤波
由于图像采集、处理、传输等过程不可避免的会受到噪声的污染,妨碍人们对图像理解及分析处理。常见的图像噪声有高斯噪声、椒盐噪声等。
103 0
|
算法 计算机视觉 iOS开发
iOS使用OpenCV之滤波处理(三)
iOS使用OpenCV之滤波处理(三)
iOS使用OpenCV之滤波处理(三)