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

    文章

    1064

    浏览量

    40042
  • 编码
    +关注

    关注

    6

    文章

    835

    浏览量

    54458
  • DCT
    DCT
    +关注

    关注

    1

    文章

    55

    浏览量

    19738
  • mpeg2
    +关注

    关注

    0

    文章

    7

    浏览量

    8416

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

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

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

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

    普通硅二极管与肖特基二极管,究竟有何异同?

    普通硅二极管与肖特基二极管,究竟有何异同?
    的头像 发表于 12-07 09:33 306次阅读
    普通硅二极管与肖特基二极管,<b class='flag-5'>究竟有</b>何异同?

    电池检验究竟有多重要

    现代社会越来越依赖电子设备,从个人手机到动力汽车,很多的产品设备遍布我们的日常生活,而这些设备又必须依赖电池来运行。所以电池的安全性能显得尤为重要,电池安全的检测也是必不可少的。尤其对于动力汽车而言,电池不仅仅关乎着消费者们的安全,同时也是企业是否能够进入高端行业的关键。
    的头像 发表于 12-04 11:58 253次阅读

    知道磁环式电感器封装规格究竟有多重要吗

    知道磁环式电感器封装规格究竟有多重要吗 编辑:谷景电子 磁环式电感器是一种特别重要的电子元器件,它在很多电子产品都有着不可替代的功能与作用。关于磁环式电感器的选型问题我们已经有过很多
    的头像 发表于 10-23 18:04 259次阅读

    PCBA打样加工究竟有哪些生产工序呢

    想要减短交期,频繁向业务员催货。其实PCBA打样加工的每一道加工都是需要时间的,PCBA打样很多工序都是急不来的。那么PCBA打样加工究竟有哪些生产工序呢?接下来深圳PCBA加工厂家为大家介绍下。 PCBA打样加工常见生产工序 1. 返修: 返修的作用是对检测出现故障的
    的头像 发表于 09-28 09:31 418次阅读

    评估RTOS的几个重要指标

    RTOS的实时性能对您来说重要吗?根据Aspencore最近的嵌入式调查(2023年5月),49%的受访者表示,实时性能是对商业RTOS的最重要要求。
    的头像 发表于 09-12 11:06 685次阅读
    评估RTOS的几个<b class='flag-5'>重要</b>指标

    EMI、EMS、EMC究竟有什么异同

    似的EMI、EMS等专业名词也常常出现在大家面前,它们似乎都与防辐射(电磁辐射)有关,让人不明就里。那么,它们究竟有什么异同呢?
    的头像 发表于 09-04 15:21 439次阅读

    薄膜厚度测量仪究竟能测多薄的膜?

    拥有超高精度的优可测薄膜厚度测量仪究竟能测多薄的膜?哪些行业哪些材料需要它的帮助?优可测在薄膜厚度测量的造诣究竟有多高?
    的头像 发表于 08-16 18:35 957次阅读
    薄膜厚度测量仪<b class='flag-5'>究竟</b>能测多薄的膜?

    探秘!首届 HarmonyOS 极客马拉松究竟有多酷?

    资讯 欢迎关注公众号 HarmonyOS开发者 原文标题:探秘!首届 HarmonyOS 极客马拉松究竟有多酷? 文章出处:【微信公众号:HarmonyOS开发者】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 08-04 19:15 362次阅读

    ICD与ICE之间究竟有什么区别和联系?

    Lauterbach公司的Trace32-ICD和 Trace32-ICE。 那么二者之间究竟有什么区别和联系呢?回答这个问题这要从嵌入式系统调试手段的演化说起。
    发表于 06-19 06:06

    小小的保险丝,究竟有哪些重要的作用呢

    保险丝(Fuse)是一种电气元件,它起着非常重要的作用。今天弗瑞鑫小编将通过详细阐述保险丝的作用,让读者了解这个小小的元件的重要性以及其在电子设备中的好处。
    的头像 发表于 05-05 08:36 1191次阅读