matlab去噪处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

c=c1+c2;
c=0.5*c; xx=waverec2(c,s1,'sym4'); subplot(223); image(xx); title('融合图象'); axis square 得到如下的融合图像:
部使用 GIS教研室仅内 许昌学院
6.小波实现数字水印
数字水印(Digital Watermarking)技术是将一些标识信息(即数字水印)直接嵌入数字载体(包括多媒体、文 档、软件等)当中,但不影响原载体的使用价值,也不容易被人的知觉系统(如视觉或听觉系统)觉察或注意到。 通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等 目的。数字水印是信息隐藏技术的一个重要研究方向。
wk.baidu.com
%利用 sym4 小波基,调用 wavedec2 函数对图像进行多级小波分解 lev=3;
S教 [C,S]=wavedec2(X,lev,'sym4'); I %调用 wrcoef2 函数根据一维变换系数进行单支重构 G a1=wrcoef2('a',C,S,'sym4',lev); 院 subplot(222);image(a1);title('b,经 sym4 小波变换三阶重构后的图像');
所得图像如下:
用 使 部 内 仅 室 研 GIS教 4.使用小波包进行分解和重构 院 为了克服小波分解在高频段的频率分辨率较差,而在低频段的时间分辨率较差的缺点,人们在小波分解的 学 基础上提出了小波包分解。小波包分解提高了信号的时频分辨率。比小波分解更高级,对信号的分解重构更能
体现多分辨率的特征。是一种更精细的信号分析方法。
axis square

昌 得到如下的图形:

用 使 部 内 仅 室 研 GIS教 院 学 昌 可以看出,最终得到的图像在滤除噪声的同时细节信息也损失严重。 许 2.小波用于图像压缩
一个图像作小波分解以后,可得到一系列不同分辨率的图像,不同分辨率的子图像对应的频率是不相同的。 高分辨率(即高频)子图像上大部分点的数值都接近 0,越是高频这种现象越明显。对于一个图像来说,表现 一个图像最主要的部分是低频部分,所以一个最简单的压缩方法是利用小波分解,去掉图像的高频部分,而只 保留低频部分。
内 %第二层的低频信息信息为 ca2,显示第二层的低频信息
ca2=appcoef2(C,S,'bior3.7',2);
仅 %首先对第二层信息进行量化编码 室 ca2=wcodemat(ca2,440,'mat',0);
%改变图像的高度 ca2=0.5*ca2;

%显示第二次压缩图像 figure(3),image(ca2); colormap(map) 试验结果如下:
GIS教




用 第一幅为原图,第二幅图像是用小波分解的第一层低频信息重构得到的。第三幅图像是用小波分解的第二 使 层低频信息重构得到的。
3.小波用于边界扭曲
部 内
代码如下:
仅 %调入图像,设置 DWT 的填充模式为零填充,显示图像
load geometry;
室 subplot(221),image(X);title('a,原始图像'); 研 dwtmode('zpd');
%使用 ddencmp 函数来计算去噪的默认阈值和熵标准 %使用 wdencmp 函数用小波来实现图像的去噪和压缩
S教 [thr,sorh,keepapp]=ddencmp('den','wv',Xnoise); I [Xdenoise,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,s,'sym5',2,thr,sorh,keepapp); G subplot(223),image(Xdenoise);%显示去噪后的图像 院 title('去噪后的图像')
代码如下: clc;clear all;close all;
img = imread('home.jpg'); %Get the input image
img = rgb2gray(img);
%Convert to grayscale image
img = double(img);
c = 0.01; %Initialise the weight of Watermarking
1.小波分析用于去噪
二维信号用二维小波分析的去噪步骤如下:
(1.)二维信号的小波分解。选择一个小波和小波分解的层次 N,然后计算信号 s 到第 N 层的分解。
(2)对高斯系数进行阈值量化。对于从 1 到 N 的每一层,选择一个阈值,并对这一层的高斯系数进行软
阈值量化处理。
(3)二维信号的重构。根据小波分解的第 N 层的低频系数和经过修改的从第 1 层到第 N 层的各层高频系
量。在两个连续的近似系数中丢失的信息可以在细节系数中得到。下一步是将近似系数向量进一步分解为两个 部分,而细节系数向量不再分解。
在小波包分解中,每一个细节系数向量也使用近似系数向量分解同样的分法分为两部分。因此它提供了更丰 富的分析方法:在一维情况下,它产生一个完整的二叉树;在二维情况下,它产生一个完整的四叉树。 代码如下:
clear; clc; figure(1); %读出原始图像 subplot(1,2,1);
input=imread('lena.jpg');
imshow(input);
title('原始图像');
%三色分离
input=double(input);
inputr=input(:,:,1);
inputg=input(:,:,2);
仅内
output(:,:,3)=wpb; subplot(1,2,2);

B=uint8(output); imshow(B);

title('合成后原图像'); 试验所得图像如下图所示:
GIS教




小波包分解树的结构如下图所示:

使


5.使用小波进行图像融合


代码如下:

[X,map]=imread('Aral Sea-Kazahkstan.bmp'); X1=X;
昌 小波包方法是小波分解的推广,它提供了更丰富的信号分析方法。小波包元素是由三个参数确定波形,分
别是:位置、尺度和频率。
许 对一个给定的正交小波函数,可以生成一组小波包基。每一个小波包基里提供一种特定的信号分析方法,
它可以保存信号的能量并根据特征进行精确的重构。小波包可以对一个给定的信号进行大量不同的分解。 在正交小波分解过程中,一般是将低频系数分解为两部分。分解后得到一个近似系数向量和一个细节系数向
学 %利用另一种边界填充技术----光滑填充方法
%然后使用与上面同样的小变换对填充图像进行变换,并且显示图像
昌 dwtmode('spd');
[C,S]=wavedec2(X,lev,'sym4');
许 a3=wrcoef2('a',C,S,'sym4',lev);
subplot(223),image(a3);title('c,经光滑填充小波变换后的图像');
代码如下: [X,map]=imread('lena.bmp');%调入图像 X=double(X)/255;%归一化处理 figure(1);subimage(X);%显示图像 colormap(map) [C,S]=wavedec2(X,2,'bior3.7');%对图像用'bior3.7'进行 2 层小波分解

image(X2);
colormap(map2);
title('couple');
axis square
[c1,s1]=wavedec2(X1,2,'sym4');
sizec1=size(c1);
for i=1:sizec1(2)
c1(i)=1.2*c1(i);
end
[c2,s2]=wavedec2(X2,2,'sym4');
thr=20;%设置小波系数阈值
ca1=appcoef2(C,S,'bior3.7',1);%提取小波分解结构中第一层的低频系数和高频系数
ch1=detcoef2('h',C,S,1);
cv1=detcoef2('v',C,S,1);
cd1=detcoef2('d',C,S,1);
a1=wrcoef2('a',C,S,'bior3.7',1);%分别对各频率成分进行重构
%首先对第一层信息进行量化编码 ca1=appcoef2(C,S,'bior3.7',1);

ca1=wcodemat(ca1,440,'mat',0); ca1=0.5*ca1;
使
figure(2),image(ca1)%显示第一次压缩图像 colormap(map)

%保留小波分解第二层低频信息,进行图像的压缩,此时压缩比更大
figure,imshow(uint8(img)),title('Original Image');
[p q] = size(img);
%Generate the key 生成密钥
n = awgn(img,4,3,'linear');
N = imabsdiff(n,img);
figure,imshow(double(N)),title('Key');
h1=wrcoef2('h',C,S,'bior3.7',1);
v1=wrcoef2('v',C,S,'bior3.7',1);
d1=wrcoef2('d',C,S,'bior3.7',1);
c1=[a1,h1;v1,d1];
%进行图像压缩处理,保留小波分解第一层低频信息,进行图像的压缩
%第一层的低频信息为 ca1,显示第一层的低频信息
部使用
title('原始图像 X'); axis square

subplot(222),image(wcodemat(Xnoise,192));
仅 title('含噪声的图像 Xnoise');
axis square
室 [c,s]=wavedec2(X,2,'sym5');%用 sym5 小波对图像信号进行二层的小波分解 研 %下面进行图像的去噪处理
[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters('haar');%Obtain the fiters associated with haar 生成 haar 小波的滤波器
[ca,ch,cv,cd] = dwt2(img,Lo_D,Hi_D); %Compute 2D wavelet transform
%Perform the watermarking 执行过程 y = [ca ch;cv cd];
%对原图像 B 分量做小波包分解 wpb=wpdec2(inputb,2,'db2','shannon'); % 二维小波包分解的重构 wpr=wprec2(wpr);
%用 db2 小波对图像小波包两层分解
使用
wpg=wprec2(wpg); wpb=wprec2(wpb);

%合并原图像的 RGB 三分量 output(:,:,1)=wpr; output(:,:,2)=wpg;
S教 map1=map; I subplot(221); G image(X1); 院 colormap(map1);
title('lina'); axis square

昌 [X,map]=imread('Cyprus-Europa.bmp');
X2=X;
map2=map; subplot(222);
数计算二维信号的小波重构。
其中的重点是如何选取阈值和阈值的量化,本代码中使用了 ddendmp 和 wdencmp 函数。
代码如下:
load detfingr%装入图像
init=3718025452;%下面进行噪声的生成 randn('seed',init);%randn 产生均值 0,方差 1 的正态随机噪声 Xnoise=X+18*(randn(size(X))); colormap(map);%显示原始图像以及它的含噪声的图像 subplot(221),image(wcodemat(X,192));
inputb=double(input(:,:,3));
%对原图像 R 分量做小波包分解
wpr=wpdec2(inputr,2,'db2','shannon'); %用 db2 小波对图像小波包两层分解
%对原图像 G 分量做小波包分解
wpg=wpdec2(inputg,2,'db2','shannon'); %用 db2 小波对图像小波包两层分解
相关文档
最新文档