Daubechies-1 是 Haar 小波。它是低通滤波器h
和高通滤波器的组合g
>> s = sqrt(2);
>> h = [1 1] / s;
>> g = [1 -1] / s;
要查看 dwt 的运行情况,您可以发出信号
>> x = (1:64) / 64;
>> y = humps(x) - humps(0);
正如@kl3755 所说,您需要应用它 3 次:
- 每次迭代,dwt 返回
一个低通滤波信号(近似值)
一个高通滤波信号(细节)
- 每次下一次迭代都应用于前一个近似值虽然
这个术语dwt
是模棱两可的- 它通常用于快速小波变换fwt
,它在每次迭代时将近似值和细节下采样因子 2。因为它是最常用的版本,让我们在这里做 FWT:
>> c1 = filter (h, s, y); % level 1 approximation
>> d1 = filter (g, s, y); % level 1 detail
>> c1 = c1 (2:2:end); d1 = d1 (2:2:end); % downsample
>> c2 = filter (h, s, c1); % level 2 approximation
>> d2 = filter (g, s, c1); % level 2 detail
>> c2 = c2 (2:2:end); d2 = d2 (2:2:end); % downsample
>> c3 = filter (h, s, c2); % level 3 approximation
>> d3 = filter (g, s, c2); % level 3 detail
>> c3 = c3 (2:2:end); d3 = d3 (2:2:end); % downsample
很容易看出你将如何编程这个递归。输出通常仅使用fwt
最终近似值 (c3) 和细节信号:
>> fwt_y_3 = [c3 d3 d2 d1];
表示的“魔力”在于fwt
,在反转过滤器之后,您可以通过以与上述相同的方式过滤和上采样来重建原始图像:
>> g=reverse(g); % h is symmetric
>> d3 (2,:) = 0; d3 = d3 (:)'; % upsample d3
>> c3 (2,:) = 0; c3 = c3 (:)'; % upsample c3
>> r2 = filter (h, 1/s, c3) + filter (g, 1/s, d3); % level 2 reconstruction
>> d2 (2,:) = 0; d2 = d2 (:)'; % upsample d2
>> r2 (2,:) = 0; r2 = r2 (:)'; % upsample r2
>> r1 = filter (h, 1/s, r2) + filter (g, 1/s, d2); % level 1 reconstruction
>> d1 (2,:) = 0; d1 = d1 (:)'; % upsample d1
>> r1 (2,:) = 0; r1 = r1 (:)'; % upsample r1
>> ry = filter (h, 1/s, r1) + filter (g, 1/s, d1); % reconstruction of y
检查是否一切正常:
>> subplot(2,2,1);plot([y' 80+ry']);
>> subplot(2,2,2);plot([c1' 80+r1(1:2:end)']);
>> subplot(2,2,3);plot([c2' 80+r2(1:2:end)']);
>> subplot(2,2,4);plot(fwt_y_3);hold on;plot(80+c3(1:2:end));hold off
该名称dwt
可能指的是未抽取小波变换的不同版本。fwt
速度更快且不冗余,但它的主要缺点是它不是移位不变的:您不能通过重构 y 的移位来移位fwt
y。未抽取的小波变换是移位不变的:
1. 连续小波变换cwt
如上所述,但没有下采样和上采样,
请参见 dl.acm.org/citation.cfm?id=603242.603246
2.“循环旋转”或“à trous” transform 进行二次采样,但在每个级别执行所有可能的移位。
见 dl.acm.org/citation.cfm?id=1746851