图像处理之理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器的matlab实现去噪_图像低通滤波-程序员宅基地

技术标签: matlab  计算机视觉  低通滤波器  图像处理  

一、前言

在一幅图像中,低频部分对应图像变化缓慢的部分即图像大致外观和轮廓。高频部分对应图像变换剧烈的部分即图像细节(注意图像的噪声属于高频部分)

低通滤波器的功能是让低频率通过而滤掉或衰减高频,其作用是过滤掉包含在高频中的噪声。即低通滤波的效果是图像去噪声平滑增强,但同时也抑制了图像的边界即过滤掉图像细节,造成图像不同程序上的模糊。对于大小为M*N的图像,频率点(u,v)与频域中心的距离为D(u,v),其表达式为:
在这里插入图片描述
低通滤波器一共有三种,分别为理想低通滤波器、巴特沃斯低通滤波器和高斯低通滤波器。理想低通滤波器的滤波非常尖锐,高斯低通滤波器的滤波则非常平滑。巴特沃斯滤波器介于两者之间,当巴特沃斯低通滤波器的阶数较高时,接近于理想低通滤波器;当巴特沃斯低通滤波器的阶数较低时,则接近于高斯低通滤波器。

二、理想低通滤波器(ILPF)

1、基本定义

理想低通滤波器的产生公式为:
在这里插入图片描述
在这里插入图片描述

其中D0为理想低通滤波器的截止频率。理想低通滤波器在半径为D0的范围内,所有频率都可以没有衰减地通过滤波器,该半径之外的所有频率都完全被衰减掉。理想低通滤波器具有平滑图像的作用,但是有很严重的振铃现象。

补充1:图像处理中,对一幅图像进行滤波处理,若选用的频域滤波器具有陡峭的变化,则会使滤波图像产生“振铃”。所谓“振铃”,即指输出图像的灰度剧烈变化处产生的震荡,就好像钟被敲击后产生的空气震荡。如下图所示:
在这里插入图片描述
参考博客:图像处理中的振铃现象产生原因

2、matlab实现理想低通滤波器去除高斯噪声

(1)实现代码:

close all;
clear all;
clc;
I = imread('football.jpg');
I=rgb2gray(I);

subplot(131),imshow(I);
title('原始图像');

I=imnoise(I,'gaussian');%加入高斯白噪声
subplot(132),imshow(I);
title('加入噪声后所得图像');

% 函数fft2()用于计算二维傅立叶变换
% 函数fftshift()是对函数fft2()作傅里叶变换后得到的频谱进行平移,将变换后的图像频谱中心从矩阵的原点移到矩阵的中心
% 作二维傅里叶变换前一定要用函数im2double()把原始图像的数据类型由uint8转化为double类型
% 否则会因为unit8数据类型只能表示0-255的整数而出现数据截断,进而出现错误结果
s=fftshift(fft2(im2double(I)));
[a,b]=size(s);
a0=round(a/2);
b0=round(b/2);
d0=50; % 将理想低通滤波器的截止频率D0设置为50
for i=1:a %双重for循环计算频率点(i,j)与频域中心的距离D(i,j)=sqrt((i-round(a/2)^2+(j-round(b/2)^2))
    for j=1:b 
        distance=sqrt((i-a0)^2+(j-b0)^2);
        if distance<=d0  % 根据理想低通滤波器产生公式,D(i,j)<=D0,置为1
            h=1;
        else
            h=0;        % 根据理想低通滤波器产生公式,D(i,j)>D0,置为0
        end
        s(i,j)=h*s(i,j);% 频域图像乘以滤波器的系数
    end
end
% real函数取元素的实部
s=real(ifft2(ifftshift(s)));% 最后进行二维傅里叶反变换转换为时域图像
subplot(133),imshow(s,[]);
title('理想低通滤波所得图像'); 

(2)实现效果:
在这里插入图片描述
三、巴特沃斯低通滤波器(BLPF)

1、基本定义

巴特沃斯低通滤波器的产生公式为:

在这里插入图片描述
在这里插入图片描述
其中D0为巴特沃斯低通滤波器的截止频率,参数n为巴特沃斯低通滤波器的阶数,n越大则滤波器的形状越陡峭即振铃现象越明显。

2、matlab实现巴特沃斯低通滤波器去除高斯噪声

(1)实现代码:

close all;
clear all;
clc;
I = imread('football.jpg');
I=rgb2gray(I);

subplot(131),imshow(I);
title('原始图像');

I=imnoise(I,'gaussian');%加入高斯白噪声
subplot(132),imshow(I);
title('加入噪声后所得图像');

% 函数fft2()用于计算二维傅立叶变换
% 函数fftshift()是对函数fft2()作傅里叶变换后得到的频谱进行平移,将变换后的图像频谱中心从矩阵的原点移到矩阵的中心
% 作二维傅里叶变换前一定要用函数im2double()把原始图像的数据类型由uint8转化为double类型
% 否则会因为unit8数据类型只能表示0-255的整数而出现数据截断,进而出现错误结果
s=fftshift(fft2(im2double(I)));
[N1,N2]=size(s);%求二维傅里叶变换后图像大小
n=2;            % 将巴特沃斯低通滤波器的阶数n设置为2
d0=30;          % 将巴特沃斯低通滤波器的截止频率D0设置为30
n1=round(N1/2);
n2=round(N2/2);
for i=1:N1      %双重for循环计算频率点(i,j)与频域中心的距离D(i,j)=sqrt((i-round(N1/2)^2+(j-round(N2/2)^2))
    for j=1:N2 
        distance=sqrt((i-n1)^2+(j-n2)^2);
        if distance==0 
            h=0; 
        else
            h=1/(1+(distance/d0)^(2*n));% 根据巴特沃斯低通滤波器公式为1/(1+[D(i,j)/D0]^2n)
        end
        s(i,j)=h*s(i,j);% 频域图像乘以滤波器的系数
    end
end
% real函数取元素的实部
s=real(ifft2(ifftshift(s)));% 最后进行二维傅里叶反变换转换为时域图像
subplot(133),imshow(s,[]);
title('Butterworth低通滤波图像');

(2)实现效果:
在这里插入图片描述
四、高斯低通滤波器(GLPF)

1、基本定义

高斯低通滤波器的产生公式为:
在这里插入图片描述
在这里插入图片描述
其中D0为高斯低通滤波器的截止频率,注意高斯低通滤波器不会产生振铃现象。

2、matlab实现高斯低通滤波器去除高斯噪声

(1)实现代码:

close all;
clear all;
clc;
I = imread('football.jpg');
I=rgb2gray(I);

subplot(131),imshow(I);
title('原始图像');

I=imnoise(I,'gaussian');%加入高斯白噪声
subplot(132),imshow(I);
title('加入噪声后所得图像');

% 函数fft2()用于计算二维傅立叶变换
% 函数fftshift()是对函数fft2()作傅里叶变换后得到的频谱进行平移,将变换后的图像频谱中心从矩阵的原点移到矩阵的中心
% 作二维傅里叶变换前一定要用函数im2double()把原始图像的数据类型由uint8转化为double类型
% 否则会因为unit8数据类型只能表示0-255的整数而出现数据截断,进而出现错误结果
s=fftshift(fft2(im2double(I)));
[a,b]=size(s);
d0=30; % 将高斯低通滤波器的截止频率D0设置为30
a0=round(a/2);
b0=round(b/2);
for i=1:a
    for j=1:b
        distance=sqrt((i-a0)^2+(j-b0)^2);    % 根据高斯低通滤波器公式H(u,v)=e^-[D^2(u,v)/2*D0^2] 
        h=exp(-(distance*distance)/(2*(d0^2))); % exp表示以e为底的指数函数
        s(i,j)=h*s(i,j);% 频域图像乘以滤波器的系数
    end
end

s=real(ifft2(ifftshift(s)));% 最后进行二维傅里叶反变换转换为时域图像
subplot(133),imshow(s,[]); 
title('高斯低通滤波图像');

(2)实现效果:
在这里插入图片描述

补充2:对图像噪声的简单理解:噪声在图像上常表现为引起较强视觉效果的孤立像素点或像素块。一般, 噪声信号与研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说,噪声点其实在视觉上看上去让人感觉很难受,直观理解就是其和周围的像素点差异比较大,显得比较突兀,视觉看起来很不舒服。

参考博客:
(1) 通过matlab编程,对以下图像分别添加高斯噪声和椒盐噪声(参数自定),并使用理想低通滤波器、高斯低通滤波器和巴特沃斯低通滤波器进行去噪
(2)用matlab编程实现数字图像理想低通滤波、高斯低通滤波和巴特沃斯低通滤波去噪算法

由于刚刚开始学习图像处理,对于很多知识理解不到位。如有错误,恳请指正,任重而道远,慢慢加油!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_44111805/article/details/126305064

智能推荐

普通屏幕已过时?裸眼3D屏幕显示效果更胜一筹!

与普通屏幕中播放的视频相对,裸眼3D屏幕需要先将裸眼3D视频分成两部分,分别呈现在左右两个视窗上,因此后者需要更高的分辨率,以及更精细的图像处理能力,以此使裸眼3D屏幕的画面展示效果更加细腻,进而加深每个物体和场景的深度感和空间感,让每个驻足于此的观众惊叹于裸眼3D屏幕的震撼视觉效果。另外,裸眼3D屏幕的色彩表现,也比大多的普通屏幕更加丰富和鲜艳,能够展现出电影级别的画面质量,总而言之,裸眼3D屏幕比之普通屏幕的显示效果,有着巨大的优势,这也是使裸眼3D成为重要显示技术的重要原因!

如何安全可控的进行跨区域数据交换,提高数据价值?

飞驰云联是中国领先的数据安全传输解决方案提供商,长期专注于安全可控、性能卓越的数据传输技术和解决方案,公司产品和方案覆盖了跨网跨区域的数据安全交换、供应链数据安全传输、数据传输过程的防泄漏、FTP的增强和国产化替代、文件传输自动化和传输集成等各种数据传输场景。飞驰云联主要服务于集成电路半导体、先进制造、高科技、金融、政府机构等行业的中大型客户,现有客户超过500家,其中500强和上市企业150余家,覆盖终端用户超过40万,每年通过飞驰云联平台进行数据传输和保护的文件量达到4.4亿个。

大语言模型与词向量表示

大语言模型的词向量表示由于其在预训练阶段学习到的通用语言特征,可以在多种NLP任务中作为强大的工具,提高任务的性能和准确性。大语言模型与词向量表示之间的关系是NLP领域的一个活跃研究方向,随着模型规模的增加和训练技术的改进,这些模型在理解和生成自然语言方面的能力不断提高。

基于django和vue的xdh官网设计_xdh实例-程序员宅基地

文章浏览阅读927次。前言本项目是使用三段分离的设计前台使用materialize框架搭建的前台页面,后端使用的django写的接口后台使用Amazon UI 模板搭建的界面,管理各个部分的内容项目环境python3.7.2django2.2.9vue axiosjQuerymaterializemysql摘 要本设计采用前后端分离的设计模式,前端通过vue的axios发送ajax请求来..._xdh实例

树莓派python播放音频文件_树莓派开启声音及视频播放-程序员宅基地

文章浏览阅读2.7k次。什么?刚刚买回来点亮的树莓派是个哑巴?放音乐没声音,不是缺少输出设备,那就是默认设置不对啦。如何设置,并且可以让树莓派播放 1080p 的视频,看这里呀~连接输出设备首先,检查你树莓派的输出设备是否正确连接,不管是使用带有音响的显示器 HDMI 接口,还是 3.5mm 耳机或扬声器设备,确保他们正确连接并且供电正常。设定输出设备打开树莓派设置:sudo raspi-config进入 Advance..._树莓派播放不了音乐

阿里云上安装编译vnpy1.7版本_vnpy 编译-程序员宅基地

文章浏览阅读2.3k次。经过几个月的爬坑,终于解决了在阿里云上架设vnpy的问题。开心啊。官方教程并未详细写清楚(官方UBUNTU环境配置链接)应该怎么样在阿里云上面编译安装vnpy。总是卡在编译完成安装编译环节,而且内存会突然奇高直接挂掉服务器。原因居然是因为,talib的c语言库没有安装。以下是我跳坑经历,仅供参考。什么anaconda,pip,mongdb,qtpy什么的鬼,就看官方文档吧。我这里仅仅说明我安装_vnpy 编译

随便推点

嵌入式Linux学习笔记2——虚拟机中Ubuntu无法连接网络的有效解决办法_嵌入式网络连接失败-程序员宅基地

文章浏览阅读303次。本方法适用于NAT方式上网(前提:主机已经处于联网状态)首先检查一下VMware的服务是否开启了①点击【我的电脑】,右键选择【管理】,选择【服务和应用程序】-【服务】②找到VMware的相关服务(如下图中的,共5个)③选中VMware相关的服务,【右键】-【属性】 全部设置为自动,然后 【应用】-【确定】④在VMware界面下单击【编辑】-【虚拟网络编辑器】,进入虚拟网络编辑器界面..._嵌入式网络连接失败

office tab enterprise是什么:Office Tab Enterprise是超级微软office多标签插件---高效办公必备神器_比officetab好用的标签管理-程序员宅基地

文章浏览阅读4.6k次。office tab enterprise是什么:Office Tab Enterprise是超级微软office多标签插件---高效办公必备神器_比officetab好用的标签管理

在配置阿里云视频上传的时候出现ErrorCode=InvalidStorage.NotFound_dependency 'com.aliyun:aliyun-java-sdk-core:4.5.14-程序员宅基地

文章浏览阅读896次,点赞5次,收藏2次。问题:在配置阿里云视频上传的时候出现以下情况从名字看是说存储地址找不到如何解决?存储地址在你的阿里云视频点播控制台的配置管理》媒资管理配置》存储管理如果更改之后还是出现以上问题!那就是依赖问题了!导入最新版的依赖 <!-- 上传视频到阿里云--> <dependencies> <dependency> <groupId>com.aliyun</groupId> ._dependency 'com.aliyun:aliyun-java-sdk-core:4.5.14' not found

STM32F407通过ESP8266连接阿里云_stm32 esp8266连接阿里云连接不稳定-程序员宅基地

文章浏览阅读2.1k次,点赞8次,收藏13次。闲来无事,手头有一块F4的板子,马上也该嵌入式芯片设计大赛了,就用F4上了一下阿里云。文章目录前言一、演示效果二、问题三、主要代码总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、演示效果二、问题中间遇到了一些问题,我刚开始是直接一直F1上的代码,移植的过程遇到了好多奇奇怪怪的问题,上网查了一些资料,终于把问题都解._stm32 esp8266连接阿里云连接不稳定

Delphi多线程编程之同步读写全局数据 _delphi thread memo-程序员宅基地

文章浏览阅读4.8k次。 开始研究最重要的多线程读写全局数据了,结合书上的例子,我修改成下面的情况: unit Tst_Thread3U; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls; type TForm1 _delphi thread memo

h5页面开发配置兼容-阻止双指手势缩放_iframe 挂h5 不支持手势-程序员宅基地

文章浏览阅读3.5k次,点赞5次,收藏5次。阻止双指手势放大h5页面输入框顶将页面顶起问题判定pc/移动端设备打开_iframe 挂h5 不支持手势