gpt4 book ai didi

opencv - 如何在opencv中使用离散余弦变换(DCT)

转载 作者:行者123 更新时间:2023-12-02 17:05:21 25 4
gpt4 key购买 nike

dct在opencv中转换不正确。

imf = np.float32(块)
dct = cv2.dct(imf)

           [[154,123,123,123,123,123,123,136],
[192,180,136,154,154,154,136,110],
[254,198,154,154,180,154,123,123],
[239,180,136,180,180,166,123,123],
[180,154,136,167,166,149,136,136],
[128,136,123,136,154,180,198,154],
[123,105,110,149,136,136,180,166],
[110,136,123,123,123,136,154,136]]

用上面显示的代码转换时,此图像块

[162.3,40.6,20.0 ...
[30.5,108.4 ...

这应该是结果,

[1186.3、40.6、20.0 ...
[30.5,108.4 ....

但是我找到了这个结果。用于样本块 https://www.math.cuhk.edu.hk/~lmlui/dct.pdf

最佳答案

DCT工作正常。得到的结果和期望的结果之间的差异是因为给出的特定示例实际上是在M上而不是在原始图像I上进行DFT。在这种情况下,如论文所示,M = I-128。您的示例是您不减去该部分,因此值都更大。在余弦或傅立叶变换中,第一个系数(有时称为“DC偏移”)具有较高的值,因为您的图像值更大。但这就是为什么所有其他系数都相同的原因。如果您拍摄一张图像,然后简单地从整个图像中平均添加一些图像或从中减去一些图像,则除了第一个图像外,变换的系数将相同。

根据DCT的标准定义:

DCT definition

您可以看到,对于k = 0的第一个系数,在余弦函数中,您仅得到0,而cos(0)=1。因此,如该图所示,X_0只是所有x_n的和。值(value)观。通常,该值可以用与N相关的标度来缩放,以使其类似于平均值。这样做时,它与X_0项有关,即“DC偏移”,您将看到它被描述为“信号的平均值”,换句话说,就是信号与0的距离。这非常有用作为余弦/傅立叶变换系数之一,因为它可以完全描述一个信号;所有其他系数都描述了频率内容,因此它们没有说明值与0的距离,但是第一个系数DC偏移量确实会告诉您偏移!

关于opencv - 如何在opencv中使用离散余弦变换(DCT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55787685/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com