使用Daubechies滤波器进行子带分解

时间:2011-03-14 08:58:47

标签: image-processing wavelet

我有以下两个8抽头过滤器:

h0 ['-0.010597', '0.032883', '0.030841', '-0.187035', '-0.027984', '0.630881', '0.714847', '0.230378']
h1 ['-0.230378', '0.714847', '-0.630881', '-0.027984', '0.187035', '0.030841', '-0.032883', '-0.010597']

这里是图表:

graph

我用它来获取近似值(图像的下部子带)。这是a(m,n),如下图所示:

diagram

我从书Digital Image Processing, 3rd Edition得到了系数和图表,所以我相信它们是正确的。 符号表示一维卷积(在行上或列上)。向下箭头表示一维的下采样(在行或列上)。

我的问题是h0h1的滤波器系数总和大于1(确切地说大约为1.4或sqrt(2))。当然,如果我使用滤镜对任何图像进行卷积,图像将变得更亮。的确,这就是我得到的结果(预期结果在右边):

actual expected

有人可以提出问题在这里吗?如果卷积滤波器系数总和大于1,为什么要工作

我有源代码,但它很长,所以我希望避免在这里发布。如果这是绝对必要的,我会稍后提出来。

修改

我正在做的是:

  1. 分解为子带
  2. 过滤其中一个子带
  3. 子带重组为原始图像
  4. 请注意,关键点不仅仅是要有一个可显示的子带分解图像 - 我必须能够从子带中完美地重建原始图像。因此,如果我缩放滤波后的图像以补偿我的分解滤镜,使图像更亮,那么我就必须这样做:

    1. 分解为子带
    2. 将强度缩放应用于近似子带
    3. 过滤其中一个子带
    4. 将反向强度缩放应用于近似子带
    5. 将子带重构为原始图像
    6. 步骤2执行缩放。这就是@Benjamin的建议。问题是,步骤4变得必要,否则原始图像将无法正确重建。这种较长的方法有效。但是,教科书明确指出在近似子带上没有缩放。当然,教科书可能是错的。然而,更有可能的是我误解了这一切的运作方式 - 这就是我问这个问题的原因。

      编辑(2010/7/8)

      我写信给这位书的作者作了确认。他说你必须执行缩放,尽管书中有说法。

1 个答案:

答案 0 :(得分:1)

如果您知道内核的总和,为什么不通过除以正确的因子来校正卷积后的亮度?

(例如,您可以使用内核[1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9, 1/9]获得3x3的平均值,但也可以使用[2, 2, 2, 2, 2, 2, 2, 2, 2]获得18的结果值...)

编辑:正如我的评论中所述,h1总和为0.看来h0和h1彼此反转/反转,因此某些h0系数可能有错误的符号。

EDIT2:请阅读评论。我知道这篇文章没有回答这个问题,我将其留在这里征求意见。