环境:win10+IDEA2021.2.3+jdk11.0.1+OpenCV-460.jar

背景: 均值滤波 图像平滑 算法的一种,在图像产生、传输和复制过程中,常常会因为多方面原因被噪声干扰或出现数据丢失,降低了图像的质量,需要对图像进行一定的增强处理以减小这些缺陷带来的影响

常用的平滑算法有:均值滤波,中值滤波,高斯低通滤波,梯度倒数加权平滑

均值滤波的优点:算法简单,计算速度快;缺点:造成图像模糊,特别是对图像的边缘和细节削弱很多

二、算法流程

(以单波段图像为例)

1.利用OpenCV读入图像,将像素存储在数组里

2.以3×3的模板为例,对应的模板如图所示

为了避免中心像素值过高影响平均值升高,在运算时可不取中心值,由周围的八个像素进行运算 ,如图所示

新像素值g(x,y)=1/9 ( f(x-1,y-1) + f(x-1,y) + f(x-1,y+1) + f(x,y-1) + f(x,y) + f(x,y+1)+ f(x+1,y-1) + f(x+1,y) + f(x+1,y+1) )

3.将经过滤波后的像素值存入数组合成图像并存储

三、实现过程

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
 * @Author: HNUST_jue_chen
 * @Date: 2022/11/02/ 10:43
 * @Attention: 转载, 引用请注明出处
public class AverageFiltering {
    //加载本地动态链接库
    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    //进行均值滤波
    public Mat averageFilter(String path) {
        //使用Mat类存储图像信息
        Mat mat = Imgcodecs.imread(path);
        //图像的大小
        int rows = mat.rows();
        int cols = mat.cols();
        //获得原图像像素数组
        int[][] mat_arr = new int[rows][cols];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                mat_arr[i][j] = (int) mat.get(i, j)[0];
        //用3×3窗口进行均值滤波
        int[][] mat_arr_avgFilter = new int[rows][cols];
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                //处理非边缘的像素
                if (i != 0 && i != rows - 1 && j != 0 && j != cols - 1) {
                    mat_arr_avgFilter[i][j] = (int) ((1.0 / 9)
                            * (mat_arr[i - 1][j - 1] + mat_arr[i - 1][j] + mat_arr[i - 1][j + 1]
                            + mat_arr[i][j - 1] + mat_arr[i][j] + mat_arr[i][j + 1]
                            + mat_arr[i + 1][j - 1] + mat_arr[i + 1][j] + mat_arr[i + 1][j + 1]));
                } else {    //处理边缘的像素
                    mat_arr_avgFilter[i][j] = mat_arr[i][j];
        //合成图像
        Mat mat_avgFilter = new Mat(rows, cols, CvType.CV_32SC1);
        //将像素放入图像
        for (int i = 0; i < rows; i++) {
            //一次放入一行像素值
            mat_avgFilter.put(i, 0, mat_arr_avgFilter[i]);
        return mat_avgFilter;
    public static void main(String[] args) {
        AverageFiltering af = new AverageFiltering();
        Mat mat = af.averageFilter("D:\\Project\\IDEA_Project\\RS01\\src\\rs01\\img\\2_gray.png");
        //将均值滤波后的图像写入文件
        Imgcodecs.imwrite("D:\\Project\\IDEA_Project\\RS01\\src\\rs01\\img\\2_gray_af.png", mat);

1.读入的图像

 2.经过空间滤波后的图像

 可知经过均值滤波操作后的图像变得更模糊,达到了抑制噪声的目的

图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作。在进行图像算法前,对图像进行滤波预处理往往会带来更好的效果。 大家在用美图秀秀美颜皮肤时是否想过其中的工作原理,或者在Photoshop中是否使用过模糊这个功能?这其中都应用到了图像滤波的原理。 图像滤波原理很简单,掌握了其中的卷积操作,也会对卷积神经网络的学习有一定帮助。 滤波有很多类型,包括线性滤波和非线性滤波,今天主要介绍线性滤波中的均值滤波均值滤波(Mean filter) 先看一组滤波前 然后,定义了一个5x5的滤波核,用于进行均值滤波。接下来,使用blur函数对图像进行均值滤波操作。最后,使用imshow函数显示原始图像和滤波后的图像均值滤波的数学原理很简单,即将滤波窗口内的所有像素值进行求平均操作。均值滤波是一种基本的图像平滑滤波方法,用于减少图像中的噪声和细节。例:(197+25+106+156+159+……+41+75)/25。计算步骤:任意一点的像素值,都是周围N*N个像素值的均值。下面是一个使用OpenCV进行均值滤波的示例代码:。平滑图像,减少图像中的细节,达到降噪的效果。 文章目录前言一、可分离滤波器核二、盒式滤波器核三、低通高斯滤波器核四、统计排序(非线性)滤波器五、opencv函数总结1.引入库 数字图像处理c++ opencv(VS2019 opencv4.53)持续更新 一、可分离滤波器核 二、盒式滤波器核 三、低通高斯滤波器核 四、统计排序(非线性)滤波器 五、opencv函数总结 1.引入库 代码如下(示例): import numpy as np 1、算法原理 在数字图像处理中,滤波是一个很重要的操作,许多算法其本质都是滤波操作。使用白话的形式对滤波定义:对于一个像素点,使用其领域像素(可以包含自身,也可不包含)的相关特性,计算出一个值,代替当前像素值。举个例子,3X3均值滤波,就是计算每个像素对应的3X3领域所有像素值的平均值,代替当前像素。滤波操作可分为线性滤波和非线性滤波两大种类,其中,常见的线性滤波操作有:均值滤波、高斯滤波、方差... 平滑空间滤波器是低频增强的空间滤波技术。它的目的有两类:一是模糊处理,二是降低噪声。 本文介绍的平滑空间滤波器也分为两类,一类是线性滤波器,比如最简单的简单平均法。但是大多数线性滤波器具有低通特性,去除噪声的同时也使得图像的边缘变得模糊了。另一类是统计排序滤波器。它是非线性滤波器,在去除噪声的同时,也能较好的保留了图像的边缘信息。 友好观看地址:CSDN-专业IT技术社区-登录​blog.csdn.net空间滤波基础空间域滤波利用像素邻域的灰度关系进行计算 邻域:以图像某像素为中心的m×n个像素称为它的邻域,m,n为奇数邻域操作的工具:模板(mask)输出图像$(x, y)$像素点的灰度等于邻域中各像素的灰度加权求和;模板中的值是系数值,而不是灰度值。在待处理图像中逐点移动掩模,每点响应等于模板系数与模板对应像素灰度值的乘积... public static void kernel1(){ Mat src= Imgcodecs.imread(&amp;quot;C:\\Users\\Administrator\\P... 一. 均值滤波简介和原理 均值滤波,是图像处理中常用的手段,从频率域观点来看均值滤波是一种低通滤波器,高频信号将会去掉。均值滤波可以帮助消除图像尖锐噪声,实现图像平滑,模糊等功能。理想的均值滤波是用每个像素和它周围像素计算出来的平均值替换图像中每个像素。 以3*3均值滤波器为例,均值滤波器算法原理如下图: 图像噪声,通常指图像中除了成像物体之外的其它信息,比如斑点和颗粒,这些额外的错误信息干扰了成像物体的显示,影响成像质量,所以往往需要通过图像滤波(也称为图像去噪)来消除这些噪点。常见的图... 创作不易!!!来个赞吧! 现在图像的直方图分布比较均匀了,但很难得到完全均衡的结果,另外,变换后的灰度级减少了。这种现象叫做“简并”现象。由于简并现象的存在,处理后的灰度级总是要减少的。直观反映就是均衡后直方图在垂直方向上有很多黑线 5.3、一幅图像的直方图如下图所示,可以对其进行什么处理 可以通过直方图均衡化进行处理。 5.4、一幅大小64×64图像,8个灰度级对应像素个数及概率如下表所示,试对其进行直方图均衡化。 灰度级rk