实验要求

  (a) 编写一个给图像中添加高斯噪声的程序,程序的输入参数为噪声的均值与方差。

  (b) 编写程序实现公式(5.6-11)所示的污损滤波;

  (c) 如图5.26(b)所示,对图像5.26(a) 进行+45o 方向,T = 1 的污损滤波;

  (d) 对污损后的图像加入均值为0,方差为10 的高斯噪声;

  (e) 编写程序使用公式(5.8-6)所示的参数维纳滤波对图像进行恢复。


技术论述

1、高斯噪声

  高斯噪声是指概率密度函数服从高斯分布(即正态分布)的一类噪声。常见的高斯噪声包括起伏噪声、宇宙噪声、热噪声和散粒噪声等等。

  在空间域和频率域中,由于高斯噪声在数学上的易处理性,故实践中常用这种噪声模型。

  高斯随机变量z的PDF由上式给出,其中z表示灰度值,u表示z的均值,σ表示z的方差。当z服从高斯分布时,其值有大约70%落在范围[(u-σ),(u+σ)]内,有大约95%落在范围[(u-2σ),(u+2σ)]内。

  在MATLAB中,通常使用randn()函数来产生标准正态分布的随机数或矩阵。

2、污损滤波

  通过均匀线性运动模糊对图像进行污损滤波。假定图像只在x方向以给定的速度x0(t)=at/T 做匀速直线运动。当 t=T 时,图像位移的总距离为a,则有

  若允许y分量也随着变化,按 y0=bt/T 给出的运动,则退化函数变为

3、参数维纳滤波

  维纳滤波又称最小均方滤波,是一种综合了退化函数和噪声统计特征进行复原处理的方法。它是一种基于最小均方误差准则、对平稳过程的最优估计器。这种滤波器的输出与期望输出之间的均方误差为最小,因此,维纳滤波是一个最佳滤波系统,可用于提取被平稳噪声所污染的信号。

  该方法建立在图像和噪声都是随机变量的基础上,目标是找到未污染图像f的一个估计,使它们之间的均方误差最小。这种误差度量为:

  当未退化图像的功率谱未知或者是不能估计时,通常使用的一种方法是由下面的表达式来近似:

  其中,K是一个加到|H(u,v)|2的所有项上的特定常数。


实验结果






实验程序

% --------------------------实验要求------------------------------------------img = imread('Fig5.26(a).jpg');                             % 原图像
img_fouling = fouling_filter(img,0.1,0.1,1);                % 污损滤波
img_gaussian_10 = gaussian_noise(img_fouling,0,10);         % 高斯噪声
img_wiener = wiener_filter(img,img_gaussian_10,0.1);        % 维纳滤波subplot(3,1,1);imshow(img);title('原图像');
subplot(3,1,2);imshow(img_fouling);title('污损滤波: +45°,T=1');
subplot(3,1,3);imshow(img_gaussian_10);  title('高斯噪声: 均值0,方差10');
figure;
imshow(img_wiener);title('维纳滤波图像');% ------------------------ 高斯噪声比较-----------------------------------------img_gaussian_100 = gaussian_noise(img_fouling,0,100);       % 均值0,方差100
img_gaussian_1000 = gaussian_noise(img_fouling,0,1000);     % 均值0,方差1000figure;
subplot(2,1,1);imshow(img_gaussian_100); title('高斯噪声: 均值0,方差100(仅作对比)');
subplot(2,1,2);imshow(img_gaussian_1000);title('高斯噪声: 均值0,方差1000(仅作对比)');% ------------------------ 调整合适参数-----------------------------------------img_fouling = fouling_filter(img,0.01,0.01,1);              % 污损滤波
img_gaussian_10 = gaussian_noise(img_fouling,0,10);       % 高斯噪声
img_wiener = wiener_filter(img,img_gaussian_10,0.1);        % 维纳滤波figure;
subplot(3,1,1);imshow(img_fouling);title('污损滤波: +45°,T=1');
subplot(3,1,2);imshow(img_gaussian_10);title('高斯噪声: 均值0,方差10');
subplot(3,1,3);imshow(img_wiener);title('调整参数后的维纳滤波图像');% ------------------------MATLAB自带函数------------------------------------psf = fspecial('motion',25,45);
mf = imfilter(img,psf,'circular','conv');
noise = imnoise(img,'gaussian',0,10);
mfn = mf + noise;
nsr = sum(noise(:).^2)/sum(mf(:).^2);
img_out = deconvwnr(mfn,psf,nsr);figure;
subplot(3,1,1);imshow(mf);title('Matlab自带污损滤波');
subplot(3,1,2);imshow(mfn);title('Matlab添加高斯噪声');
subplot(3,1,3);imshow(img_out);title('Matlab自带维纳滤波');
% -------------------------------------------END-----------------------------------------------
% --------------------------------------污损滤波-----------------------------------------------function img_fouling = fouling_filter(img,a,b,T) [M,N] = size(img);
F = fft2(img);for u = 1:Mfor v = 1:NK(u,v) = pi * (u * a + v * b);H(u,v) = T * sin(K(u,v)) * exp(-1j * K(u,v))/K(u,v);G(u,v) = H(u,v) * F(u,v);end
endimg_fouling = ifft2(G);
img_fouling = uint8(abs(img_fouling));end
% ----------------------------------给图像添加高斯噪声-----------------------------------function img_noise = gaussian_noise(img,mean,var) [M,N] = size(img);
add_noise = mean + randn(M,N)*sqrt(var);
img_noise = img + uint8(add_noise);end
% --------------------------------------维纳滤波-----------------------------------------------function img_wiener = wiener_filter(img_src,img_degradation,K) [M,N] = size(img_src);
S = fft2(img_src);
G = fft2(img_degradation);for u = 1:Mfor v = 1:NH(u,v) = G(u,v)/S(u,v);F(u,v) = 1/H(u,v)*(abs(H(u,v)))^2/((abs(H(u,v)))^2+K)*G(u,v);end
endimg_wiener = ifft2((F));
img_wiener = uint8(abs(img_wiener));end

【图像处理】参数维纳滤波(Parametric Wiener Filter)相关推荐

  1. 参数维纳滤波(Parametric Wiener Filter)

     摘   要:本实验主要使用维纳滤波法(又名为最小均方误差滤波)实现图像复原与重建.首先我们通过对一幅图像加入运动污损滤波和高斯噪声,然后从噪声中提取出原始图像信号.在各种估计方法中,维纳滤波是一 ...

  2. 数字图像处理实验(13):PROJECT 05-04,Parametric Wiener Filter

    实验要求: Objective: To understand the high performance of the parametric Wiener Filter in image restora ...

  3. 数字图像处理Python语言实现-图像滤波-维纳滤波(Wiener Filter)

    维纳滤波(Wiener Filter) 1.前言 维纳滤波器(Wiener Filter)是最早用于图像复原经典滤波之一,目前被广泛用于信号滤波降噪和图像预处理中.维纳滤波器的目的是使用相关信号作为输 ...

  4. 维纳滤波原理(Wiener Filter)

    维纳滤波原理(Wiener Filter) - 知乎 自适应滤波:维纳滤波器--FIR及IIR设计 - 桂. - 博客园

  5. VVC/VTM: 自适应环路滤波(ALF, Adaptive Loop Filtering)中维纳滤波(Wiener Filtering)的公式推导

    0 前言 自适应环路滤波(ALF)并不是在 H.266/VVC 标准制定过程中才被提出来的技术,实际上其早在 H.265/HEVC 标准制定时就基本确定了现有形式的雏形,只是由于当时硬件算力的限制未能 ...

  6. Wiener Filter

    假设分别有两个WSS process:$x[n]$,$y[n]$,这两个process之间存在某种关系,并且我们也了解这种关系.现在我们手头上有process $x[n]$,目的是要设计一个LTI系统 ...

  7. php url参数过滤器,使用php://filter时向流过滤器添加过滤器参数

    我有一个二进制文件,我想转换成标准的符合mime的base64字符串.我想我可以用 php://filter 方法来过滤流,但我对如何设置"line-length"参数感到困惑.还 ...

  8. Spring MVC在参数绑定前通过Filter过滤器改变请求参数的值

    第一步,对request请求进行增强: /*** author: zhangxueliang* date: 2019-08-23*/ public class ParameterServletRequ ...

  9. Wiener Filter维纳滤波器halcon算子,持续更新

    目录 gen_psf_defocus gen_psf_motion simulate_defocus simulate_motion wiener_filter wiener_filter_ni ge ...

最新文章

  1. MonoDevelop 1.0 和 Mono 1.9(2.0 beta)发布了
  2. 解决:No configuration found. Configuring ehcache from ehcache-failsafe.xml 问题
  3. 皮一皮:高考考了 692 分想当程序员的女生
  4. mysql内联表格使用索引_【求助】MYSQL表关联内联视图不走索引问题??诡异啊...
  5. Android MIPI转LVDS显示屏调试---DSI Tuner安装(1).docx
  6. 构建针对 iOS 和 Android 的原生扩展
  7. 计算机网络技术教法改革方案,计算机网络实验论文,关于“计算机网络”教学改革相关参考文献资料-免费论文范文...
  8. FileBuffer 与 ImageBuffer 互相转换(滴水PE作业)
  9. 《构建之法》阅读笔记04
  10. 纯CSS实现侧边栏/分栏高度自动相等
  11. Linux:守护进程解析、如何实现守护进程
  12. Selenium 生成HTML的测试报告
  13. Python实现快乐的数字
  14. tomcat内存溢出的解决方法
  15. 国民体质测定标准计算机应用软件,体测标准计算器
  16. 字符串c语言实验报告总结,c语言实验报告范文
  17. DataStore的基础用法
  18. python中mysqldb模块_Python学习之MySQLdb模块
  19. python中画折线图不同颜色的两段_matplotlib绘制精美的折线图——另附颜色、形状查找表...
  20. 学习笔记之——李群与李代数的理解

热门文章

  1. TraPHic: Trajectory Prediction in Dense and Heterogeneous Traffic Using Weighted Interactions
  2. 二分——最大的最小值
  3. 洛谷 P1908 逆序对(树状数组+离散化)
  4. 【less-11】基于SQLI的POST字符型SQL注入
  5. 打表找规律-灯泡状态数
  6. windows的回车换行“\r\n“,Linux的回车换行“\n“
  7. 【Linux】完美解决 nginx 的权限问题( Permission denied)
  8. 一天一个小算法的学习之选择排序
  9. wget命令的几个常用选项和示例
  10. StringUtils一些常用方法