我在Matlab中使用dct
函数进行了检查,但它只在列中实现了DCT以进行矩阵输入:
>> help dct
If X is a matrix, the DCT operation is applied to each
column.
是否有可以在Matlab中执行2D DCT的功能,或者是否有一些算法可以应用dct
,进行一些变换,然后获得2D DCT?
答案 0 :(得分:3)
根据Wikipedia,“各种DCT类型的多维变体直接遵循一维定义:它们只是沿着每个维度的DCT的可分离产品(等效地,组合)。”
在此之后,您应该能够通过计算获得2d-DCT
dct(dct(A.').')
图像处理工具箱中还有dct2
,实现的核心是
b = dct(a, mpad);
if m > 1 && n > 1, b = dct(b.', npad).'; end