世界上最好用的壓縮軟件是什麼?微信。這個段子想必很多人都聽過。一張幾兆的圖片,經微信一發,立馬降到幾百kb。雖說這是個吐槽,但u1s1,圖片視頻壓縮其實是一項非常必要的技術。比如視頻通話、傳輸大量圖片時,如果不壓縮的話,要麼圖像完全無法傳送,要麼就是幹等。
△ 如果是有損壓縮畫質會下降(右圖天空有波紋)
所以在數字時代這幾十年裡,萌生出很多相關的技術,比如 JPEG、H.26X。
不過你或許不知道,這些技術往上追溯,可以從 47 年前說起。
有三位名不見經傳的印度工程師“一意孤行”,在沒申請到研究經費的情況下,利用暑假時間鼓搗出來一項技術,後來直接成為圖像視頻壓縮的行業標準。
它就是 DCT。
全稱為 Discrete Cosine Transform,即離散餘弦變換。
而有趣的是,DCT 誕生之初時,就連作者本人都沒有想到,它後來會有如此巨大的影響力。
沒有 DCT,就沒有 JPEG / MPEG
直接說 DCT 可能很多人不知道是什麼,但 JPEG 大傢肯定都聽過。
它除是一種常見的圖片文件後綴名,其實也是一種有損壓縮標準,可以把一張圖片從左邊這樣變成右邊這樣:
ps.有損和無損的區別:無損壓縮可以再 100% 還原圖像;有損不可以,但有損壓縮後的圖像大小會大大減少。
DCT 就是實現這個過程的一種基礎技術。
它是傅立葉變換的一種,可以將圖像從空域轉換到頻域,也就是把圖像從像素矩陣變成用帶有頻率等信息的函數來表示。
具體變換過程,我們以一張圖像中一個 3x3 的像素塊為例:
△ 圖源博客園博主 @沉默的背影 X-Pacific
對這個像素塊做 DTC 變換,就相當於把除第一個像素以外,其餘像素的部分信息都抽取到第一個格中。
這樣,第一個格的像素值表示的就是一張圖的總體樣貌,稱為低頻信息;其餘格表示的就是圖像中人物或物體的細節,稱為高頻信息。
經 DCT 轉換後,每個 3x3 的像素塊都會產生 1 個 DC(直流)系數(位於第一個格)及 8 個 AC(交流)系數(剩餘格),前者是 DCT 最重要的輸出。
由於大部分的圖像能量會集中在低頻部分,因此轉換之後輸出的 DC 系數值比較大,而輸出的 AC 系值比較小。
利用“人眼對低頻分量的圖像比對高頻分量的圖像更敏感”這一原理,再通過量化保存下來低頻分量,舍棄高頻分量(將大部分 AC 系數值變為 0)、丟掉那些對視覺效果影響不大的信息,從而達到壓縮目的。
從下面這兩張圖像的三維投影,我們可以看到 DCT 變換帶來的改變:
(上:原圖;下:經過 DCT 變換後)
在實際的 JPEG 壓縮標準中,都是將一張圖像分成若幹個 8x8 的像素塊(不夠的用空白補齊)。
將色彩空間從 RGB 轉為 YUV 之後,從左至右、從上至下對每個塊進行 DCT 變換。
然後對每個塊變換得來的系數進行量化,在這個過程中,一些重要的分量就被去除,且無法恢復。
因此,這是一種不可逆的有損壓縮技術。
接著對量化後得到的 AC 系數和 DC 系數再分別進行編碼,經過哈夫曼編碼後得到下面這樣的一大串數字。
解壓縮時對每個圖像塊做 DCT 反轉換(IDCT),就可以重建完整圖像。
具體計算過程如下:
首先將圖片中每個像素的原始灰度和亮度值用 8bit 表示,也就是 (0,255) 這個范圍。
由於大多數值都會分佈在 128 左右,所以會將這些值都減去 128,這樣會有更多值為 0,有利於壓縮,這時候范圍變成 (-128,127)。
然後再用 DCT 變換公式進行變換,二維的用這個:
變換完後進行根據量化表進行量化,將大部分系數變為 0,完成壓縮。
ps.量化表是根據人眼對量化誤差的視覺閾值來確定的,有固定的一張表。
後面就是前面說的一系列編碼過程。
1974 年 1 月,這項技術首次被發表在 IEEE Transactions on Computers 上面。
自此,圖像和視頻壓縮領域的行業標準就誕生。
1998 年世界首個視頻壓縮標準 H.261、1992 年的 JPEG 和 MPEG、2010 年的 WebP、2013 年的 HEIF、2018 年谷歌亞馬遜等公司聯合創建的 AV1…… 等壓縮標準都是基於這項技術,且一直沿用至今。
40 多年都名不見經傳的發明者
DCT 的作者有 3 位,分別是 Nasir Ahmed(納西爾・艾哈邁德)、K.R. Rao(K.R.拉奧)和 T. Natarajan(T.納塔拉詹)。
納西爾是新墨西哥大學電氣與計算機工程系名譽教授。
他 1940 年出生於印度班加羅爾,1966 年在新墨西哥大學獲得博士學位。
1966-1968 年,他在霍尼韋爾公司擔任首席工程師,1968-1983 年在堪薩斯州立大學擔任教授。
1983-2001 年,他回到新墨西哥大學擔任電氣與計算機工程系首席教授。在此期間,他先後擔任過系主任、研究生院院長等職位。
今年,納西爾已經有 82 歲高齡。
另一位主要作者是 K.R.拉奧。
他同樣是一位美籍印度裔學者。
1960 年,他在佛羅裡達大學獲得核工程專業博士學位。1966 年,又在新墨西哥大學獲得電氣與計算機工程專業博士學位。
之後 50 年,他一直在得克薩斯州阿靈頓分校工作,擔任電氣工程系教授。
與此同時,他還是 IEEE Fellow。
2021 年 1 月 15 日,拉奧教授揮別人世,享年 89 歲。
T.納塔拉詹當時是納西爾帶的博士生,如今在互聯網上已經檢索不到太多他的相關信息。
可以說相比於大名鼎鼎的 DCT,幾位發明者稱得上是“名不見經傳”。
實際上,40 多年來,DCT 發明的幕後故事一直鮮有人關註。
甚至連納西爾的兒子都表示,“從來沒想過父親帶來的影響有如此之大”。
而將納西爾從幕後推至臺前的,還多虧一部美劇中的一波致敬。
2020 年,《我們的生活》中有一段劇情是納西爾以視頻通話的方式,講述自己和妻子相愛的故事。
片方表示,設計這一橋段的初衷,就是希望更多人意識到,當下我們能夠通過互聯網快速發送圖片視頻,都與納西爾的工作離不開關系。
劇情播出後,不少媒體將 DCT 定義為“改變世界的算法”,也稱納西爾這位名不見經傳的工程師,終於從幕後推到臺前。
不過,納西爾在自己的回憶視頻裡表示,當初真的沒想到 DCT 會帶來如此大的影響。
我也無法預測技術發展的速度,對於 FaceTime 這些應用的出現,我感到非常驚訝。
△ 納西爾年輕時(圖左)
要知道,DCT 最初可能差一點就被扼殺在搖籃裡。
1972 年,當時已經對 DCT 初有構思的納西爾向美國國傢科學基金會(NSF)遞交一份申請,希望 NSF 能為他研究 DCT 提供資金支持。
不過令納西爾驚訝的是,這個申請直接被斃掉,評審人給出的意見是“它太簡單”。
但好在納西爾並沒有放棄,他始終覺得這個 idea 很有新意。
唯一令他有所顧慮的是,他可能是隻能利用假期來完成 DCT 的相關工作,而且這期間可能沒有任何收入。
所以,納西爾回傢和妻子說:
我有直覺,這事兒值得做下去。隻不過我們需要計劃好如何度過一個沒有薪水的暑假。
妻子沒有任何猶豫就支持他。
於是,在 1973 年的夏天,DCT 的研究工作正式開始。
參與到這項研究的,還有納西爾的好友拉奧和博士生納塔拉詹。
拉奧也是支持納西爾研究 DCT 的重要人物之一。
在納西爾的申請被斃掉後,他第一時間把自己的想法告訴好友拉奧。
拉奧給出這樣的回復:
你要立即把這些結果以短文的形式發表。
這就是“How I Came Up with the Discrete Cosine Transform”誕生的始末。
後來,這篇文章幾乎稱得上是圖片視頻壓縮領域的必讀之文。
之後的故事,也就是我們所熟知的。
1974 年,《Discrete Cosine Transform》在 IEEE Transactions on Computers 上發表。
截至目前,這篇文章的被引次數已經達到 5878 次。
納西爾曾在采訪中表示,自己人生中最大的禮物,就是人們對 DCT 的認可。
參考鏈接:
[1]https://spectrum.ieee.org/krrao-tribute
https://www.islamicity.org/80703/nasir-ahmeds-algorithm-that-transformed-the-world/
[2]https://cloud.tencent.com/developer/article/1862531
[3]https://mp.weixin.qq.com/s?__biz=MzU1NTEzOTM5Mw==&mid=2247512538&idx=1&sn=57f46386002cf5554681f8ef9f61a3e0&chksm=fbda19f4ccad90e219bf224db522e9999086dff886bae09562e1aeba4450d4ba0247a73c3138&scene=21#wechat_redirect
[4]https://blog.csdn.net/freee12/article/details/109953732
[5]https://blog.csdn.net/weixin_52779958/article/details/124413405
[6]https://www.youtube.com/watch?v=I9VXaVVs7W