在不进行下采样的情况下计算细节系数

时间:2019-04-06 23:04:15

标签: python numpy image-processing signal-processing wavelet

小波变换使我们能够计算信号或图像的细节系数。它还在每个分解级别下对图像进行下采样。<​​/ p>

我想计算细节系数而不进行下采样。我想使用低通滤波器G来提取细节系数,就像正交镜滤波器描述的减去负采样一样。但是,我只有1D滤镜:[-1/sqrt(2), 1/sqrt(2)]

据我了解,我可以先将G应用于图像的行,然后再应用于列。如何在Numpy中执行此乘法?我的图片大小为768x768

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,那么我们可以利用广播来做到这一点,但是在此之前,我们必须平铺初始过滤器以匹配图像的尺寸之一。幸运的是,这里的图像是正方形图像。因此,很多事情变得更容易了:

In [70]: filter_ = np.array([-1/np.sqrt(2), 1/np.sqrt(2)])

In [71]: filter_
Out[71]: array([-0.70710678,  0.70710678])

# tile the initial array to match the dimensions of image
In [72]: filter_1d = np.tile(filter_, 768//2)

In [73]: filter_1d.shape
Out[73]: (768,)

In [74]: img = np.random.random_sample((768, 768))

# apply the filter on the image
In [76]: filtered = np.multiply(img, filter_1d)

In [77]: filtered.shape
Out[77]: (768, 768)