数字图像处理学习笔记(十二)快速傅里叶变换和高斯滤波器实现图像模糊(低通滤波)

实验截图:

  • 低通滤波实现图像模糊
    在这里插入图片描述

实验代码:

img = imread('erciyuan.jpg');
img = rgb2gray(img);
d0 = 80;%我们设定的阈值
img_noise = imnoise(img,'gaussian');%加入高斯噪声
img_fft = fftshift(fft2(double(img_noise))); %傅里叶变换得到频谱
[m,n] = size(img_fft);
m_mid = floor(m/2);%原图像高的一半 用于得到中心点坐标
n_mid = floor(n/2);%原图像宽的一半 用于得到中心点坐标
distance = zeros(m,n);
h = zeros(m,n);
img1 = zeros(m,n);
for i = 1 : m
    for j = 1 : n
%对得到的频谱进行理想低通滤波
        distance(i,j) = sqrt((i - m_mid) ^ 2+(j - n_mid) ^ 2);
        h(i,j) = exp(-(distance(i,j) ^ 2) / (2 * d0 ^ 2));
        img1(i,j) = img_fft(i,j) * h(i,j);
    end
end
 
img1 = ifftshift(img1);%反傅里叶变换
img1 = uint8(real(ifft2(img1)));
 
subplot(1,2,1);imshow(img_noise);title('加上高斯噪声后的原图');
subplot(1,2,2);imshow(img1);title('通过高斯低通滤波处理后的原图');

结果分析:

  • 频域滤波是在频率域对图像做处理的一种方法。步骤如下:
    在这里插入图片描述

  • 实现高斯低通滤波,首先我们要求出原图像的频谱,这一步我们根据之前的实验可以通过快速傅里叶变换求得,然后我们就要对得到的频谱进行理想低通滤波,这一步首先需要我们计算符合条件的点与中心的距离,公式为:

  • distance(i,j) = sqrt((i - m_mid) ^ 2+(j - n_mid) ^ 2)

  • 然后还需要我们根据滤波器变换公式求出h参数,公式为:

  • h(i,j) = exp(-(distance(i,j) ^ 2) / (2 * d0 ^ 2))

  • 最后我们,将h与噪声图像的傅里叶变换相乘后进行反傅里叶变换,就能实现高斯低通滤波。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值