matlab:lena图像在空域和频域的均匀滤波

matlab:lena图像在空域和频域的均匀滤波文章目录前言一、空域滤波二、频域滤波三,matlab代码结果前言卷积:函数空间域的卷积的傅里叶变换是函数傅里叶变换的乘积。对应地,频率域的卷积与空间域的乘积存在对应关系。给定频率域滤波器,可对其进行傅里叶逆变换得到对应的空域滤波器;滤波在频域更为直观,但空域适合使用更小的滤波模板以提高滤波速度。因为相同尺寸下,频域滤波器效率高于空域滤波器,故空域滤波需要一个更小尺寸的模板近似得到需要的滤波结果。一、空域滤波将模板在图像中逐像素移动,将卷积核的每个元素分别和图像矩阵对应位置元素相乘并将结果累加,

大家好,又见面了,我是你们的朋友全栈君。


前言

卷积:函数空间域的卷积的傅里叶变换是函数傅里叶变换的乘积。对应地,频率域的卷积与空间域的乘积存在对应关系。


给定频率域滤波器,可对其进行傅里叶逆变换得到对应的空域滤波器;滤波在频域更为直观,但空域适合使用更小的滤波模板以提高滤波速度。因为相同尺寸下,频域滤波器效率高于空域滤波器,故空域滤波需要一个更小尺寸的模板近似得到需要的滤波结果。

一、空域滤波

将模板在图像中逐像素移动,将卷积核的每个元素分别和图像矩阵对应位置元素相乘并将结果累加,累加和作为

模板中心对应像素点的卷积结果。通俗的讲,卷积就是对整幅图像进行加权平均的过程,每一个像素点的值,都

由其本身和邻域内的其他像素值经过加权平均后得到。

二、频域滤波

频率域是由傅里叶变换和频率变量 (u,v)定义的空间,频域均匀滤波处理过程:先对图像进行傅里叶变换,转换至频率域,在频域使用滤波函数进行滤波,最后将结果反变换至空间域。即:
(1)计算原始图像f(x,y)的DFT,得到F(u,v)。
(2)创建均值滤波器,并使用fft2计算其DFT得到H(u,v)
(3)计算滤波器函数H(u,v)与F(u,v)的乘积G(u,v)。
(4)计算第(3)步计算结果的傅里叶反变换g(x,y)。
(5)取g(x,y)的实部作为最终滤波后的结果图像。
按照该步骤,在MATLAB中很容易编程实现频域滤波。滤波能否取得理想结果的关键取决于频域滤波函数H(u,v),常常称之为滤波器,或滤波器传递函数。因为它在滤波中抑制或滤除了频谱中某些频率的分量,而保留其他一些频率不受影响。


注意空域的滤波器x转变的频域时用的函数是fft2(x,m,n),m*n是需要处理的图片大小。

三,matlab代码

t=imread('E:\matlab DMP\lenaG.bmp');
[m,n,z]=size(t);

 

y1=0+10*randn(m,n);%二维高斯分布矩阵 0是均值 20是标准差
y2=0+20*randn(m,n);%二维高斯分布矩阵 0是均值 20是标准差
y1=uint8(y1);
y2=uint8(y2);
%加上噪声
t1=t+y1;
t2=t+y2;
figure('name','添加高斯噪声');;
subplot(2,2,1),imshow(t),title('原图');
subplot(2,2,3),imshow(t1),title('加入均值为0,标准差为10的高斯噪声后');
subplot(2,2,4),imshow(t2),title('加入均值为0,标准差为20的高斯噪声后');


 

K1=conv2(fspecial('average',5),t2 )/255;
K2=conv2(fspecial('average',10),t2 )/255 ;
K3=conv2(fspecial('average',20),t2 )/255;
 
figure('name','空域均值滤波');

subplot(2,2,1),imshow(t2),title('原图');
subplot(2,2,2),imshow(K1),title('均值滤波,sizes 5x5');
subplot(2,2,3),imshow(K2),title('均值滤波,sizes 10x10');
subplot(2,2,4),imshow(K3),title('均值滤波,sizes 20x20');


 
Fc = fft2(t2);

 

h1 = fspecial('average',5);
h2 = fspecial('average',10);
h3 = fspecial('average',20);
 

H1 = fft2(h1,512,512);
H2 = fft2(h2,512,512);
H3 = fft2(h3,512,512);

G1 = H1.*Fc;
G2 = H2.*Fc;
G3 = H3.*Fc;
 

g1 = ifft2(G1);
g1 = im2uint8(mat2gray(abs(g1)));
 
g2 = ifft2(G2);
g2 = im2uint8(mat2gray(abs(g2)));

g3 = ifft2(G3);
g3 = im2uint8(mat2gray(abs(g3)));

figure('name','频域均值滤波');
subplot(2,2,1),imshow(t2),title('高斯噪声');
subplot(2,2,2),imshow(g1),title('高斯过滤,size 5*5');
subplot(2,2,3),imshow(g2),title('高斯过滤,size 10*10');
subplot(2,2,4),imshow(g3),title('高斯过滤,size 20*20');
 


Kk1 = medfilt2(t2,[3,3]);
Kk2 = medfilt2(t2,[5,5]);
Kk3 = medfilt2(t2,[7,7]);
figure('name','频域中值滤波');
subplot(2,2,1),imshow(t2),title('高斯噪声');
subplot(2,2,2),imshow(Kk1),title('高斯过滤,size 3*3');
subplot(2,2,3),imshow(Kk2),title('高斯过滤,size 5*5');
subplot(2,2,4),imshow(Kk3),title('高斯过滤,size 7*7');
 

结果

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150972.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月19日 上午7:46
下一篇 2022年6月19日 上午7:46


相关推荐

  • 新遇到的问题 , 进程退出代码是 ‘0xffffffff’

    新遇到的问题 , 进程退出代码是 ‘0xffffffff’最近新做了系统发现IIS无法正常发布网站,网上提供了很多办法,都未解决。解决过程一波三折,依次用了下列方法:1、解决办法点击“开始”-“控制面板”-“管理工具”-“组件服务”-“计算机”-“我的电脑”-“DCOM”选项,选择其下的“IISADMINSERVICE”,右健选择“属性”,找到“安全”,在“启动和激活权限”中编辑“自…

    2022年5月16日
    167
  • 使用智能移动设备访问Ossim制

    使用智能移动设备访问Ossim制

    2022年1月10日
    114
  • MySQL—内连接和外连接区别

    MySQL—内连接和外连接区别区别内连接(innerjoin):取出两张表中匹配到的数据,匹配不到的不保留 外连接(outerjoin):取出连接表中匹配到的数据,匹配不到的也会保留,其值为NULL示例表users表mysql>select*fromusers;+—-+——-+|id|name|+—-+——-+|1|john||2…

    2022年8月30日
    9
  • Python求解两数之和[通俗易懂]

    Python求解两数之和[通俗易懂]题目描述:写一个函数,此函数要实现以下功能:给一个列表,并且给一个目标数字,如果列表里的两个数字之和等于目标数字,返回那两个数字的索引值。比如,给定列表[3,5,7,14],目标数字是10,那么返回[0,2],0是3的索引,2是7的索引,3+7=10.注意,不可以重复利用列表中的某个数字,比如返回[1,1]是不能接受的。一、两层for循环遍历列表思路:先拿出列表里的第0个数…

    2022年5月5日
    37
  • python安装不了whl文件_python安装.whl文件失败

    python安装不了whl文件_python安装.whl文件失败原博文2017-12-2714:26−安装wheelpipinstallwheel以安装scipy为例,在官网下载安装包https://pypi.python.org/pypi/scipy一定要注意这里的版本一定要和你的python所支持的版本一直否则会出现C:\Users\xiaoqiu>pip…相关推荐2019-12-1909:59−##pip安装最简单的安装方式,自动下…

    2022年5月9日
    60
  • 10.20卸载tensorflow2.0,安装tensorflow1.14.0

    10.20卸载tensorflow2.0,安装tensorflow1.14.0这里写自定义目录标题卸载tensorflow2.0安装1.14.0卸载tensorflow2.0安装1.14.0已安装python版本3.8.5,最开始误按装了tensorflow2.0,发现2.0和1.0版本语句不兼容,解决办法:tensorflow版本问题(1版本和2版本语句不兼容)当我们在tensorflow2.0版本上写的语句是1.0的格式时,可能会报错。这时只修改两条语句,就可以覆盖全部语句,不需要再担心。下面展示一些内联代码片。//Acodeblockvarfoo=

    2022年6月22日
    41

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号