平滑滤波是一种简单又常见的图像处理操作。平滑图像的目的有很多,但通常都是为了减少噪声和伪影。

在OpenCV中共有5种平滑滤波操作,分别是以下几种:

实验测试代码如下:

#include<iostream>
#include<opencv2/opencv.hpp>using namespace std;
using namespace cv;int main()
{Mat srcImage = cv::imread("F:/图像处理/图片一/outThee2.jpg", 0);if (srcImage.empty()){printf("图片读取失败!\n");return -1;}Mat outputImage;//简单模糊滤波器//blur(srcImage, outputImage, Size(3, 3));//方框型滤波器//boxFilter(srcImage, outputImage, -1, Size(3, 3));//中值滤波器medianBlur(srcImage, outputImage, 3);//高斯滤波器//GaussianBlur(srcImage, outputImage, Size(3, 3), 0.0, 0.0);//双边滤波器//bilateralFilter(srcImage, outputImage, 9, 10.0, 50.0);imshow("原图", srcImage);imshow("滤波处理后的图像", outputImage);waitKey(0);return 0;
}

输入的源图像

(1) 简单模糊滤波器

void cv::blur(cv::InputArray src,   //输入图像cv::OutputArray dst,  //滤波后得到的图像cv::Size ksize,  //窗口(核)的尺寸大小cv::Point anchor = cv::Point(-1, -1),  //核与源图像的对齐方式。默认值为Point(-1,-1),表示核相等滤波器居中int borderType = cv::BORDER_DEFAULT  //边界类型
);//5种边界类型
cv::BORDER_CONSTANT    //复制指定的常量扩展边界
cv::BORDER_WRAP             //复制对边的像素扩展边界
cv::BORDER_REPLICATE      //复制边缘的像素扩展边界
cv::BORDER_REFLECT         //通过镜像复制扩展边界
cv::BORDER_REFLECT_101  //通过镜像复制扩展边界,边界像素除外
cv::BORDER_DEFAULT        //cv::BORDER_REFLECT_101的别名

滤波结果:

从结果来看,简单模糊滤波对于点状噪声的处理有一定效果,但不理想。

(2) 方框型滤波器

void cv::boxFilter(cv::InputArray src,  //输入图像cv::OutputArray dst,  //滤波得到的图像int ddepth,  //输出图像的深度,取-1表示与源图像一致cv::Size ksize,  //核的大小cv::Point anchor = cv::Point(-1, -1),  //核与源图像的对齐方式bool normalize = true,  int borderType = cv::BORDER_DEFAULT  //边界类型
);

滤波结果:

简单模糊是方框型滤波器的一种特殊形式,从测试结果来看,它们两个的滤波效果基本是一样的。

(3) 中值滤波器

void cv::medianBlur(cv::InputArray src,  //输入图像cv::OutputArray dst,  //滤波后得到的图像int ksize  //核大小);

滤波结果:

由于中值滤波是将每个像素替换为围绕这个像素的矩形领域内的中值像素,因此对图像中较大的异常孤立值非常敏感,所以中值滤波对于这种点状噪声的处理效果是最好的。

(4) 高斯滤波器

void cv::GaussianBlur(cv::InputArray src,  //输入图像cv::OutputArray dst,  //滤波后得到的图像cv::Size ksize,  //核尺寸的大小double sigmaX,double sigmaY,int borderType = cv::BORDER_DEFAULT);

滤波结果:

高斯滤波虽然非常常用,但是对于这种点状噪声的处理,还是不太适用的。

(5) 双边滤波器

void cv::bilateralFilter(cv::InputArray src,  //输入图像cv::OutputArray dst,  //滤波后得到的图像int d,  double sigmaColor,double sigmaSpace,int borderType = cv::BORDER_DEFAULT);

滤波结果:

OpenCV中的5种平滑滤波操作相关推荐

  1. 在OpenCV中利用卷积进行图像滤波

    简 介: 本文首先讨论了卷积核的概念,以及如何用于对图像进行滤波.然后通过他们对图像进行数学运算来实现特定的效果,比如平和和锐化.展示了如何在OpenCV中实现2D滤波. 在等同卷积卷积核之后,我们创 ...

  2. 二值图像分析:OpenCV中的二值化阈值操作

    二值图像分析:OpenCV中的二值化阈值操作 1.二值图像的定义 2.OpenCV中的基本阈值操作 3.OTSU二值寻找算法 3.1 OTSU二值寻找算法介绍 3.2 OTSU二值寻找算法分析 3.2 ...

  3. OpenCV中的几种角点检测方法

    1.Harris角点检测 import numpy as np import cv2 as cv import matplotlib.pyplot as pltplt.rcParams['font.s ...

  4. OpenCV 中的图像处理 004_平滑图像

    本文主要内容来自于 OpenCV-Python 教程 的 OpenCV 中的图像处理 部分,这部分的全部主要内容如下: 改变色彩空间 学习在不同色彩空间之间改变图像.另外学习跟踪视频中的彩色对象. 图 ...

  5. OpenCV中的三种图像数据结构CvMat, IplImage和Mat(二)IplImage

    本文为原创,若有错误欢迎批评指正! 一. IplImage结构体构成 IplImage比CvMat要复杂一些,结构体组成如下: typedef struct _IplImage { int nSize ...

  6. OpenCV探索之路(三):滤波操作

    滤波处理分为两大类:线性滤波和非线性滤波.OpenCV里有这些滤波的函数,使用起来非常方便,现在简单介绍其使用方法. 线性滤波:方框滤波.均值滤波.高斯滤波 方框滤波 #include<open ...

  7. OpenCV中对数组(矩阵)的常用操作

          add 矩阵加法,A+B的更高级形式,支持mask scaleAdd 矩阵加法,一个带有缩放因子dst(I) = scale * src1(I) + src2(I) addWeighted ...

  8. (转载)计算机视觉、图像处理中常见的滤波操作

    前言:计算机视觉是让计算机理解图像与视频,本系列博客的目的在于加深自己在学习计算机视觉过程中对相关知识理解与回顾.其中很多内容参照:教材<ComputerVision: Algorithms a ...

  9. 关于平滑滤波,中值滤波,KNN滤波的图像处理(附matlab代码)

    前些天小编上了数字图像的课程,里面提到了均值平滑滤波操作,中值滤波操作,和KNN平滑滤波操作. 1.何为均值平滑滤波呢? 均值滤波的核心就是在一定的小范围内,给这个小范围的像素取平均值(此操作是在原图 ...

最新文章

  1. 求连通块个数(使用并查集)
  2. 2020\Simulation_1\3.叶节点数
  3. java中怎么用代码打出ASCII码字符_JAVA实现打印ascii码表代码
  4. 01-复杂度1 最大子列和问题 (20 分)
  5. 初步使用计算机说课,初步认识计算机说课稿
  6. [go]---从java到go(02)---一个简单的handler模式的实现
  7. centos7在线yum安装mysql时官方镜像下载过慢的解决方案
  8. JavaScript:堆栈溢出内存泄漏
  9. FFmpeg简介及常见用法
  10. 停止不了_男性脂溢性脱发之坚持及停止止脱方法后的对比(顺便找发友组队再战)...
  11. XDUOJ 1125 Judgement of Orz Pandas
  12. 子空间方法——MUSIC算法
  13. 华为数通考试正式改版,改版前后有什么区别?
  14. 三个三维矢量叉乘公式(拉格朗日矢量公式)推导(非坐标法)
  15. python hist2d_具有二维数组的Python Matplotlib Hist2d
  16. camera tuning名词缩写
  17. Excel常用技巧(一)——快捷键
  18. 2023首届西安浐灞·保利戏剧节——以“觅”为主题 即将开启
  19. SQL对date类型的操作
  20. UDP与IP的不可靠程度是否相同

热门文章

  1. CTGU-2023春-MySQL数据库实验3_2-查询456
  2. 【Tip】设计美化相关网站汇总(非专业)——制图、PS、格式调整等
  3. 前端工程师很有必要学习Node
  4. linux中adduser命令怎么用,Linux adduser新增系统用户命令详解
  5. 哪些因素会影响到网站排名的高低
  6. 1、kubernetes系统初始化
  7. python从零到一之基础篇 第 四 章 流程控制语句
  8. 安装Java的SCIP接口JSCIPOpt系列
  9. 计算机主机视频介绍,如何在win10中查看计算机视频内存win10中的计算机视频内存简介...
  10. 交互设计定律:米勒定律(Miller’s law)