1

我是小波变换的新手。我正在尝试使用小波变换来分解图像,然后修改系数,这样在最终图像中只保留前 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() 重新组合它们,我该怎么做关于它?

任何帮助表示赞赏。

提前致谢。

4

1 回答 1

0

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

现在,假设您要修改其中一个提到的系数,您需要熟悉wavedec2. 此函数将所有系数一个接一个地放在一行中。

是我关于使用 MATLAB 的小波工具箱的帖子。“示例 5”演示了如何wavedec2存储系数。waverec2一旦了解了存储机制,修改系数和用于恢复将非常简单。

请注意,还有一种更直观、更简单的方法来提取系数、对其进行操作和执行恢复:您可以使用 ( dwt2, idwt2) 函数代替 ( wavedec2, waverec2)。请参阅此处了解更多信息。

于 2019-11-16T13:09:45.277 回答