matlab 维纳滤波器算法实现

matlab 维纳滤波器算法实现维纳滤波器算法实现 matlab

Function Code

function aOut = WienerFilter(aIn,k,a,b,T) %这仅仅是一个维纳滤波器 %k(默认为0.001)--->加到Huv2所有项上的一个规定常数,根据情况选择大小 %a(默认为0.1)--->x方向最大移动量(运动模糊图片) %b(默认为0.1)--->y方向最大移动量(运动模糊图片) %T(默认为1)--->移动到最大所需的时间 %aOut--->输出图像 %输入参数接收及预定义 if nargin == 1 k = 0.005; a = 0.1; b = 0.1; T = 1; elseif nargin == 2 a = 0.1; b = 0.1; T = 1; elseif nargin == 3 b = 0.1; T = 1; elseif nargin == 4 T = 1; end %读入退化图像并进行图像预处理 a1 = double(aIn); % figure,imshow(a1,[])%-------------图像--------------- %生成退化图像频谱图Guv(禁止填充) [ra,ca] = size(a1); [X,Y] = meshgrid(0:ca-1,0:ra-1); Guv = fft2(a1.*(-1).^(X+Y)); % figure,imshow(log(abs(Guv)+1),[])%-------------图像--------------- %生成退化传递函数Huv uaPvb = (Y-floor(ra/2)).*a+(X-floor(ca/2)).*b+eps; Huv = T.*sin(pi.*uaPvb).*exp(-1j.*pi.*uaPvb)./(pi.*uaPvb); Huv2 = abs(Huv).*abs(Huv); %估计函数公式 Fuv = (Huv2./(Huv2+k)./Huv).*Guv; %将得到的估计函数进行逆傅里叶变换 FxyShift = ifft2(Fuv); Fxy = real(FxyShift).*(-1).^(X+Y); % figure,imshow(Fxy,[])%-------------图像--------------- aOut = Fxy; end 

Demo Code

clear close all aIn3 = imread("paper3.jpg"); aIn2 = imread("paper2.jpg"); aIn1 = imread("paper1.jpg"); a3 = double(aIn3); a2 = double(aIn2); a1 = double(aIn1); k3 = 0.001; k2 = 0.0001; k1 = 0.00001; a = 0.1; b = 0.1; T = 1; aOut3 = WienerFilter(a3,k3,a,b,T); aOut2 = WienerFilter(a2,k2,a,b,T); aOut1 = WienerFilter(a1,k1,a,b,T); figure subplot(231),imshow(a3,[]),title("严重噪声") subplot(232),imshow(a2,[]),title("中度噪声") subplot(233),imshow(a1,[]),title("轻微噪声") subplot(234),imshow(aOut3,[]),title("k = "+string(k3)) subplot(235),imshow(aOut2,[]),title("k = "+string(k2)) subplot(236),imshow(aOut1,[]),title("k = "+string(k1)) 

Figure

说明:由于屏幕大小限制,噪声图像缩小后更加模糊

1、k3 = 0.05;k2 = 0.005;k1 = 0.001;

在这里插入图片描述

2、k3 = 0.01;k2 = 0.01;k1 = 0.008;

在这里插入图片描述

3、k3 = 0.1;k2 = 0.1;k1 = 0.1;

在这里插入图片描述

4、k3 = 0.001;k2 = 0.0001;k1 = 0.00001;

在这里插入图片描述

Conclusion

k值的过于增大,噪声明显被抑制,但是图像会变得更加模糊!

k值过于减小,会加强噪声,使噪声放大!

需要多次实验才能找到适合的k值!

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

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

(0)
上一篇 2026年3月18日 下午12:15
下一篇 2026年3月18日 下午12:16


相关推荐

  • jni断点调试「建议收藏」

    jni断点调试「建议收藏」jni断点调试

    2022年5月16日
    46
  • C 反双曲余弦函数

    C 反双曲余弦函数反双曲余弦函数的定义是 T1 Math Log t Math Sqrt t t 1 1 叉乘 crossproduct 也叫向量的外积 向量积 顾名思义 求下来的结果是一个向量 记这个向量为 c 向量 c 向量 a 向量 b a b sin a b a b 指向量 a 与向量 b 之间的夹角 向量 a b a b

    2026年3月18日
    2
  • CSSS选择器总结[通俗易懂]

    CSSS选择器总结[通俗易懂]title:CSSS选择器总结date:2018073020:11:07tags:css在css的学习中有一个很容易让人混乱的就是css选择器,因为选择器有很多种,而且在使用的时候有

    2022年8月6日
    8
  • JVM进阶(一):初识 JAVA 栈

    JVM进阶(一):初识 JAVA 栈JVM 进阶 一 初识 JAVA 栈 若想使自己编写的 Java 程序高效运行 以及进行正确 高效的异常诊断 JVM 是不得不谈的一个话题 本 JVM 进阶 专栏大部分内容均来源于经典书籍 深入理解 Java 虚拟机 下面言归正传 本文重点从虚拟机内存模型 运行时数据区域 入手 先看图 这是一张比较官方的虚拟机模型图 今天讲的就是虚线框中栈的部分 栈是我们最常用的内存区域 它主

    2026年3月26日
    2
  • 使用wsgiref库diy简单web架构

    1.了解CGI和WSGI(1)CGICGI(CommonGatewayInterface)通用网关接口,即接口协议,前端向服务器发送一个URL(携带请求类型、参数、cookie等信息)请求,

    2021年12月29日
    44
  • Redis客户端工具_redis安装教程

    Redis客户端工具_redis安装教程作者:IT邦德中国DBA联盟(ACDU)成员,目前从事DBA及程序编程(Web\java\Python)工作,主要服务于生产制造现拥有Oracle11gOCP/OCM、Mysql、Oceanbase(OBCA)认证分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证从业8年DBA工作,在数据库领域有丰富的经验B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007前言RedisDesktopManager官方版是一款简单快速、跨平台的Redi

    2026年1月23日
    5

发表回复

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

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