小波变换在图像处理中的应用
一 小波与图像去噪
二 小波与图像压缩
三 小波与图像分割
四 小波变换在图像融合中的应用
这里以两幅图像的融合为例,多幅图像的融合方法可依此类推。基于小波变换的融合算法的流程阐述如下:首先,对已配准的源图像进行小波分解,相当于使用一组高低通滤波器进行滤波,分离出高频信息和低频信息;其次,对每层分解得到的高频信息和低频信息依据所得到的信息特点,采取不同的融合策略,在各自的变换域进行特征信息抽取,分别进行融合;最后,采用第一步的小波变换的重构算法对处理后的小波系数进行反变换重建图像,即可得到融合图像[7]。
Mallat 提出了小波变换的分解与重构的快速算法。对一维信号f(x),分解公式为:
为分辨率 下的尺度函数, 为分辨率 下的小波函数。 、 分别为逼近系数和细节系数。
小波变换利用Mallat提出的小波多分辨率分析思想及小波的分解和重构快速算法进行图像融合。用小波变换可以将图像分解为更低分辨率水平上的低频轮廓信息和原始信号在水平、垂直和对角线方向的高频细节信息,且可以对图像作多次分解,形成多级子带信号。小波运算往往通过小波分解后小波系数的替换、选择、权值或叠加运算进行融合,运算的规则由小波系数的大小、统计值或基于小波变换特性定义的新判决量来确定。从目前融合效果上看,小波变换是一种复杂但融合效果较好的算法,也是一种很有前途的算法[8]。
对待融合图像进行多层小波分解,得吐血的低频分量和图像的高频分量,然后分别对低频分量和高频分量采取相应的任何算子和融合规则进行融合处理,得到融合图像的低频分量和高频分量,然后进行小波逆运算得到融合后的图像,融合原理图如下图所示:
图像A |
小波变换系数A |
融合后 图 |
融 规 |
小波变换系数B |
图像B |
融合后小波系数 |
图1 小波变换图像融合流程示意图
由于变换后的低频系数和高频系数分别表示不同的图像特征, 因此, 一般采用不同的融合方法。低频系数表示图像的近似信息, 一般求初始图像的平均, 或者把初始图像之一的低频系数直接作为融合图像的低频分量。
例1
imgPan = imread('D:work3.jpg');
imgMul = imread('D:work4.jpg');
subplot(1,3,1), imshow(imgMul), xlabel ('(a)高分辨率多光谱影像');
subplot(1,3,2), imshow(imgPan), xlabel ('(b)多光谱影像');
mulR = imgMul (:,:,1);
mulG = imgMul (:,:,2);
mulB = imgMul (:,:,3);
[Cpan,Lpan] = wavedec2(imgPan,3,'db13');
imgWH = Lpan(1,:);
length = imgWH(1)*imgWH(2);
[Ctmr,Ltmr] = wavedec2(imgR,3,' db13' );
Cr = Cpan; Cr(1:length) = Ctmr(1:length);
[Ctmg,Ltmg] = wavedec2(imgG,3,' db13' );
Cg = Cpan; Cg(1:length) = Ctmg(1:length);
[Ctmb,Ltmb] = wavedec2(imgB,3,' db13' );
Cb = Cpan; Cb(1:length) = Ctmb(1:length);
imgResult(:,:,1) = waverec2(Cr,Lpan,' db13' );
imgResult(:,:,2) = waverec2(Cg,Lpan,' db13' );
imgResult(:,:,3) = waverec2(Cb,Lpan,' db13' );
imwrite(uint8(imgResult), ' Merge.bmp' );
subplot(1,3,3), imshow(uint8(imgResult), xlabel (' (c)小波融合图像' );
图1 高分辨率影像
图2 多光谱影像
图3 小波变换后影像
与传统的图像融合方法如HIS等相比, 小波融合模型不仅能够针对输入图像的不同特征来合理选择小波变换的次数, 而且在融合操作时又可以根据实际需要来引入双方的细节信息, 从而表现出更强的针对性和实用性, 融合效果更好。另外, 从实施过程的灵活性方面评价, HIS 变换只能而且必须同时对三个波段进行融合操作, 小波方法能够完成对单一波段或多个波段的融合运算。
例2
%下面装入原始图像,X中含有被装载的图像
load facets;
%画出原始图像
subplot(221);image(X);colormap(map);
title('原始图像');
axis square
%产生含噪声图像
init=2055615866;randn('seed',init)
x=X+10*randn(size(X));
%画出含噪声图像
subplot(222);image(X);colormap(map);
title('含噪声图像');
axis square
%下面进行图像的去噪处理
%用小波画数coif3对x进行2层小波分解
[c,s]=wavedec2(x,2,'coif3');
%提取小波分解中第一层的低频图像,即实现了低通滤波去噪
%设置尺度向量n
n=[1,2]
p=[10.12,23.28];
%对三个方向高频系数进行阈值处理
nc=wthcoef2('h',c,s,n,p,'s');
nc=wthcoef2('v',c,s,n,p,'s');
nc=wthcoef2('d',c,s,n,p,'s');
%对新的小波分解结构[nc,s]进行重构
xx=waverec2(nc,s,'coif3');
%画出重构后图像的波形
subplot(223);image(X);colormap(map);
title('去噪后的图像');
axis square;
图4 去噪例三
二维信号在应用中一般表现为图像信号,二维信号在小波域中的降噪方法的基本思想与一维情况一样,在阈值选择上,可以使用统一的全局阈值,有可以分作三个方向,分别是水平方向、竖直方向和对角方向,这样就可以把在所有方向的噪声分离出来,通过作用阈值抑制其成分。