阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

详细介绍OpenCV实现可分离滤波

30次阅读
没有评论

共计 1573 个字符,预计需要花费 4 分钟才能阅读完成。

导读 这篇文章主要为大家详细介绍了 OpenCV 实现可分离滤波,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
自定义滤波

无论是图像卷积还是滤波,在原图像上移动滤波器的过程中每一次的计算结果都不会影响到后面过程的计算结果,因此图像滤波是一个并行的算法,在可以提供并行计算的处理器中可以极大的加快图像滤波的处理速度。

图像滤波还具有可分离性

先对 X(Y)方向滤波,再对 Y(X)方向滤波的结果与将两个方向的滤波器联合后整体滤波的结果相同。两个方向的滤波器的联合就是将两个方向的滤波器相乘,得到一个矩形的滤波器

详细介绍 OpenCV 实现可分离滤波

void filter2D( InputArray src, OutputArray dst, int ddepth,
                            InputArray kernel, Point anchor = Point(-1,-1),
                            double delta = 0, int borderType = BORDER_DEFAULT );
  • src:待滤波图像
  • dst:输出图像,与输入图像 src 具有相同的尺寸、通道数和数据类型。
  • ddepth:输出图像的数据类型(深度),根据输入图像的数据类型不同拥有不同的取值范围,具体的取值范围在表 5 - 1 给出,当赋值为 - 1 时,输出图像的数据类型自动选择。
  • kernel:滤波器。
  • anchor:内核的基准点 (锚点),其默认值为(-1,-1) 代表内核基准点位于 kernel 的中心位置。基准点即卷积核中与进行处理的像素点重合的点,其位置必须在卷积核的内部。
  • delta:偏值,在计算结果中加上偏值。
  • borderType:像素外推法选择标志,取值范围在表 3 - 5 中给出。默认参数为 BORDER_DEFAULT,表示不包含边界值倒序填充。
void 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:输出图像的数据类型(深度),根据输入图像的数据类型不同拥有不同的取值范围,具体的取值范围在表 5 - 1 给出,当赋值为 - 1 时,输出图像的数据类型自动选择。
  • kernelX:X 方向的滤波器,
  • kernelY:Y 方向的滤波器。
  • anchor:内核的基准点 (锚点),其默认值为(-1,-1) 代表内核基准点位于 kernel 的中心位置。基准点即卷积核中与进行处理的像素点重合的点,其位置必须在卷积核的内部。
  • delta:偏值,在计算结果中加上偏值。
  • borderType:像素外推法选择标志,取值范围在表 3 - 5 中给出。默认参数为 BORDER_DEFAULT,表示不包含边界值倒序填充。
简单示例
//
// Created by smallflyfly on 2021/6/15.
//
  
#include "opencv2/highgui.hpp"
#include "opencv2/opencv.hpp"
  
#include 
  
using namespace std;
using namespace cv;
  
int main() {float points[] = {
            1, 2, 3, 4, 5,
            6, 7, 8, 9, 10,
            11, 12, 13, 14, 15,
            16, 17, 18, 19, 20,
            21, 22, 23, 24, 25
    };
    Mat data(5, 5, CV_32FC1, points);
  
    // 验证高斯滤波器可分离
    Mat gaussX = getGaussianKernel(3, 1);
    cout (3, 1) 

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1573字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中