opencv(Python/c++):滤波(方框滤波,均值滤波,高斯滤波,中值滤波,双边滤波)

本文深入探讨了图像滤波的基本概念及其在图像处理中的应用,包括线性滤波(如方框滤波、均值滤波、高斯滤波)和非线性滤波(如中值滤波、双边滤波)。通过C++代码示例,详细展示了各种滤波方法的实现过程及效果对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python中的滤波体现在cameo项目,到时候再移植一下。

什么是图像滤波?

图像滤波,是指保留图像细节特征的条件下对目标图像的噪声进行抑制,称之为图像平滑化或者滤波

滤波分为线性滤波和非线性滤波:

  • 线性滤波:方框滤波,均值滤波,高斯滤波
  • 非线性滤波:中值滤波(能够去除脉冲噪声,椒盐噪声同时又能够保留图像的边缘细节),双边滤波(可以做边缘保存)

其中高斯低通就是模糊高通就是锐化
正态分布就是高斯分布。
通常在滤波的过程中,很重要的概念是“核” 。 ksize也就是内核的大小

c++代码

1)线性滤波

在这里插入图片描述

特别注意:高斯滤波的size必须为正数和奇数
线性滤波c++代码

#include <iostream>
#include <opencv/cv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;

//主函数
int main(void)
{
    //读取原始图像
    Mat srcImage=imread("/home/liuxin/桌面/opencv/dog.jpeg");
    imshow("original",srcImage);
    //进行滤波
    Mat boxfilter,meanFilter,gaussFilter;
    boxFilter(srcImage,boxfilter,-1,Size(6,6));//方框滤波;depth=-1,表示和原图像一致
    blur(srcImage,meanFilter,Size(6,6));//均值滤波
    GaussianBlur(srcImage,gaussFilter,Size(5,5),0,0);//高斯滤波的size必须为正数和奇数
    //显示结果
    imshow("boxfilter",boxfilter);
    imshow("meanFilter",meanFilter);
    imshow("gaussFilter",gaussFilter);


    while(1)
    {
        int key=cvWaitKey(10);
    if (key==27)
    {
        break;
    }
    }
    return(0);



}
2)非线性滤波

效果图
在这里插入图片描述,注:最左边为双边滤波,中间为中值滤波,最右边为原图

medianblur中的ksize必须为大于1的奇数
非线性滤波c++代码

#include <iostream>
#include <opencv/cv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

using namespace std;
using namespace cv;

//主函数
int main(void)
{
    //读取原始图像
    Mat srcImage=imread("/home/liuxin/桌面/opencv/dog.jpeg");
    imshow("original",srcImage);
    //进行滤波
    Mat mediafilter,bilateralfilter,gaussFilter;
    medianBlur(srcImage,mediafilter,7);//中值滤波
    bilateralFilter(srcImage,bilateralfilter,25,25*2,25/2);//双边滤波

    //显示结果
    imshow("mediafilter",mediafilter);
    imshow("bilateralfilter",bilateralfilter);



    while(1)
    {
        int key=cvWaitKey(10);
    if (key==27)
    {
        break;
    }
    }
    return(0);



}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值