我目前正在深入研究Wavelets并对某些事情感到有些困惑。
首先,这不是功课。它仅用于娱乐编码。
为了更好地理解,我在C中实现了LeGal 5/3小波的提升方案。 据我所知,它似乎有效。我可以反转它并正确再现原始图像。 在伪代码中,我的前进dwt看起来像这样:
// deinterleave splits the low band from the high band
// (e.g. 1 0 3 0 6 0 8 1 11 becomes 1 3 6 8 11 | 0 0 0 1)
for each row in image:
dwt1d(row)
deinterleave(row)
for each col in image:
dwt1d(col)
deinterleave(col)
但是我很挣钱。
当应用dwt时,我得到了我的变换图像,但是这些值超出了范围[0 - 255]。因此我将它们存放在短裤中。有些是负面的,有些是非常大的。现在我如何显示它们以获得如下所示的那些漂亮的图像:(http://www.whydomath.org/node/wavlets/images/Largetoplevelwt.gif)?如果我使用 imshow(image,[])在Matlab中显示我的图像,那么我的输出如下所示:http://i.imgur.com/dNaYwEE.jpg。那么,我是否必须对子频段进行一些转换?如果是,有人可以指出我的解决方案或告诉我该怎么做?
在文献中,我有时会看到子带的排序方式如下: [LL LH; HL HH],有时也像这样:[LL HL; LH HH]。后者,我看到的主要是当论文是关于JPEG2000时,也是我的算法产生的。但是在Matlab中,当使用lwt2函数时,它返回前一个布局。当我将输出与Matlab的输出进行比较时,我也看到了这一点。似乎LH和HL混在一起。怎么可能?有关系吗?是否必须使用提升而不是卷积来做某事?
如果先行先行,然后是列,反之亦然?我在切换订单时看到输出没有区别。唯一不同的是LH变为HL而HL变为LH。但是,这并不能解决我的第二个问题,因为输出是相同的。我猜它只是符号。那重要吗?我看到他们在那里做文章和他们做排队的其他人。关于JPEG2000。
非常感谢。如果有人能对我的问题有所了解,那么我将非常感激。
亲切的问候, 马库斯