Matrix 关于将DCT应用于矩阵的有趣观察
我有一张512x512大小的灰度图像。我想把矩阵变换成dct,下面就是我所做的 场景1:对整个图像应用DCTMatrix 关于将DCT应用于矩阵的有趣观察,matrix,dct,Matrix,Dct,我有一张512x512大小的灰度图像。我想把矩阵变换成dct,下面就是我所做的 场景1:对整个图像应用DCT img=imread('cameran.tif') img\u dct=dct2(img) 场景2:对原始图像的第一个8x8块应用DCT img2=imread('cameran.tif) img_block=img2(1:8,1:8) img\u块\u dct=dct2(img\u块) 现在,有趣的事情来了(或者我做错了什么) 当我显示img\u dct(1:8,1:8)和img\u
img=imread('cameran.tif')代码>
img\u dct=dct2(img)代码>
场景2:对原始图像的第一个8x8块应用DCT
img2=imread('cameran.tif)代码>
img_block=img2(1:8,1:8)代码>
img\u块\u dct=dct2(img\u块)代码>
现在,有趣的事情来了(或者我做错了什么)
当我显示img\u dct(1:8,1:8)
和img\u block\u dct
时,我得到两个非常不同的8x8矩阵。这两个不应该完全相同吗?或者我弄错了吗?它不会是相同的。通过DCT2
方程,DCT
系数取决于图像的大小。如果按块执行M=8
N=8
,则为图像大小 不,它们不应该是一样的。“你算出了两件完全不同的事情。”我不明白。我所做的就是将dct应用于整个图像,同时仅从原始图像中获取一个8x8块,并将dct应用于该块。在第一种情况下,输出值取决于整个图像,在第二种情况下,输出值仅取决于8x8区域。@OliCharlesworth,oh k,这意味着如果我需要图像中包含DCT系数的任何8x8块,我将首先需要将整个图像转换为DCT,然后提取一个8x8块?这取决于你的目标。大多数压缩算法将原始图像分成块,然后分别计算每个块的DCT。