资源简介

图像处理与分析作业:以lena图像为例,编程实现小波域维纳滤波.  首先使用高斯噪声叠加在原始图像上。  使用分解三次后进行维纳滤波再逐层返回,使用的是dwt2这个函数  [cA,cH,cV,cD]=dwt2(X,' bior2.2')  每次进行计算的是CH,CV,CD三个高频分量。  计算完之后再和低频进行重构复原。  最后对三次维纳滤波的结果和原始图像做差值,发现差值基本都是一些边缘,说明一些高频的分量在滤波的过程中被滤掉了。但是总体的滤波效果还是不错的

资源截图

代码片段和文件信息

clear all;
clc;
I = imread(‘lena.jpg‘);
I = rgb2gray(I);
subplot(231);
imshow(I);
title(‘原始图像‘);
J1=imnoise(I‘gaussian‘00.01);
subplot(232);
imshow(J1);
title(‘加高斯噪声图‘);
K1=wiener2(J1[3 3]);
subplot(233);
imshow(K1);
title(‘系统维纳滤波后的图像‘)


% (cA (cH cV cD))要注意返回的值,
% 分别为低频分量,水平高频,垂直高频,对角线高频。高频的值包含在一个tuple中
[CACHCVCD] = dwt2(J1‘bior2.2‘);
[CA2CH2CV2CD2] = dwt2(CA‘bior2.2‘);
[CA3CH3CV3CD3] = dwt2(CA2‘bior2.2‘);
subplot(234);imshow(CA[]);
title(‘低通分解一次‘);

temp = sort(CH3(:));
[colcow] = size(CH3);
M = CH3(:);%二维矩阵变成一维矩阵
m = median(abs(M));%取中值
sigma1 = m/0.6745;
sigma = sum(sum(temp.^2))/(col*cow) - sigma1*sigma1;
CH3 = CH3*(sigma/(sigma1^2+sigma));

temp = sort(CV3(:));
[colcow] = size(CV3);
M = CV3(:);%二维矩阵变成一维矩阵
m = median(a

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     137469  2019-12-09 23:49  第十三讲作业.pdf

     文件     157024  2019-12-09 23:38  维纳滤波.png

     文件      91814  2019-06-25 09:31  lena.jpg

     文件       2796  2019-12-09 23:37  wavelet.m

----------- ---------  ---------- -----  ----

               389103                    4


评论

共有 条评论