0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你们知道DCT究竟有多重要吗

讯维官方公众号 来源:LiveVideoStack 作者:ALex、赵军 2021-08-16 17:55 次阅读

Nasir Ahmed

声影传奇

#003#

前段时间,LiveVideoStack发布了一篇文章《视频压缩简史:从1920到2020》,这篇文章获得了很高的阅读量,文章中记录了一个又一个视频压缩历史上的里程碑事件,而其中最引人注目,也最重要的发明之一就是DCT。没有DCT,后面的H.26X, JPEG等一系列压缩标准将无从谈起。

什么是DCT?

随着现代人越来越依赖计算机,需要传输的数据数量和种类也越来越多,比如我们经常分享给别人的照片和视频。如何在不丢失主要信息的情况下,缩减数据量,提升存储空间,从而提高传输效率,降低传输成本呢?

数据压缩技术登场了。数据压缩分为无损压缩和有损压缩。无损压缩是指数据在解压缩时可以100%被恢复,而有损压缩(常用于声音、图片和视频的压缩)在解压缩的过程中会舍弃一部分数据,达到相对较高的压缩比,同时图像质量也会有所下降。但显而易见,有损压缩可以大大压缩文件数据,节省磁盘空间,并提高传输效率。

而有损压缩的核心之一就是DCT。

DCT全称为Discrete Cosine Transform,即离散余弦变换。DCT变换属于傅里叶变换的一种,常用于对信号和图像(包括图片和视频)进行有损数据压缩。

DCT将图像分成由不同频率组成的小块,然后进行量化。在量化过程中,舍弃高频分量,剩下的低频分量被保存下来用于后面的图像重建。

简单介绍一下整个图像压缩过程:

将图像分解为8*8的图像块

将表示像素的RGB系统转换成YUV系统

然后从左至右,从上至下对每个图像块做DCT变换,舍弃高频分量,保留低频分量

对余下的图像块进行量化压缩,由压缩后的数据所组成的图像大大缩减了存储空间

解压缩时对每个图像块做DCT反转换(IDCT),然后重建一幅完整的图像

由于舍弃了某些频率的图像,所以最终呈现出来的图像清晰度会有差异。

可以看到,压缩后的图像比原始图像模糊一些,但图像的主要特征仍然可以识别。

本质上,离散余弦变换需要一组N个相关(相似)的数据点,变换之后,返回N个去相关(不相似)的数据点(系数),其特点是能量被压缩在仅有的M个系数中,其中M《N。

技术文献中通常这样描述DCT,说它具备去相关性和能量集中的特性,初看可能稍有点难以理解。其中,DCT将矩阵的能量压缩到第一个元素中,被称为直流(DC)系数。其余的系数被称为交流(AC)系数。

这意味着输出的二维DCT的左上角被称为DC系数。它是DCT最重要的输出,包含了很多关于原始图像的信息。其余的系数被称为交流系数(AC coefficients)。如果你使用DCT对图像进行转换,AC系数包含了图像的更多细节。同时,如果把这些DCT系数应用于反向的2D-DCT,将得到原始系数。DCT本身并不会压缩数据,它为随后的量化之类的操作,提供了一个良好的基础。

DCT是谁发明的?

第一个提出DCT的人是Nasir Ahmed。

1940年,Nasir出生于印度的班加罗尔,并在那里完成了电机工程的本科学业。随后,他来到美国求学。在新墨西哥大学,他获得了电子和计算机工程专业的硕士和博士学位。

1966~1968年,Nasir就职于霍尼韦尔公司,之后在堪萨斯州立大学开始了他的教学生涯。1984年,他成为新墨西哥大学电子和计算机工程专业的教授,并一直留在那里任教,直到2001年退休。他现在是新墨西哥大学的荣誉退休教授。

在任教期间,Nasir同时还是桑迪亚国家实验室的顾问(1976~1990),这所实验室归属于霍尼韦尔公司,专注于与大学和公司合作进行科技创新。

DCT是Nasir一生中最重要的成就。

20世纪70年代中期,Nasir在堪萨斯州立大学带领一组研究人员开发了DCT技术。

DCT是世界上应用最广泛的数据压缩转换技术,同时也是大多数数字媒体标准(图像、视频和音频)的基础。

DCT是如何被创造出来的?

在上世纪60~70年代,关于数字正交变换及其在图像数据压缩中应用的研究层出不穷。许多变换声称与其他变换相比具有更好的性能,但这些对比全部是建立在定性比较的基础上,即查看一组使用变换编码技术进行数据压缩的“标准”图像。

同一时期,在定量比较方面取得了重要进展。方差准则(variance criterion)和率失真标准(rate distortion criterion)被开发出来并广泛用于评估图像数据压缩的性能指标。此外,KLT(Karhunen-Loeve transform,K-L变换)一跃成为用作比较目的的最优变换。

正是在这样的技术背景下,Nasir才能开始着手解决DCT问题。

Nasir发现,KLT确实是基于均方误差准则和一阶马尔科夫模型的最佳变换,但是却缺少有效算法来计算它。于是,如何有效计算 KLT 的最佳近似值成为了他的研究重点。

他当时想到一种值得研究的方法——切比雪夫插值。1972年,他将这一想法写成一份提案,提交给了美国国家科学基金会(NSF),希望获得该基金会的资助。在提案中,Nasir提出使用切比雪夫多项式来研究“余弦变换”——也就是后来大名鼎鼎的DCT:

f19c9d0a-fe6f-11eb-9bcf-12bb97331649.png

但令他非常失望的是,NSF 并没有为该提案提供资金,其中一位审查者给出的原因竟然是“太简单”。

不过Nasir并没有放弃,他找到了他的博士生T. Natarajan和他的朋友K.R.Rao,1973年的整个夏天,他们都在研究这一问题。最终,他们的研究有了结果,但这个结果好得让Nasir不敢相信。正巧之后Nasir要和Harry Andrews(美国数学家)一起出席新奥尔良的一个数学会议,所以Nasir决定在会上向他请教。

Harry Andrews建议Nasir使用率失真标准来检查这个“余弦变换”的性能,并发给他一个计算机程序帮助他计算结果。

最终,结果再次表明,DCT变换比其他所有变换都表现得更好,在性能上也与KLT十分接近。随后Harry Andrews建议Nasir发表这一成果。Nasir听从了他的建议,将论文以信件的形式发给了IEEE Computer Transactions(IEEE的通讯期刊),并在1974年1月获得发表。

据Nasir后来回忆,当初谁也没有想到DCT会在未来造成如此大的轰动。

DCT的重要性和其被发现的时间远不匹配,以至于Gilbert Strang在一篇1999年的论文中写道:“离散问题是如此之寻常,而且几乎是一个不可避免的问题,而让人异常惊讶的一个事实在于,业界直到1974年才由Nasir Ahmed等人发现了DCT。”最近也有一些研究证据表明,虽然DCT由 Ahmed 等人开发是一个无可置疑的事实,但冯诺依曼(John von Neumann)在1941年左右也对DCT做了一些开创性的研究,不过冯诺依曼自身可能并未意识到其重要性。

DCT的实现简介

DCT有8种形态,我们通常所说的DCT,其实指的是DCT-II,其对应的反变换是DCT-III。DCT-II、DCT-III的原始定义非常简单:

f1b7c9c2-fe6f-11eb-9bcf-12bb97331649.png

其中:X:X 是DCT输出.x:x 是DCT输入.k:k 是计算结果的输出数据索引, 从 0 to N−1N:N 变换元素的数目.s:s是缩放函数, 除去s(0)=0.5,其他s(y)=1

原始的N点的DCT-II变换算法最朴素的实现大概可以这样:

void dct_ii(int N, const double x[], double X[]) { for (int k = 0; k 《 N; ++k) { double sum = 0.; double s = (k == 0) ? sqrt(0.5) : 1.; for (int n = 0; n 《 N; ++n) { sum += s * x[n] * cos(PI * (n + 0.5) * k / N); } X[k] = sum * sqrt(2.0 / N); }}

随后,DCT的一些快速算法陆续被开发出来,其中最引入注目的大概是LLM DCT(LLM 来自于三位对应算法的作者:Loeffler、Ligtenberg和 Moschytz,其论文“Practical Fast 1-D DCT Algorithms with 11 Multiplications”)和AAN DCT(AAN 的名字也来自于三位算法作者: Arai、Agui 和 Nakajima,其对应的论文是“A fast DCT-SQ scheme for images”)。

LLM DCT的算法流程如下:

f1db842a-fe6f-11eb-9bcf-12bb97331649.png

它引入了非常经典的蝶形:

f1f1de64-fe6f-11eb-9bcf-12bb97331649.png

需要注意的是,LLM DCT的算法论文中,蝶形图的标识说明里面还有一个明显的错误在上面,其描述中,O1 均出现两次,明显第一个应该是O0。

AAN DCT的计算流程如下,该算法使用了五个乘法(加上八个用于缩放的后乘法,文章中认为这不算,因为它们可以被移到后面的量化矩阵中被平摊掉)。

以H.264标准为例,它实际上是把DCT 变换和后续的量化放在了一起,以减轻DCT变换计算的复杂度,所以有时候看H.264的DCT变换系数,你甚至第一眼很难想象它其实是个DCT的变换;从H.264的时代开始,DCT的变换开始使用整数变换,避免类似MPEG2年代因不同DCT、IDCT实现精度带来的编码、解码不完全匹配的问题。

DCT的应用

DCT的去相关和能量压缩特性使其在图像和视频压缩中极具吸引力。Karhunen-Loève变换(KLT)通常被称为理想变换,具有更好的去重特性,但在计算上是难以解决的。另一方面,DCT很容易编程,这使得它迅速占领了图像和视频压缩领域。现在常见的图片、视频压缩,如JPEG、H.26X、MPEG等,都用到了DCT。

图像

Nasir近况

今年二月份,在热播美剧《我们的生活》(This is Us)第5季第8集中,穿插了一段“艾哈迈德夫妇的故事”。这段故事取材于现实,讲述的正是Nasir和他的太太Esther之间发生的事。两人是新墨西哥大学的校友,在一次大学国际学生聚会中偶然结识并相恋,然后步入了婚姻殿堂,并且一直相知相守到今天。2018年,Nasir和Esther还出版了一本讲述他们生活故事的限量版图书——Parallel Lives In Curved Space。去年,两人庆祝了他们的结婚56周年纪念日。

《我们的生活》剧组工作人员正在和Nasir、Esther视频对话

为什么要在《我们的生活》剧集中穿插这样一段故事?

原来导演是想通过这个故事向DCT技术的发明者Nasir Ahmed致敬。如果没有Nasir,剧中的皮尔森一家不可能在新冠疫情期间通过视频会话保持联系,慰藉彼此。

现实中的我们也是一样。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像
    +关注

    关注

    2

    文章

    1083

    浏览量

    40449
  • 编码
    +关注

    关注

    6

    文章

    940

    浏览量

    54814
  • DCT
    DCT
    +关注

    关注

    1

    文章

    56

    浏览量

    19869
  • mpeg2
    +关注

    关注

    0

    文章

    7

    浏览量

    8468

原文标题:DCT如此重要,作者当初竟然不知道?

文章出处:【微信号:xunwei201508,微信公众号:讯维官方公众号】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    dct变换的主要优点有哪些

    中的少数几个系数中,从而实现高效的压缩。以下是DCT变换的一些主要优点: 能量压缩 :DCT的一个显著优点是它能够将图像的能量集中在变换后的低频系数中。这意味着图像中最重要的信息(通常是图像的主要特征)被保留在少数几个系数中,
    的头像 发表于 09-30 16:30 467次阅读

    请问lmh6554/6552只画双层板能满足需要吗

    layout example好像给的是六层板的示例。。新手还不会画那么复杂的,想问两层板设计能满足一般需要吗 器件layout参考datasheet里的来,应该不会出什么问题吧?
    发表于 08-27 08:10

    请问STM32F407 USB的FIFO究竟有多少空间?

    FIFO 连接。但是另一方面,在CSR存储器映射图中,一个主机通道的 FIFO地址范围为 0x1000 (4KB),并且主机模式下有8个这样的通道。所以真搞不明白究竟 FIFO真正有多少空间?
    发表于 07-04 07:46

    请问ESP32-U4WDH的ESP32-MINI-1模组85℃版和105℃的区别是什么?

    如题:ESP32-U4WDH的ESP32-MINI-1模组85℃版和105℃的区别 这两个模组,85℃和105℃究竟有哪些区别?包括工艺、功能、价格的区别?
    发表于 07-02 06:37

    在项目“backup_fw” 中手动设定application img地址有必要吗

    在项目“backup_fw” 中手动设定applicationimg 地址有必要吗,还是不需要勾选,若勾选了,这个地址的值是根据什么设定的,谢谢!
    发表于 06-03 06:44

    逆变电源是交流是直流重要吗,深循环电池

    与任何设备一样,了解其工作原理才能安全使用它非常重要。电源逆变器上有输入和输出端口,用于正确连接和连接电器。如果出现错误,您的逆变器将无法工作,甚至会造成安全隐患。您想知道逆变器是交流还是直流
    的头像 发表于 05-29 09:15 670次阅读
    逆变电源是交流是直流<b class='flag-5'>重要吗</b>,深循环电池

    PCBA焊前预热与焊后热处理到底有多重要

    过程中,预热是一个异常重要的步骤,特别是在自动化生产和大量生产中更为必要。那么,PCBA焊接前的预热究竟有多重要呢? PCBA波峰焊接之前进行预热的目的 首先,预热可以有效防止PCBA板的失真和变形。在整个PCB板制作过程中,种
    的头像 发表于 05-24 09:40 512次阅读

    STM32的DAC输出有个BUFFER功能,BUFFer的驱动能力究竟有多大,普通的运放输出可以吗?驱动LED可以吗?

    DAC是输出模拟电压给外界参考,STM32的DAC输出有个BUFFER功能,但不知这个BUFFer的驱动能力究竟有多大,普通的运放输出可以吗?驱动LED可以吗?有没有人做过这块,给个建议,因为最近要设计个DAC输出调节运放输出,希望能有个参考。 如果外接跟随的话,用LM358可以吗?请一起讨论下!!!
    发表于 05-15 07:42

    共模电感选型依据究竟有哪些

    电子发烧友网站提供《共模电感选型依据究竟有哪些.docx》资料免费下载
    发表于 05-06 10:26 1次下载

    SMT贴片加工中元器件移位的原因究竟有哪些?

    ,元器件移位的问题仍然时有发生。那么,造成SMT贴片加工中元器件移位的原因究竟有哪些呢?接下来深圳佳金源锡膏厂家来讲一下:首先,贴片机吸嘴的气压是影响元器件位置的重要
    的头像 发表于 04-26 16:00 562次阅读
    SMT贴片加工中元器件移位的原因<b class='flag-5'>究竟有</b>哪些?

    贴片功率电感究竟有没有正负极之分

    电子发烧友网站提供《贴片功率电感究竟有没有正负极之分.docx》资料免费下载
    发表于 02-28 10:15 0次下载

    pcb应变测试有多重要?一文了解!

    pcb应变测试有多重要?一文了解!
    的头像 发表于 02-24 16:26 1078次阅读

    什么是DMA?DMA究竟有多快!

    助于提高数据传输速度和系统效率。 那么,DMA究竟有多快呢? 实践出真知 恰好,最近有个多通道数据采集的项目,受限于通道数多、分辨率高,而系统带宽有限,为了尽可能充分利用有限带宽,就得想办法优化时序,把时间都留给数据采集和传输。 优化方向就是DMA。 硬件链路是A
    的头像 发表于 02-22 10:43 2007次阅读
    什么是DMA?DMA<b class='flag-5'>究竟有</b>多快!

    dct变速箱和at变速箱哪个更好?

    dct变速箱和at变速箱各有优势,无法直接给出准确的回答说哪个更好,可以根据个人驾驶需求和偏好以及预算考虑。在决定DCT(双离合变速箱)和AT(自动变速箱)之间哪个更好之前,我们需要理解这两种变速箱
    的头像 发表于 01-17 09:45 1440次阅读

    坐标系在动态SLAM中究竟有多重要

    大多同时定位于建图(SLAM)系统在传统上假定的都是静态世界,这与现实世界的场景不符。
    的头像 发表于 01-05 13:46 881次阅读
    坐标系在动态SLAM中<b class='flag-5'>究竟有</b><b class='flag-5'>多重要</b>?