逆滤波与维纳滤波

本文介绍了逆滤波和维纳滤波在数字图像处理中的应用,包括运动模糊、加高斯噪声的处理,以及逆滤波和维纳滤波的算法描述和MATLAB实现。实验结果显示,逆滤波在有噪声的情况下恢复效果不佳,而维纳滤波在适当调整功率比值后能显著改善图像质量。
摘要由CSDN通过智能技术生成

逆滤波与维纳滤波

一、算法描述

1.运动模糊

主要使用课本公式: H(u, v) = sin(pi * (a * u + b * v)) * exp(-1i * pi * (a * u + b * v)) * T / (pi * (a * u + b * v))。但另外需注意图像矩阵f在傅里叶变换前和傅里叶反变换后都要进行中心化,且退化函数H也要进行中心化。

2.加高斯噪声

加上噪声的图像是原图像矩阵加上单独产生的一个元素随机产生的矩阵而得到的图像,这个随机生成的等大矩阵上的每一位都互不相关,但产生的值的出现以0为均值,500为方差,是一个正负值都包含的矩阵。故原图像加上这个噪声矩阵后,每一位的像素值都会变大或变小,但变化情况呈以0为均值,根号500为标准差的高斯分布。

产生噪声矩阵的方法是,产生一个和原图像等大的、值在0到1之间的随机矩阵,作为概率矩阵。对每一个概率值在高斯分布上逆向求得对应该概率值的横坐标,该横坐标就是噪声矩阵对应位置上的值。这样产生的噪声矩阵就会服从以0为均值,500为方差的高斯分布。

3.逆滤波

在已知退化函数频谱H的情况下,由于退化过程G = F * H,那么反之,复原过程大致为F = G / H,这样虽然往往退化后的图像由于只取实部已丢失虚部信息,但还是能恢复较多的信息。

4.维纳滤波

主要根据维纳滤波公式:F(u,v) = (1 / H(u,v)) * (H(u,v)H*(u,v) / (H(u,v)H*(u,v) + Sn(u,v) / Sf(u,v)))。其中Sn(u,v) / Sf(u,v)是噪声功率谱和原图像功率谱的比值,由于该值较难确定,所以实验过程中用多个常数来替代该值,直到找到使恢复效果较优的值。

二.Matlab代码

(1)函数MotionBlur(运动模糊函数,传入原图像矩阵和退化函数频谱):

MotionBlur.m

function g = MotionBlur(f, H)
    f = Centralize(f);
    F = fft2(f);

    G = F .* H;
    g = ifft2(G);
    g = real(g);
    g = Centralize(g);
end

(2)高斯噪声函数GaussianNoise:

GaussianNoise.m

function gn = GaussianNoise(g, mean, var)
    [height, width] = size(g);
    noise = norminv(rand(height, width), mean, sqrt(var));
    gn = noise + double(Expand(g));
end

(3)逆滤波函数InverseFilter:

InverseFilter

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值