Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix 关于将DCT应用于矩阵的有趣观察_Matrix_Dct - Fatal编程技术网

Matrix 关于将DCT应用于矩阵的有趣观察

Matrix 关于将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

我有一张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 block\u dct
时,我得到两个非常不同的8x8矩阵。这两个不应该完全相同吗?或者我弄错了吗?

它不会是相同的。通过
DCT2
方程,
DCT
系数取决于图像的大小。如果按块执行
M=8
N=8
,则为图像大小

不,它们不应该是一样的。“你算出了两件完全不同的事情。”我不明白。我所做的就是将dct应用于整个图像,同时仅从原始图像中获取一个8x8块,并将dct应用于该块。在第一种情况下,输出值取决于整个图像,在第二种情况下,输出值仅取决于8x8区域。@OliCharlesworth,oh k,这意味着如果我需要图像中包含DCT系数的任何8x8块,我将首先需要将整个图像转换为DCT,然后提取一个8x8块?这取决于你的目标。大多数压缩算法将原始图像分成块,然后分别计算每个块的DCT。