首页 > 其他分享 >图像处理之均值滤波3

图像处理之均值滤波3

时间:2023-03-11 20:33:03浏览次数:59  
标签:均值 滤波 像素 图像处理 图像 blur 模板

​​

1 概述

均值滤波,是最简单的一种滤波操作,输出图像的每一个像素是核窗口内输入图像对应像素的平均值(所有像素加权系数相等),其实说白了它就是归一化后的方框滤波。我们在下文进行源码剖析时会发现,blur函数内部中其实就是调用了一下boxFilter。

下面开始讲均值滤波的内容吧。

2 均值滤波的理论简析

均值滤波是典型的线性滤波算法,主要方法为邻域平均法,即用一片图像区域的各个像素的均值来代替原图像中的各个像素值。一般需要在图像上对目标像素给出一个模板(内核),该模板包括了其周围的临近像素(比如以目标像素为中心的周围8(3x3—1)个像素,构成一个滤波模板,即去掉目标像素本身)。再用模板中的全体像素的平均值来代替原来像素值。即对待处理的当前像素点(x,y),选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(x,y),作为处理后图像在该点上的灰度点g (x,y),即

图像处理之均值滤波3_均值滤波

其中m为该模板中包含当前像素在内的像素总个数。

3 均值滤波的缺陷

均值滤波本身存在着固有的缺陷,即它不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。

4 均值滤波—blur函数

blur函数的作用是:对输入的图像src进行均值滤波后用dst输出。blur 函数在OpenCV 官方文档中,给出的其核是这样的:

图像处理之均值滤波3_均值滤波_02

这个内核一看就明了,就是在求均值,即blur函数封装的就是均值滤波。blur函数的原型如下。

图像处理之均值滤波3_均值滤波_03

  • 第一个参数, InputArray类型的src,输入图像,即源图像,填Mat类的对象即可。该函数对通道是独立处理的,且可以处理任意通道数的图片。但需要注意的是,待处理的图片深度应该为CV_8U、CV_16U、CV_16S、CV_32F 以及 CV_64F之一。
  • 第二个参数, OutputArray类型的dst,即目标图像,需要和源图片有一样的尺寸和类型。比如可以用Mat::Clone,以源图片为模板,来初始化得到如假包换的目标图。
  • 第三个参数,Size类型(对Size类型稍后有讲解)的ksize,内核的大小。一般写作Size(w,h)来表示内核的大小(其中,w为像素宽度,h为像素高度)。Size(3,3)就表示3x3的核大小, Size(5,5)就表示5x5的核大小
  • 第四个参数, Point类型的anchor,表示锚点(即被平滑的那个点),注意它有默认值Point(—1,—1)。如果这个点坐标是负值,就表示取核的中心为锚点,所以默认值Point(—1,—1)表示这个锚点在核的中心。
  • 第五个参数, int类型的borderType,用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT,我们一般不去管它。

5 示例

代码

//---------------------------------【头文件、命名空间包含部分】-------------------------------
// 描述:包含程序所使用的头文件和命名空间
//------------------------------------------------------------------------------------------
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
using namespace cv;

//-----------------------------------【main( )函数】--------------------------------------------
// 描述:控制台应用程序的入口函数,我们的程序从这里开始
//---------------------------------------------------------------------------------------------
int main( )
{
//【1】载入原始图
Mat srcImage=imread("1.jpg");

//【2】显示原始图
imshow( "均值滤波【原图】", srcImage );

//【3】进行均值滤波操作
Mat dstImage;
blur( srcImage, dstImage, Size(7, 7));

//【4】显示效果图
imshow( "均值滤波【效果图】" ,dstImage );

waitKey( 0 );
}

原图

图像处理之均值滤波3_均值滤波_04


效果图

图像处理之均值滤波3_均值滤波_05

对比图

图像处理之均值滤波3_均值滤波_06

标签:均值,滤波,像素,图像处理,图像,blur,模板
From: https://blog.51cto.com/u_11745691/6114934

相关文章

  • 卡尔曼滤波算法综述(KF、EKF、UKF和IMM)
    本篇博文是对之前学习的书籍《卡尔曼滤波原理及应用--------MATLAB仿真》里面的卡尔曼滤波知识做一个回顾,里面不会包含具体的公式推导,只是对里面的几种算法做一个综述,......
  • opencv图像处理基础之膨胀和腐蚀
    膨胀和腐蚀是图像处理中最常用也是最基础的形态学操作。它可以改变图像的一些属性。其中比较常见的应用场景有:1、边缘检测:膨胀和腐蚀可以提取二值图像中的边缘信息。通过先......
  • 数字图像处理中的颜色
    物理中的颜色物理中的颜色就是不同波长的电磁波但是,根据人眼的视觉效果,可以通过RGB,CMYK,HSB,LAB色域,来将可见光的颜色描述出来。RGBRGB就是我们常说的三原色,即R(red)......
  • matlab实现形态学图像处理
    文章和代码以及样例图片等相关资源,已经归档至【Github仓库:​​digital-image-processing-matlab​​】或者公众号【AIShareLab】回复数字图像处理也可获取。目的膨胀的简......
  • 图像处理之离散傅里叶变换2
    接着上一节继续讲述傅里叶变换4返回DFT最优尺寸大小:getOptimalDFTSize函数getOptimalDFTSize函数返回给定向量尺寸的傅里叶最优尺寸大小。为了提高离散傅里叶变换的运行速......
  • 基于FPGA的幅频均衡带通滤波器的设计
    1.算法描述       数字通信系统中,由于多径传输、信道衰落等影响,在接收端会产生严重的码间干扰,增大误码率。为了克服码间干扰,提高通信系统的性能,在接收端需采用均衡......
  • 图像处理之分离颜色通道、多通道图像混合
    1概述上篇博客中我们讲解了如何使用addWeighted函数进行图像混合操作,以及如何将ROI和addWeighted函数结合起来,对指定区域进行图像混合操作。而为了更好地观察一些图像材......
  • 图像处理之对比度、亮度值调整
    1概述本节我们将学习如何用OpenCV进行图像对比度和亮度值的动态调整。2理论依据首先了解一下算子的概念。一般的图像处理算子都是一个函数,它接受一个或多个输入图像,并产生......
  • 图像处理之访问图像的像素
    1图像在内存之中的存储方式在之前的章节中,我们已经了解到图像矩阵的大小取决于所用的颜色模型,确切地说,取决于所用通道数。如果是灰度图像,矩阵就会如下图所示。而对多通道图......
  • 图像处理之OpenCV用户界面
    1概述在OpenCV中,HighGUI模块为高层GUI图形用户界面模块,包含媒体的输入输出、视频捕捉、图像和视频的编码解码、图形交互界面的接口等内容。本章旨在为大家展开讲解OpenCV中......