使用wavedec2 matlab - 修改系数

时间:2016-06-30 13:28:14

标签: matlab image-processing wavelet-transform

我是小波变换的新手。我正在尝试使用小波变换来分解图像然后修改系数,这样在最终图像中只保留前15个系数,比如图像压缩(现在不用考虑质量)。

我需要帮助才能继续进行此操作。到目前为止我的代码看起来像这样 -

% gray_image is my inout image%
[C,S] = wavedec2(gray_image,2,'haar');
A1 = appcoef2(C,S,'haar',1);
A2 = appcoef2(C,S,'haar',2);
[H1,V1,D1] = detcoef2('all',C,S,1);
[H2,V2,D2] = detcoef2('all',C,S,2);

我有1级和2级的近似图像,以及1级和2级的细节组件。如果我需要保留大约和细节的前15个系数,然后使用waverec2()重新组合它们,我会去做吗?

感谢任何帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

首先,您应该知道在执行两级分解时,您的系数为:{A2,H2,V2,D2,H1,V1,D1}。因此,修改“ A1”是不合理的。这是因为“ A1”是组合A2,H2,V2和D2的结果。

现在,假设您要修改上述系数之一,则需要熟悉wavedec2的用法。此函数将所有系数排成一排。

Here是我有关使用MATLAB小波工具箱的文章。 “示例5”演示了wavedec2如何存储系数。知道存储机制后,修改系数并使用waverec2进行恢复将非常简单。

请注意,还有一种更直观,更简单的方法来提取系数,对其进行处理并执行恢复:您可以使用(dwt2idwt2)函数而不是(wavedec2waverec2)。有关更多信息,请参见here