图像处理-空间域平滑滤波

article/2025/8/24 9:20:57

个人博客:http://www.chenjianqu.com/

原文链接:http://www.chenjianqu.com/show-12.html

目录:

1.       空间域和频域的概念

2.       图像滤波

3.       图像卷积

4.       常用空间域滤波器

5.       线性点运算

6.       均值滤波

7.       加权均值滤波

8.       高斯滤波

9.       阈值平均滤波

 

空间域和频域的概念

空间域与频率域为我们提供了不同的视角。在空间域中,函数自变量(x,y)被视为二维空间中的一个点,数字图像f(x,y)即为一个定义在二维空间中的矩形区域上的离散函数;换一个角度,如果将f(x,y)视为幅值变化的二维信号,则可以通过某些变换手段(如傅里叶变换、离散余弦变换、沃尔什变换和小波变换等)在频域下对图像进行处理了  因为在频率域就是一些特性比较突出,容易处理。比如在空间图像里不好找出噪声的模式,如果变换到频率域,则比较好找出噪声的模式,并能更容易的处理。

空间域 英文: spatial domain。 释义: 又称图像空间(image space)。由图像像元组成的空间。在图像空间中以长度(距离)为自变量直接对像元值进行处理称为空间域处理。

频率域。 英文: spatial frequency domain。 释义: 以频率(即波数)为自变量描述图像的特征,可以将一幅图像像元值在空间上的变化分解为具有不同振幅、空间频率和相位的简振函数的线性叠加,图像中各种频率成分的组成和分布称为空间频谱。这种对图像的频率特征进行分解、处理和分析称为频率域处理或波数域处理。

 

图像滤波

图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接响到后续图像处理和分析的有效性和可靠性。(滤波就是要去除没用的信息,保留有用的信息,可能是低频,也可能是高频)。

滤波的目:1. 是抽出对象的特征作为图像识别的特征模式;  2. 为适应图像处理的要求,消除图像数字化时所混入的噪声。

滤波可分为空间域滤波可频域滤波,前者通过图像卷积运算实现,后者通过傅立叶变换实现。

 

图像卷积   

    卷积运算:可看作是加权求和的过程,使用到的图像区域中的每个像素分别于卷积核(权矩阵)的每个元素对应相乘,所有乘积之和作为区域中心像素的新值。

卷积核:卷积时使用到的权用一个矩阵表示,该矩阵是一个权矩阵。不同的卷积核对应不同的滤波器。

边界问题:当处理图像边界像素时,卷积核与图像使用区域不能匹配,卷积核的中心与边界像素点对应,卷积运算将出现问题。解决办法:1.复制边界,2.忽略边界,3.设定边界值。

卷积示例:

3 * 3 的像素区域R与卷积核G的卷积运算

1.jpg

R5(中心像素)=R1G1 + R2G2 + R3G3 + R4G4 + R5G5 + R6G6 + R7G7 + R8G8 + R9G9

代码实现:(对边缘不进行处理)

//kernel为float类型的卷积核
Mat ConvolutionOperation(Mat &src, Mat &kernel)
{Mat dst(src.rows, src.cols, src.type(), Scalar(0));if (src.channels() == 1){int rowsSub = int(kernel.rows / 2);int colsSub = int(kernel.cols / 2);for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++){if (i < rowsSub || i >= src.rows - rowsSub || j < colsSub || j >= src.cols - colsSub) {dst.at<uchar>(i, j) = src.at<uchar>(i, j);}else {float sum = 0;for (int ki = 0; ki < kernel.rows; ki++){for (int kj = 0; kj < kernel.cols; kj++){int i_ = i + ki - rowsSub;int j_ = j + kj - colsSub;sum += src.at<uchar>(i_, j_)*kernel.at<float>(ki, kj);}}dst.at<uchar>(i, j) = int(sum);}}}}return dst;
}

常用的空间域滤波器

根据滤波的效果,空间域滤波可分为空间平滑滤波器和空间锐化滤波器。平滑滤波报告均值滤波、加权均值滤波、阈值平均滤波、中值滤波、高斯滤波等,应用时他们仅是卷积核之间的不同。

平滑滤波用于模糊处理和降低噪声。模糊处理常用于预处理任务中,如在目标提取之前去除图像中的一些琐碎细节,以及桥接直线或曲线的缝隙。通过线性或非线性平滑滤波也可降低噪声。

以下分别介绍各个滤波器。

 

线性点运算

对图像进行点运算
Mat LinearPointOperation_Float(Mat& src, double a, double b)
{Mat dst(src.rows, src.cols, src.type(), Scalar(0));if (src.channels() == 1)for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++)dst.at<float>(i, j) = src.at<float>(i, j)*a+b;return dst;
}

空间域平滑滤波

1均值滤波

卷积核:

2.png

代码实现:

Mat MeanFiltering(Mat &src, int n)
{Mat one = Mat::ones(Size(9, 9), CV_32FC1);Mat kernel = LinearPointOperation_Float(one, 1 / 81.0, 0);Mat dst = ConvolutionOperation(src, kernel);return dst;
}

运行结果:

3.png

 

2.加权均值滤波

卷积核:

4.png

代码实现:

Mat WeightedMeanFiltering(Mat &src, Mat &kernel)
{Mat dst = ConvolutionOperation(src, kernel);return dst;
}
Mat WeightedKernel = (Mat_<float>(3, 3) << 1, 2, 1, 2, 4, 2, 1, 2, 1);   
Mat kernel = LinearPointOperation_Float(WeightedKernel, 1 / 16.0, 0);
Mat dst = WeightedMeanFiltering(img, kernel);

运行效果:

5.png

 

3. 高斯滤波器

一维高斯分布:

6.png

二维高斯分布:

7.png

高斯模板:

8.png

9.png

 

代码实现:

Mat GaussFiltering(Mat &src, Mat &kernel)
{Mat dst = ConvolutionOperation(src, kernel);return dst;
}
Mat GaussKernel = (Mat_<float>(5, 5) << 1, 4, 7, 4, 1, 4, 16, 26, 16,4,7,26,41,26,7,4,16,26,16,4,1,4,7,4,1);
Mat kernel = LinearPointOperation_Float(GaussKernel, 1 / 273.0, 0);
Mat dst = GaussFiltering(img, kernel);
imshow("dst", dst);

运行结果:

10.png

 

4. 阈值平均滤波

顾名思义,阈值平均滤波就是在平均滤波的基础上加上阈值的约束,即当像素点与图像均值的差小于设定的阈值时,输出像素点等于原像素点,否则求其对该像素点进行求模板均值。

代码实现:

求图像均值:

double ImageMean(Mat &src)
{long sum = 0;if (src.channels() == 1) {for (int i = 0; i < src.rows; i++) {uchar *srcRow = src.ptr(i);for (int j = 0; j < src.cols; j++)sum += srcRow[j];}}return double(sum*1.0 / (src.cols*src.rows));
}

实现阈值均值滤波:

Mat ThresholdMeanFiltering(Mat &src,int n,int thre)
{//获得卷积核Mat kernel = Mat::ones(Size(n, n), CV_32FC1);kernel = LinearPointOperation_Float(kernel, 1 / (1.0*n*n), 0);//创建输出图像Mat dst(src.rows, src.cols, src.type(), Scalar(0));if (src.channels() == 1){double m = ImageMean(src);//计算出图像均值int rowsSub = int(kernel.rows / 2);int colsSub = int(kernel.cols / 2);for (int i = 0; i < src.rows; i++) {for (int j = 0; j < src.cols; j++){if (i < rowsSub || i >= src.rows - rowsSub || j < colsSub || j >= src.cols - colsSub) {dst.at<uchar>(i, j) = src.at<uchar>(i, j);}else {if (abs(src.at<uchar>(i, j)-m) < thre)dst.at<uchar>(i, j) = src.at<uchar>(i, j);else {float sum = 0;for (int ki = 0; ki < kernel.rows; ki++){for (int kj = 0; kj < kernel.cols; kj++){int i_ = i + ki - rowsSub;int j_ = j + kj - colsSub;sum += src.at<uchar>(i_, j_)*kernel.at<float>(ki, kj);}}dst.at<uchar>(i, j) = int(sum);}}}}}return dst;
}

当输入n=5,thre=50时,运行结果:

11.png

 

参考文献

[1] CSDN博客:yeler082. 图像处理技术上的空间域和空间频率域.

https://blog.csdn.net/yeler082/article/details/78374818. 2017-10-28

[2] CSDN博客:John9ML. 图像处理基本概念——卷积,滤波,平滑.

https://blog.csdn.net/weixin_38570251/article/details/82054185. 2018-08-25.

[3] 韩九强,杨磊.数字图像处理.西安交通大学出版社.2018-08

 

 

 

 

 

 


http://chatgpt.dhexx.cn/article/L8WI2EUg.shtml

相关文章

数字图像处理学习笔记(六)平滑滤波:均值滤波、中值滤波

实验截图&#xff1a; 均值滤波和中值滤波处理后的结果 实验代码&#xff1a; 代码&#xff08;1&#xff09;&#xff1a; imgimread(microchip.png); imgrgb2gray(img); subplot(1,3,1); imshow(img); title(原图);img_avefspecial(average,[3 3]); img_ffilter2(img_av…

五点三次平滑滤波

算法简介 五点三次平滑滤波能够有效去除信号中的高频随机噪声&#xff0c;在数字信号处理中有着广泛应用&#xff0c;且滤波效果和灵活性优于滑动平均滤波。五点三次平滑滤波效果如下图所示&#xff1a; 完整代码&#xff08;java&#xff09; //函数参数说明&#xff1a;a…

自适应平滑滤波

单纯的平滑滤波可以去除噪声&#xff0c;但是会丢失很多图像的细节&#xff0c;最明显的就是让图像变的模糊&#xff0c;而自适应平滑滤波可以达到去除噪声的同时又增加细节&#xff0c;使图像的增强效果达到最佳。 算法根据图像中像元灰度值的突变特性&#xff0c;自适应改变滤…

OpenCV中的5种平滑滤波操作

平滑滤波是一种简单又常见的图像处理操作。平滑图像的目的有很多&#xff0c;但通常都是为了减少噪声和伪影。 在OpenCV中共有5种平滑滤波操作&#xff0c;分别是以下几种&#xff1a; 实验测试代码如下&#xff1a; #include<iostream> #include<opencv2/opencv.h…

平滑滤波

平滑滤波是低频增强的空间域滤波技术。它的目的有两类&#xff1a;一类是模糊&#xff1b;另一类是消除噪音。空间域的平滑滤波一般采用简单平均法进行&#xff0c;就是求邻近像元点的平均亮度值。邻域的大小与平滑的效果直接相关&#xff0c;邻域越大平滑的效果越好&#xff0…

Matlab学习7-图像处理之线性平滑滤波

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、选择平均法滤波去噪二、领域平均法去噪三、Wiener滤波四、线性平滑滤波 前言 空域滤波增强 卷积原理 多维连续卷积 线性平滑滤波 领域平均法、选择平均法…

数字图像处理--平滑滤波

1.相关知识 今天介绍平滑滤波的一些知识&#xff01; 相关知识&#xff1a;均值模板和中值滤波 例如&#xff0c;3X3均值模板(取图像相邻区域的像素求和取平均代替中心像素&#xff0c;更高次类似) [ 1 1 1 1 1 1 1 1 1] 然后说说中值滤波&#xff0c;还是以3X3来说&…

平滑滤波笔记

叠加在有用数据上的随机噪声在很多情况下可以近似地认为是白噪声。白噪声具有一个很重要的统计特性&#xff0c;即它的统计平均值为零。因此可以求平均值的办法来消除随机误差&#xff0c;这就是所谓平滑滤波。平滑滤波有以下几种&#xff1a; #####1. 算术平均滤波法 算术平均…

matlab图像处理——平滑滤波

平滑滤波——matlab图像处理 平滑滤波的目的是消除或尽量减少噪声&#xff0c;改善图像的质量。假设加性噪声是随机独立分布&#xff0c;这样利用图像像素领域的平均或加权平均即可有效地抑制噪声干扰。从信号分析的观点来看&#xff0c;图像平滑本质上是低能滤波&#xff0c;…

图像处理(一):平滑滤波

平滑处理&#xff0c;有时也称模糊处理&#xff0c;是图像处理领域最常用的操作。平滑的目的主要是用来去除噪声。通常平滑操作是通过卷积操作&#xff08;注&#xff1a;实际上是相关操作&#xff0c;后面的叙述对这两个操作不加区分&#xff09;完成。下面介绍几种常用的平滑…

MATLAB自适应平滑滤波

% 自适应平滑滤波 clc,clear,close all % 清理命令区、清理工作区、关闭显示图形 warning off % 消除警告 feature jit off % 加速代码运行 [filename ,pathname]… uigetfile({‘.bmp’;.jpg’;},‘选择图片’); % 选择图片路径 str [pathname filename]; % 合成路径文件名 i…

平滑滤波器总结

平滑滤波器总结 本质&#xff1a;对像素点领域的像素值施于某种算法&#xff0c;以其结果替代锚点处对应的像素值。 平滑&#xff08;模糊&#xff09;目的&#xff1a;减少噪声和伪影。 opencv一共提供了5种平滑操作。 1.均值滤波器 算法原理&#xff1a;以邻域像素点的平均…

数字图像处理:线性和非线性滤波的平滑空间滤波器(Smoothing Spatial Filters)

引言 本系列文章记录老猿自学冈萨雷斯《数字图像处理》的感悟和总结&#xff0c;不过估计更新会比较慢&#xff0c;白天要工作&#xff0c;都是晚上抽空学习&#xff0c;学习完一章再回头总结&#xff0c;想学的朋友可以自己下载英文原版&#xff08;目前到第四版&#xff09;…

空间滤波(平滑滤波)

本实验所采用的空间滤波方法是平滑滤波&#xff0c;下图是两个3*3平滑&#xff08;均值&#xff09;滤波器模板&#xff0c;对图像进行平滑处理。 平滑线性空间滤波器的输出响应是包含在滤波器模板邻域内的像素的简单平均值。平滑滤波器多用于模糊处理和降低噪声。 第一个滤波…

群晖Synology Drive同步规则中过滤指定文件夹

学习Vue的过程中发现电脑上的Synology Drive同步文件时间变得超级长&#xff0c;检查发现是项目文件夹里的 node_modules 文件夹里文件非常多导致的&#xff0c;每个项目都有上万个文件&#xff0c;但是 Synology Drive 的文件过滤器并不能添加文件夹名 解决方案 进入这个路径…

Synology Drive 使用了哪些端口?

Drive的浏览器页面使用的是 5000/5001 DSM 端口 &#xff0c;而同步使用的是 6690 端口。请您确认是否有将您的自定义端口转发到 6690 上。 DSM 服务使用的网络端口检查 TCP 端口的状态

修复群晖Synology Drive Client右键菜单缺失

1. 关闭Drive程序。 2. 进入控制面板 3. 选择用户账户 4. 选择用户账户 5. 更改用户帐户控制设置 6. 将滑块拨动到下图所示 7. 然后重启电脑。 8. 重启完毕后&#xff0c;关闭Drive程序和杀毒软件&#xff0c; 在文件资源管理器管理器地址栏中输入 %localappdata%\Synology…

群晖NAS同步阿里云盘

近期阿里云盘还是比较香的&#xff0c;不说别的&#xff0c;就“容量大、不限速”两个优点&#xff0c;已经足够比某度盘好多了。通过在群晖Docker里安装容器&#xff0c;可以让阿里云盘变成一台带webdav协议的文件服务器&#xff0c;群晖通过Cloud Sync套件实时地把文件同步到…

玩转群晖NAS套件系列二:synology Drive的安装使用保姆级教程!

本章介绍&#xff1a; 上一章节我们讲解《玩转群晖NAS套件系列一&#xff1a;cloud sync套件的安装与使用保姆级教程&#xff01;》&#xff0c;此教程堪称史上手把手的保姆教程&#xff0c;受到广大网友的一致好评&#xff0c; 今天在这里介绍synology Drive&#xff0c;一款非…

群晖Cloud Station Serve/Drive登陆失败 解决方法

群晖Cloud Station Serve/Drive登陆失败 解决方法 内网登陆正常&#xff0c;外网登陆显示“连接失败。请检查您的网络设置并再设置一次。” 出现这种问题一般是端口没有映射导致&#xff0c;登陆路由器映射Cloud Station Serve插件的端口号6690&#xff0c;测试联机&#xff…