我是小波变换的新手。我正在尝试使用小波变换来分解图像然后修改系数,这样在最终图像中只保留前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()重新组合它们,我会去做吗?
感谢任何帮助。
提前致谢。
答案 0 :(得分:0)
首先,您应该知道在执行两级分解时,您的系数为:{A2,H2,V2,D2,H1,V1,D1}。因此,修改“ A1”是不合理的。这是因为“ A1”是组合A2,H2,V2和D2的结果。
现在,假设您要修改上述系数之一,则需要熟悉wavedec2
的用法。此函数将所有系数排成一排。
Here是我有关使用MATLAB小波工具箱的文章。 “示例5”演示了wavedec2
如何存储系数。知道存储机制后,修改系数并使用waverec2
进行恢复将非常简单。
请注意,还有一种更直观,更简单的方法来提取系数,对其进行处理并执行恢复:您可以使用(dwt2
,idwt2
)函数而不是(wavedec2
,waverec2
)。有关更多信息,请参见here。