數位影像的瘦身祕密

數位影像的瘦身祕密在數位多媒體的時代中,數位相機、數位攝影機、照相手機、3G 影像電話、數位電視等電子產品,快速且廣泛地融入我們的生活中。就拿熱門的照相手機來說,根據市場調查機構 IC Insights 的報告,2005 年全球照相手機的出貨量估計有 3.65 億支,到了 2009 年,預期年出貨量可能達到 9.1 億支。實在很難想像,世界上數位相片與影片的數量,每分每秒正以怎樣的速度在成長。

影像壓縮的必要性

這些漂亮、精采的影像與視訊,檔案可是大的不得了。以七百多萬畫素的數位相機所拍下的一張 3072 × 2304 的照片來說,每個畫素由紅、綠、藍 3 個顏色組成,每個顏色各以 8 個位元的 0 與 1 來記錄 0 到 255 這 256 個可能的數值。因此這張照片的原始大小就有二千多萬個位元組,也就是一億多個位元(1個位元組等於 8 個位元)。

打個比方,如果以黑色的彈珠代表 0,白色的彈珠代表 1,每個畫素的紅綠藍 3 個顏色共由 24 個彈珠組成。一個畫素就是相片中的一個方格,水平方向 3,072 列,垂直方向 2,304 行的方格構成這張相片,每個方格內有 24 個彈珠,總彈珠數一億多個構成了這張「胖」影像。要把它儲存下來,就得讓每個彈珠都有一個房子住。

影片則是由一張張的影像連續播放所構成的,因此也稱為動態影像。規格通常是每秒 30 張畫面,每分鐘就有 1,800 張的驚人數目。如果是數小時的錄影,加上大畫面視訊的發展趨勢,檔案實在是難以承受的大。

面對資料量如此龐大的數位相片和影片,唯有透過有計畫的「瘦身」,才能讓眾多的影像與視訊同時擠身於隨身碟、硬碟、光碟等空間有限的住宅內。同時,這些0與1的資料才可以透過網路等傳輸方式,快速輕盈地搬家或出遊。

壓縮的原理:抽脂去贅

那麼,瘦下來的祕方是什麼?

我們透過去除脂肪,結實肌肉來達到瘦身的目的,數位影像與視訊資料中也有所謂的「脂肪」嗎?是的,能夠把資料壓縮,靠的就是找出這些 0 與 1 所構成的資料中,資訊有重複與多餘的地方,加以去除,以達到檔案的縮減。

「長話短說」、「言簡意賅」就是類似的資料壓縮概念。我們想溝通傳遞的是「資訊」,語言、文字和電子檔案則是帶有這些資訊的「資料」,壓縮的目標就是找到一個簡潔的資料表示法,把贅字去除,而仍然能夠維持原先的資訊。影像與視訊資料在空間、時間、資料統計特性與視覺上,有大量的累贅資料,壓縮就是從這些地方著手。

在空間上,密密麻麻的畫素構成一張圖,鄰近畫素的數值彼此通常非常接近。例如,相片中藍天綠地部分的畫素群,數值近似,在空間上具有相當大的關聯性與可預測性,把每個畫素個別用 24 個位元來編碼顯然不是好方法,應該把具有相關性的資料一起做編碼考慮。這可以比擬成要介紹一對長得極相似的雙胞胎,先描述完其中一個,另一個就只需要交代與前者的小差異即可。

當數值近似時,把它們之間的差值編碼,比起把個別原值編碼來得有效率。因為數值相似,相減之後的差值通常比較小,利用這些差值的分布集中在較小數值的統計特性,可變長度編碼的方式就可以派上用場,把較常出現的數值,給予較短的編碼。相較於固定長度編碼的一視同仁,可變長度編碼根據編碼對象出現機率的不同,給予或長或短的編碼,整體平均的編碼長度就變小了。

在影像與視訊壓縮上,轉換編碼是一種很典型的方法。我們常說,同一件事情有不同面向,可以從不同角度切入看問題。影像與視訊資料也是一樣,我們平常看的圖像是空間上的表示,轉換編碼則是把空間資料轉換成頻率。原先資料顯示的是空間中某個位置的顏色數值,經過數學轉換與分析轉換到頻域之後,資料呈現的則是圖像畫素值變化的快慢與程度。

花費一番功夫轉換到頻率成分的表示法,為的是善用人眼視覺系統對不同頻率信號的敏感度不同的特性來達到壓縮的目的。這跟音響設備中可以針對高音、低音、重低音等不同頻率的成分進行放大與縮小的控制,是同樣的概念。

當無失真壓縮法已經壓無可壓的時候,可以選擇捨棄部分高頻信號的資料,雖然資訊稍有損失,但是可以控制在人眼看起來並不會很明顯的程度,如此可以調整與達到較大的壓縮率。因為資訊本身確有部分是被捨棄了,解壓縮的時候無法還原出跟原本一模一樣的影像,因此是失真的壓縮法。

和靜態影像相比,視訊在時間軸上每秒有30張畫面,有大量時間上的資料多餘性。極端來說,如果拍攝的畫面整整一分鐘沒有任何變動,那就有 1,800 張畫面是完全一樣的。即使有物體移動,因為兩張畫面之間只有三十分之一秒,移動通常不大。

如果把影像加上座標軸,一顆球的圓心在一張畫面的(0,0)處,在下一張畫面(100,100)座標位置上,可能就可以找到跟前一張畫面一模一樣的球。畫面之間因為相似度高,因此可以藉由鄰近畫面資訊加上考量可能移動的情形來做預測,視訊主要就靠著這個所謂「移動補償」的概念,來達到相當好的壓縮效果。

壓縮技術的標準化

人好不容易瘦了,希望不再胖回來。影像壓縮了,可不能無法解壓縮回來。任何人可以發展出不同的壓縮方法,但是必須告訴別人是怎麼壓縮的,如何解壓縮回來。使用一套你知我知的壓縮技術,就可進行壓縮檔案的交換。

國際上於是有專注於制定影像與視訊壓縮標準的組織。聯合影像專家群(joint photographic experts group, JPEG) 的主要任務是數位影像壓縮標準的制定,動態影像專家群 (moving picture experts group, MPEG)則制定了大家耳熟能詳的 MPEG?1、MPEG?2、MPEG?4 等視訊壓縮標準。另外還有視訊編碼專家群(video coding experts group, VCEG),H.26x 系列的標準就是他們的成果。

在《科學發展》月刊 2002 年 9 月第 357 期〈數位視訊壓縮標準的價值〉一文中,有對於MPEG?1、MPEG?2 和 MPEG?4 的相關介紹,本文則介紹一些新的發展。

JPEG 與 JPEG2000

JPEG 應該是大家最常聽到的影像檔,採用的主要是以「離散餘弦轉換搭配霍夫曼編碼」的技術。目前數位相機所拍下的檔案,幾乎都是以 JPEG 壓縮後儲存的,檔案的副檔名是 JPG 的就是一個 JPEG 壓縮的檔案。數位相機上都有影像品質設定的選項,你可以試試看,對於同一個場景,拍下幾張品質設定不同的照片,比較它們的檔案大小,以及在電腦上看看它們的差別。如果和完全沒有壓縮過的檔案比較,你會發現它們瘦了許多,而且影像品質不細看甚至看不出差別。

JPEG2000 則是繼 JPEG 之後推出的新標準,採用的是「離散小波轉換搭配算術編碼」的技術。在壓縮效果上,後來發明的當然勝過前面的。並且,JPEG2000還主打一些特色,像是具備在空間上及影像品質上的延展性(scalability),即單一個 JPEG2000 檔案可以有多變的面貌,可以解碼出可大可小的畫面,品質也可由粗略到精緻漸進式解碼。如果是原來沒有延展性的 JPEG 檔案要做到這樣多變,就得分別儲存多張不同大小和品質的影像,資料量自然就多出許多。

影像壓縮技術也可以直覺地拿來壓縮視訊,這就產生所謂 Motion?JPEG 與 Motion?JPEG2000 的方法,視訊中的每一個畫面是單獨編碼,而不考慮時間軸上畫面間的資料多餘性。舉例來說,網路通訊軟體 MSN Messenger 和 Yahoo Messenger 的即時視訊傳輸,就分別採用了 Motion?JPEG 與 Motion?JPEG2000 的壓縮技術。

耀眼的新星

H.264/MPEG?4 AVC 是繼大家熟悉的 MPEG?2、MPEG?4 之後,MPEG 與 VCEG 專家群共同的最新力作。這個壓縮標準 VCEG 稱為 H.264,在 MPEG 則歸屬於 MPEG?4 標準的第 10 個部分,通稱 MPEG?4 AVC(advanced video coding),或是 AVC。這個標準已經成為高解析度 DVD、藍光 DVD 及數位視訊廣播(DVB)所採用的視訊壓縮格式,預期未來會是曝光率極高的新星。

H.264/AVC 的壓縮功力可以達到比 MPEG?2 好一倍以上的程度,也就是在相同的壓縮影像品質之下,H.264/AVC 的檔案大小可以是 MPEG?2 的一半。能有這麼強的功力,靠的是更為複雜且有效的壓縮技巧。例如它接近暴力式地採用多種預測模式與編碼模式,並把多種可能都做計算,然後再選擇其中最佳的模式。這個新技術付出的運算代價可不小,好在現在半導體技術的進步飛快,IC 晶片的運算能力愈來愈強,這樣複雜的計算可以交給專門計算視訊壓縮特定用途的 IC 來搞定。

能屈能伸的 SVC

我們提到 JPEG2000 時,特別提到它所具備的延展性特色。同樣地,在視訊壓縮上,MPEG 專家群制定中的 Scalable Video Coding(SVC)標準,就是因應視訊延展性需求所發展的一個技術。

當我們希望同一個影片檔案既能夠在大電視上看,也能夠在手機的小螢幕上欣賞時,這一個影片就必須「能屈能伸」,畫面要大有大,要小有小,品質、每秒畫面數等參數也都可以調整,不需要分成多個獨立壓縮的檔案。其中的奧妙就是透過所謂嵌入式的編碼,把各種不同規格參數下的視訊看成大集合中的子集合,通通壓縮包在同一個檔案之中,並且極盡所能地壓縮它們彼此之間的資料多餘性。

3D 立體視訊

由目前的二維平面視訊往三維立體視訊發展,是未來的一個趨勢。想像攝影棚內多臺攝影機密集地對著主播,每個攝影機拍攝的角度不同,同時產生的就是多個畫面的視訊。目前的電視節目是由導播選一個畫面播出,未來電視如果可以讓多個畫面同時交錯顯示在電視上,透過設計讓不同畫面的光線進到不同觀看角度的眼睛裡,觀眾在不同角度的座位上,看到的是不同攝影機拍到的畫面,因而有立體感。

MPEG 的專家們目前就有小組針對多畫面視訊編碼(multiview video coding, MVC)技術的標準化進行討論。多畫面視訊在同一時間內有多個畫面,資料量大的驚人。這些畫面間有強烈的空間關聯性,因為場景物體深度不同,不同角度的畫面間畫素有一定的位移量。MVC 的壓縮技術就是進一步把這一層資料的多餘部分加以有效地去除,以達到比各個視訊獨立壓縮的方式減少更多資料量的目的。

除了以上介紹的一些標準之外,市面上也有許多不同的壓縮技術,像是微軟發展的 WMV(windows media video)、RealNetworks 公司的 RealVideo 等。壓縮技術的發展爐火純青了嗎?許多專家仍不斷地投入相關研究,誰說未來不會有更神奇的瘦身法推出呢?且讓我們拭目以待,或者,有興趣的你也可以嘗試更深入的研究,貢獻你的壓縮好點子。