最近在研究彩色图像水印的嵌入算法,是基于小波变换的。查看一些文献,大多数人在使用haar小波,为此做了个小实验,看看实现效果。Haar小波的优点是它的唯一一个具有对称性的紧支正交实数小波,支撑长度为1,用它做小波变换的话,计算量很小。缺点就是光滑性太差,用它重构的信号,就会出现‘锯齿’现象。
下面是利用dwt2实现图像单层小波分解及显示:
%利用dwt2函数实现图像单层系小波分解及显示
close all;clear all;clc;
X = imread(‘a.jpg’);
X = rgb2gray(X);
[CA CH CV CD] = dwt2(X,‘haar’);
figure;
subplot(1,4,1);
imshow(uint8(CA));title(‘近似系数’);
subplot(1,4,2);
imshow(uint8(CH));title(‘水平细节分量’);
subplot(1,4,3);
imshow(uint8(CV));title(‘垂直细节分量’);
subplot(1,4,4);
imshow(uint8(CD));title(‘对角细节分量’);
figure;
subplot(1,2,1);imshow(X);title(‘原图像’);
subplot(1,2,2);imshow([CA,CH;CV,CD]);title(‘小波分解四个分量合成图像’);
实现结果:
有一点让我感到迷惑的是,为什么四个分量合成的近似系数分量与合成前不一样。我找了资料,也看了MATLAB书中写的关于这方面的资料,也跟着书上的代码重新敲了一遍,书上的结果和我做实验的结果不一样。如果哪位大神知道原因,欢迎在下方评论。。。