解密蘋果和小米10 用的HEIF照片格式,諾基亞華為貢獻大

2021-01-15 IT之家

前段時間發布的小米10系列手機採用了一種新的圖片格式:HEIF,能夠在保持畫質不變的前提下縮減至少50%的文件體積。

HEIF格式照片的文件擴展名一般是.HEIC(也有其他的格式)。看到這個格式名,用iPhone的小夥伴一定很熟悉。

沒錯,蘋果在2017年iOS 11系統上就已經開始支持這種圖片格式,大家可以去翻翻IT之家的老文章(點此前往)。

Windows 10系統和安卓9系統在2018年也開始支持HEIF圖片格式。同年,三星Note9其實也已經支持.HEIC照片。

小米10發布前,雷軍曾表示,等HEIF普及後,估計JPEG和GIF就可以淘汰了。

汐元覺得,未來如果HEIF普及了,也許真的可以取代JPEG和GIF。

說到這裡,相信大家都很好奇,HEIF究竟是怎麼夠做到保證畫質不變而縮小文件體積的?

汐元翻了一下網上的資料,大多沒有明確針對這個問題進行說明。所以這篇文章打算聚焦這個問題來為大家介紹。

為什麼HEIF相比JPEG能夠在畫質不變的情況下將文件體積大幅縮小?

我們首先要明白JPEG的圖片格式具體是怎麼樣的。

所謂JPEG格式的圖片,其實說的是一種圖像壓縮的技術標準,使用這種標準壓縮出來的圖片,就叫「JPEG文件」。

JPEG文件後綴名包括JPG、JPEG、JPE、JFIF以及JIF。都是我們熟悉的。

那麼JPEG標準是怎麼壓縮圖片的呢?

我們知道,一張圖片放大後,就可以看到一個一個的像素點。

每個像素點,都包含了描述這個像素點顏色的一組數值,這個叫色彩空間,例如我們熟悉的RGB色彩空間,還有CMYK色彩空間等。

一般照片用的是RGB色彩空間,而JPEG標準採用的是一種叫做YCbCr的色彩空間。所以壓縮之前,要先進行色彩空間轉換。

YCbCr色彩空間中,中Y表示的是亮度,Cb代表藍色的彩度,Cr表示的是紅色的彩度。

換句話說,Y代表亮度,CbCr代表色彩。

轉換之後,每個像素背後變成了另一組數值。

因為人眼對亮度敏感,對色彩不那麼敏感,所以實際壓縮的時候,JPEG標準不會對亮度信息做太多改變,主要對色彩信息做壓縮。

壓縮有兩種,一種是有損壓縮,一種是無損壓縮。JPEG在壓縮時,兩種都會用,一般先進行有損壓縮,然後進行無損壓縮。

有損壓縮第一步是對Cb通道和Cr通道的色彩數據按照一定的比例進行取樣。這個過程就損失了一部分數據。

第二步,就是將一張圖片中的像素分成無數個8×8像素的方塊,每個方塊裡有64個像素,對應64組數據。

然後,將這64組數據進行一種叫離散餘弦變換(DCT)的數學處理,處理後,這64組數據就變成了數據更簡潔一些的係數矩陣。

至於這個離散餘弦變換怎麼搞,就不用了解了,懂高數的IT之家小夥伴可以自行去學習。

總之,在經過DCT變換後,64組像素數值變成了64個係數,這個過程又產生了數據損失。

接下來,對於這一組8×8的序數矩陣,還不能直接處理,要繼續進行一步叫「量化」的處理過程。

量化是怎麼進行的大家不用知道,只需要知道,量化的目的是適當減小矩陣內各個像素點之間的差別。因為人眼對小範圍內差別高的像素區域辨別能力不高,所以不如削減它們的差異。

經過量化處理後,8×8的序數矩陣變成了一組更加簡潔的數字矩陣,有大面積的0。

很顯然,這一步,又損失了一部分數據。

好,走到這一步,接下來就是無損壓縮了。

首先,我們把上一步量化後的8×8數字矩陣提取出來。提取的順序是這樣「Z」字型的。

提取出來後,得到64個數據。這64個數據中,第一個數字叫DC係數編碼,後面63個數字叫AC係數編碼。

我們要知道,一張圖片裡可以包含很多很多個8×8的小方塊,都進行上述處理後,就有很多很多個DC係數。

我們把這很多很多個DC係數抽出來,組成一個集體,然後對它們進行差分編碼和哈夫曼編碼。

至於其他的AC係數,我們對他們進行行程編碼。

這樣,JPEG標準的壓縮步驟基本就走完了。

這些步驟走完後,壓縮成的.JPG文件體積就會比原圖小很多,當然圖片質量也會有所損失。

但我們要說的還沒完。

上面三種無損壓縮編碼的操作過程大家不需要知道,但是他們的壓縮思想,大家是有必要知道的。

差分編碼,就是對於一串數字,除了第一個數字,其他數字都表示為它和前一個數字的差。例如100、101、103、104、107這串數據,可以表示為100、1、2、1、3。這就起到了壓縮作用。

哈夫曼編碼,它的大體思想在一串數據裡,用短字符表示出現頻率多的數字,用稍長的字符表示出現頻率少的數字。

假如有下面這句話:「IT之家網友在IT之家討論IT之家小編」,這句話裡「IT之家」幾個字反覆出現,那我們就用「1」來表示「IT之家」,然後這句話就成了「1網友在1討論1小編」,這樣是不是就被壓縮了?

注意,上面這個例子並不嚴謹,只是為了方便大家理解哈夫曼編碼的思想,實際操作很複雜的,要考慮概率、做二叉樹等步驟的。如果有IT之家小夥伴感興趣可自行學習。

行程編碼,這就很簡單了,直接用例子說明。假如有一串字符「aaabbbccccdddddd」,它包括3個a,3個b,4個c,6個d,所以就把它編碼為「3a3b4c6d」。

很明顯,要想讓這些無損編碼最大限度發揮壓縮作用,需要保證數據有一定特性,例如大面積相同的字符、有很多出現頻率較高的字符或者有很多相似的字符等。

講到這,相信大家也就理解了為什麼前面要大費周章做那麼多有損的處理了,一部分原因就是為了得到適合進行無損壓縮的數據。

通常情況下,一張圖片裡面,其實是有很多相同或相近的像素點的,這意味著它們背後的數據有很大可以壓縮的空間。

JPEG目的就是要幹這個事兒的,這麼說相信大家能理解。

說了那麼多JPEG,那HEIF呢?

別急,當我們掌握了JPEG圖像壓縮的方法,對於HEIF是怎樣進一步壓縮圖片體積的,就好理解多了。

其實HEIF做的工作和JPEG差不多,大體路徑是相似的,但在一些一些細節上有改進。

我們需要先做一個簡單的說明。其實所謂的HEIF,是圖片的封裝格式,它主要採用的是一種叫HEVC的編碼方式。

打個比方,一張圖片的信息,它們其實是經過HEVC的編碼方式進行編碼,然後將編碼後的信息用一個盒子(容器)裝起來,這個盒子就叫HEIF。

HEIF是把盒子和編碼方式分開了,而JPEG沒有。

HEIF的這種操作方式和很多視頻格式很像,我們經常看到的MP4、MKV、AVI等視頻格式,其實都是盒子的名字,盒子裡面是編碼的方式,例如MPEG-4、H.264、H.265等。

影音軟體播放視頻文件的時候,都是先把盒子打開,然後再解碼裡面的編碼文件。

上面提到的H.265還有一個名字,就叫HEVC,沒錯,也就是HEIF格式主要採用的編碼方式,所以說這個圖片格式其實採用的也是視頻的編碼的方式。

除了HEVC,HEIF格式也可能採用其他的編碼方式,但很少見。它的編碼方式和對應的後綴名如下:

我們看到,小米10和iPhone用的都是HEVC的編碼方式,後綴名都是.HEIC。

所以問題就變成了,HEVC的編碼方式是怎麼將體積縮小的呢?

其實主要有兩點。

首先,根據上文的介紹,JPEG是將圖片劃分成很多8×8的像素塊來進行壓縮編碼的。

而在HEVC編碼方式中,這個像素塊的劃分方式更靈活,最大可以允許以64×64來劃分,然後在64×64的像素塊中,可以靈活的劃分子像素塊,可以劃分成32×32、16×16、8×8的子塊,這叫做四叉樹單元劃分。

這麼做有什麼好處呢?答案就是,在面對一張圖片的時候,如果是信息量比較平緩的區域,我們可以用比較大的像素塊來劃分,如果是信息量比較密集的區域,就可以用比較小的像素塊來劃分。

這種根據實際情況來劃分的編碼單元,可以很大程度提高編碼效率。特別是針對4K等高解析度、像素量大的照片,優勢更明顯。

HEIF照片的文件體積能夠縮小,大部分要歸結於此。

其次是第二點。前面介紹JPEG時我們講了它使用的幾種無損編碼方式,分別是差分編碼、哈夫曼編碼和行程編碼。

這其中從編碼之後的數據量來說,其實最主要的是哈夫曼編碼,它是可以改進的。

在HEIF標準中,這種無損編碼方式主要採用了自適應的二進位算術編碼(下面簡稱「算術編碼」)。

其實,隨著JPEG跟隨時代的發展,算術編碼也被引入到了JPEG的編碼方式中,但是主要還是哈夫曼編碼。

算術編碼相比哈夫曼編碼,可以進一步提高編碼效率。

其實算術編碼的思想原理和哈夫曼編碼是差不多的,都是考慮數據中不同字符出現的概率,然後給不同字符以不同的編碼。

算術編碼具體的數學化思想很濃,難以三言兩語講清楚,這裡也不方便展開說了。總之,算術編碼最後得到的是一個很簡潔,但是很長的小數。

正是因為數學的思想很深刻,算術編碼的編碼效率要比哈夫曼編碼更高,最後呈現在大家面前的,就是對於同一張照片可以壓縮成更小的體積。

以上,基本上就是HEIF能夠在保證畫質不變的前提下縮小圖片體積的原因了。

最後,關於HEIF,還有一些比較基礎的知識,大家可以比較輕鬆地了解到。IT之家之前也轉了小米官方對HEIF格式介紹的文章。

HEIF的全名是高效率圖像格式(High Efficiency Image Format),是運動圖像專家組(MPEG)在2013年推出的。它和前面的JPEG不是一個組織。

值得一提的是,HEIF的相關技術是諾基亞的技術人員制定的,在2015年基本定型,現在也是諾基亞在維護(HEIF官網:點此前往)。

有意思的是,HEIF的關鍵編碼技術HEVC,華為正是主要推動者之一,手握大量專利,還在今年1月加入了HEVC Advance專利池。

當然啦,小米10憑藉自身的話題性,對HEIF圖片格式的進一步普及確實也起到了推動作用。

無論如何,汐元還是期待HEIF圖片格式能夠克服困難,儘快普及,畢竟現在智慧型手機攝像頭像素已經能達到億級了,JPG格式下手機的存儲空間確實吃緊。

畢竟,總不能只因為要存照片就非得買更大存儲空間的手機吧。

參考

中國大學MOOC-長江大學公開課,2019-08-05,《靜態圖像壓縮技術:JPEG編碼(視頻)》。中國大學MOOC-長江大學公開課,2019-08-05,《靜態圖像壓縮技術:Huffman編碼》。金山視頻雲,2017-11-14,《HEIF格式解析》。CSDN-打怪升級ing,2018-11-29,《H.264和H.265(HEVC)深度解析及對比》。

相關焦點

  • 科普:小米 10 中的 HEIF 格式照片是什麼
    IT之家2月17日消息 在最新發布的小米10系列新機上,1億像素攝像頭是其主打配置之一。1億像素的照片勢必也會佔據不小的手機空間,不過IT之家了解到,為了配合1億像素,小米10還支持.HEIF格式,可以讓照片畫質不變,文件大小更小。
  • 20多年的JPG圖片將退休:蘋果3年前首發 小米力推
    ,小米與諾基亞聯合披露合作消息:其中主要內容在於「一份多年有效的專利許可協議」,其中提到了「交叉授權」以及小米收購部分諾基亞專利資產。瘦死駱駝比馬大,雖然現在諾基亞在智慧型手機市場上已經是other,但是作為老牌廠商還是手持著許多HEIF專利的技術儲備,而小米也乘上這個春風,用上了HEIF格式了,這對於日顯存儲空間緊張的安卓手機來說,不失為一件好事,也給國內的手機廠商開了一個好頭。
  • 有種「原形畢露」叫原相機,華為和蘋果還好,看到諾基亞:神仙相機
    相信現在的很多女生在拍照的時候都是會用美顏的,畢竟這樣拍出來的照片才會更加的好看,但要是用原相機的話就會「原形畢露」了,很多缺點就會一下子暴露出來,那麼到底哪款手機的原相機拍照會更好看一點呢?
  • 10%+10%到底等於多少?為何華為、蘋果、小米都算錯了?
    近日,一則「手機計算器全線陣亡」的消息登上各大熱搜榜。不少網友發現自己手機的計算器出現了一個錯誤:在手機計算器中輸入「10%+10%」後,得出的結果不是0.2,而是0.11。記者用自己的華為手機測試以後發現,得出的結果也是0.11。
  • 超越蘋果,領先華為?小米野心顯露,這次並不是說說而已
    華為掏出了自己的麒麟9000晶片,蘋果也擁有了5G,OPPO、VIVO今年的旗艦機表現也屢獲稱讚,甚至小米都開始正式進軍高端路線,準備與巨頭們分得一杯羹。因為華為在晶片方面的阻礙,直接導致華為的手機業務遭受打擊。出貨量大幅度下降,而根據市場調研機構Gartner給出的統計數據來看,小米在今年Q3季度的三個月時間當中,也成功的反超了蘋果,成為世界第三的手機廠商。種種消息對小米來說都十分的有利。
  • 將照片和視頻從手機導入Mac時如何解決ImageCaptureCore錯誤9937
    蘋果在iOS 11中添加的新媒體格式中的更高壓縮率幾乎可以使您在iPhone或iPad上拍照和拍攝電影時存儲的照片和視頻數量增加一倍。但是,如果您尚未安裝macOS 10.13 High Sierra或更高版本,則使用HEIF(高效圖像文件格式)和HEVC(高效視頻編碼)將成為問題。早期版本的Photo和macOS缺少對這兩種壓縮格式的支持。
  • 2020熱榜手機大比拼,到底哪款最好用,蘋果就是不如華為?
    國產手機牌子各種各樣,有華為,小米,OPPO,vivo,魅族,樂視,聯想,金立,中興,錘子等等,中國人用的外國手機大部分都是蘋果,那麼這麼多款手機,到底哪款手機最好用呢?先來看看我們的國產手機主要在那個國家或地區銷售吧!
  • 凱盛科技:柔性ITO導電膜所供品牌有諾基亞、騰訊等 小米和華為還在...
    子公司方興光電的柔性ITO導電膜主要通過下遊的深圳國顯等模組企業,向國內外知名手機和平板、筆電、智能設備品牌批量配套,包括亞馬遜、宏基、華碩、諾基亞、富士康、騰訊等。小米和華為還在驗證階段。感謝您對公司的關注。
  • 無線充電技術大曝光!三星、蘋果雙雄稱霸:華為成國產最後的牌面
    【1月3日訊】相信大家都知道,隨著小米也跟隨蘋果取消了附贈充電器產品之後,就有很多業內人士預測,下一代iPhone 13系列手機,蘋果還將取消充電器接口設計,直接採用蘋果最新推出的Magsafe磁吸無線充電器進行充電,而耳機產品則用airpods進行替代,屆時也將會吸引各大手機廠商的紛紛效仿,雖然蘋果如此熱衷推廣無線充電技術,但實際上無線充電技術並非蘋果首創,而是有諾基亞首創的無線充電技術
  • 小米撿了華為的漏,世界第三的位置能坐多久?
    小米重返世界第三。但是Q3漂亮財報的貢獻絕大部分來自海外,撿漏華為、海外疫情加重等短期利好均不可持續。而在國內,線下渠道建設仍然是小米的薄弱之處。華為收縮,1億部手機的市場空間空出來了,可小米接得起嗎?
  • 華為手機強勢增長 42%,蘋果小米OV出貨量暴跌
    10月31日消息,近日第三方數據調查公司 Canalys 發布消息顯示,華為手機(含榮耀品牌)在國內市場出貨量達到了 4150 萬部,市場份額增至 42%,佔據國內手機廠商首位,而第二至第五名的分別是 vivo、oppo、小米、蘋果,最重要的是第二至第五名的市場份額總和也僅達到 50%。
  • 超級月亮即將來臨,華為Mate30Pro和小米10 Pro究竟誰拍照更強?
    那麼在這種情況下,曾經的DOXMARK霸主華為mate30 Pro 5G手機和現在雙霸主小米10 Pro究竟誰在拍月亮上更勝一籌?科技君帶大家一探究竟!華為mate30 Pro,在攝像方面有著四攝:超感光徠卡電影四攝,這款手機搭載著雙主攝分為視頻主攝和照片主攝。4000萬像素電影攝像頭+4000萬像素超感光攝像頭,同時加上3D深感攝像頭和800萬長焦攝像頭。
  • 五大洲智慧型手機佔比分析,三星、華為、蘋果三分天下,小米亮點
    一季度所有地區(亞太地區,拉美,歐洲和北美)均出現下降。5G智慧型手機的份額從2020年第一季度的1%增長到2020年第一季度的7%以上。5G可能有助於2020年下半年的恢復速度。根據該報告可以看出,當前全球智慧型手機市場依舊是三星、華為、蘋果三分天下的局面,三大手機廠商佔據全球智慧型手機市場的51%,頭部優勢明顯。
  • 酷評65:華為重啟4g手機;小米業績創新高;蘋果12成本曝光
    ,華為轉向4g可以說正和他意。就當前來看: 1.華為讓渡市場,小米機會抓住機會,搶佔份額,國內市場和歐洲市場是增長動力; 2.網際網路業務增速放緩,個人認為兩方面原因,一是yq原因,廣告主對廣告投入比較謹慎;二是小米廣告變成可以關閉,變現能力變弱,可以說有舍有得; 3.看形勢,海外發展良好,miui在海外很受歡迎;
  • 谷歌新套路,百元機先用上優化版安卓9.0,華為小米很意外
    谷歌新套路,百元機先用上優化版安卓9.0,華為小米很意外Android是一種基於Linux的自由及開放原始碼的作業系統,主要使用於行動裝置,例如智慧型手機和平板電腦。Android是由Google公司與開放手機聯盟的一同研究開發的。
  • iPhone翻車 蘋果/華為/小米/OPPO/定位比拼
    我們選擇了在手機市場排名前列的四大廠商的2018年度旗艦,這四大旗艦手機分別是蘋果的iPhone XS、華為最新的Mate 20 Pro、小米剛出的滑蓋手機——小米MIX3,當然還有上半年改變了率先引入機械升降結構的OPPO Find X。
  • 我的手機歷史,華為、蘋果、三星、小米
    最早用的一部智慧型手機是華為8600,當時還是運營商合作機,最深的印象就是沒有GPU加速,3D小遊戲都玩不了;因為必須用電信卡的原因,早期一直沒有好的手機,一直到小米1S的出現,終於有了一部高配置的電信手機,這部手機我用了3年,除了電源鍵摔得沒有彈性,沒有其他問題。
  • 華為缺芯三星得利 全球市場份額爭奪戰誰將大獲全勝?
    是的,這樣的說法確實在很多事情上都能夠得到印證,就比如說2020年的華為。 華為經過多年的耕耘終於在今年4月份成功的超越了三星,憑藉著21%的市場份額登上了全球銷量第一的寶座,按照正常的發展,華為應當是越戰越勇的,能夠牢牢地把持著銷量第一的名頭直到下一個挑戰者的出現,一如當年諾基亞取代了摩託羅拉,三星取代了諾基亞。
  • 用哪款手機拍超級月亮?DXO榜首華為P40 Pro對決小米10 Pro
    令人心動的是,此次呈現的是粉紅月亮,相信大家都想目睹這一美麗時刻,更想記錄超級粉紅月亮美好照片。那麼問題來了,哪款手機拍超級月亮最強?華為P40 Pro表示,捨我其誰? 我們都知道小米10 Pro一億像素雖然很強,但是在華為P40 Pro發布後,就顯得沒有那麼強大了,斬下榜首,成為目前Doxmark榜首。
  • 諾基亞重返市場!全球陣營或將出現變化
    諾基亞是全球知名的電信手機巨頭,昔日在手機電信方面的當中是各大製造商當中的巨頭,雖然在現今的市場當中,很少見到有諾基亞的出現,但是這並不代表諾基亞已經退出手機市場,因為在一部分人手中現金還存在著諾基亞手機,比如說老人。雖然市面上很少見到有年輕人使用諾基亞手機,但是很多智慧型手機和智能手錶當中還存在著諾基亞品牌的製作。