【问题标题】:Interesting observation about applying DCT to a matrix关于将 DCT 应用于矩阵的有趣观察
【发布时间】:2014-07-30 08:12:28
【问题描述】:

我有一个 512x512 大小的灰度图像。我想将矩阵转换为 dct 所以这就是我所做的。

场景 1:对整个图像应用 DCT

img = imread('cameraman.tif');

img_dct = dct2(img);

场景 2:将 DCT 应用于原始图像的第一个 8x8 块

img2 = imread('cameraman.tif);

img_block = img2(1:8, 1:8);

img_block_dct = dct2(img_block);

现在,有趣的一点来了(或者我做错了什么) 当我显示 img_dct(1:8, 1:8)img_block_dct 时,我得到两个非常不同的 8x8 矩阵。这两个不应该完全一样还是我弄错了?

【问题讨论】:

  • 不,它们不应该相同。你计算了两个完全不同的东西。
  • @OliCharlesworth,我不明白。我所做的只是将 dct 应用于整个图像,同时仅从原始图像中获取 8x8 块并将 dct 应用于该块。
  • 没错。第一个,输出值取决于整个图像,第二个它们仅取决于 8x8 区域。
  • @OliCharlesworth,哦,这意味着如果我需要图像中包含 DCT 系数的任何 8x8 块,我首先需要将整个图像转换为 DCT,然后提取一个 8x8 块?
  • 这取决于你的目标是什么。大多数压缩算法的工作原理是将原始图像分成块,然后分别计算每个块的 DCT。

标签: matrix dct


【解决方案1】:

不会一样的。通过DCT2 方程,DCT 系数取决于图像的大小。如果你确实阻止M=8N=8,否则它将是图像的大小。

【讨论】:

    猜你喜欢
    • 2021-06-20
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多