【问题标题】:2D discrete cosine transform二维离散余弦变换
【发布时间】:2013-12-01 07:55:55
【问题描述】:

我在 Matlab 中检查了dct 函数,但它只在矩阵输入的列上实现了 DCT:

>> help dct 
If X is a matrix, the DCT operation is applied to each
column.

Matlab中是否有可以进行2D DCT的函数,或者有一些算法可以应用dct,进行一些变换,然后得到2D DCT?

【问题讨论】:

    标签: matlab image-processing dct


    【解决方案1】:

    根据Wikipedia,“各种 DCT 类型的多维变体直接遵循一维定义:它们只是沿每个维度的 DCT 的可分离乘积(等效地,组合)。”

    按照这个,你应该可以通过计算得到2d-DCT

    dct(dct(A.').')
    

    Image Processing Toolbox里还有dct2,实现的核心是

    b = dct(a, mpad);
    if m > 1 && n > 1, b = dct(b.', npad).'; end
    

    【讨论】:

    • 谢谢唐达。 dct(A.') 是什么意思。请?我不太明白')的语法。这里。在您的 dct2 实现中,这是否意味着您首先对每一列进行 dct,然后对每一行进行 dct?
    • 运算符为.',表示无补码的转置。矩阵A首先被转置,计算DCT,结果转回,再次计算DCT。这导致了A 的 2d-DCT。
    • 也许你被语法高亮误导了?恐怕它不适用于 Matlab。结构是dct( dct( A .' ) .' )
    • 知道了。非常感谢!
    猜你喜欢
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 2012-01-08
    • 1970-01-01
    • 2015-06-06
    相关资源
    最近更新 更多