我目前正在研究小波,对某些事情有点困惑。
首先,这不是家庭作业。它仅用于娱乐编码。
为了更好地理解,我在 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)?如果我在 Matlab 中使用imshow(image, [])显示我的图像,那么我的输出如下所示:http: //i.imgur.com/dNaYwEE.jpg。那么,我是否必须对我的子频段进行一些转换?如果是,有人可以指出我的解决方案或告诉我该怎么做吗?
在文献中,我有时会看到子频段的排序如下:[ LL LH; HL HH ] 有时像这样:[ LL HL; LHHH]。后者,我主要在论文是关于 JPEG2000 时看到的,这也是我的算法产生的。然而,在 Matlab 中,当使用 lwt2 函数时,它返回以前的布局。当我将输出与 Matlab 的输出进行比较时,我也看到了这一点。似乎LH和HL混淆了。这个怎么可能?有关系吗?它是否与使用提升而不是卷积有关?
如果一个人先行然后列或反之亦然,这真的很重要吗?切换订单时,我的输出没有任何差异。唯一不同的是,LH 变为 HL,HL 变为 LH。但是,这并不能解决我的第二个问题,因为输出是相同的。我猜它只是符号。那么这有关系吗?我看到他们做 col-row 的论文和他们做 row-col 的其他论文。两者都与 JPEG2000 有关。
非常感谢。如果有人能对我的问题有所了解,我将不胜感激。
亲切的问候,马库斯