1. 程式人生 > 其它 >下一代影象壓縮格式科普---HEIF 與AVIF格式

下一代影象壓縮格式科普---HEIF 與AVIF格式

技術標籤:影象處理相關雲端計算計算機視覺影象識別影象處理

目錄

背景

什麼是HEIF?

小結

什麼是AVIF?

有什麼好處?

為什麼要使用新的影象格式?

採用AV1和AVIF

注意事項

關於基準測試的注意事項

今天如何以及何時啟用AVIF?


背景

上一篇文件主要講了一下ImageX支援的圖片壓縮格式,看起來壓縮率比較高,但是有些同學會問這些格式和編碼方式有什麼不同,所以,本篇文件主要講一下圖片格式和圖片編碼相關的科普類說明;

什麼是HEIF?

來自wiki上的說明

高效率影象檔案格式(英語:High Efficiency Image File Format, HEIF;也稱高效影象檔案格式[1])是一個用於單張影象或影象序列的檔案格式。它由動態影像專家小組(MPEG)開發,並在MPEG-H Part 12(ISO/IEC 23008-12)中定義。

HEIF規範也定義了高效率視訊編碼(HEVC)編碼的內嵌影象和HEVC編碼的影象序列的儲存方式,其中以受約束的方式應用幀間預測。

  • 儲存單個或多個影象及其縮圖
  • 儲存連拍照片
  • 支援同時捕獲視訊和靜止影象,即將靜止影象和定時影象序列儲存在同一檔案中
  • 高效地表示動畫和動態靜圖
  • 儲存焦點堆疊和曝光堆疊到同一個容器檔案
  • 儲存從其他影象檔案派生的影象,無論是以非破壞性影象編輯操作為目的派生的影象,還是作為預先計算派生的影象
  • 支援儲存其他媒體,例如音訊和定時的文字,將定時的影象序列儲存在同一個容器檔案中,並且同步播放。

HEIF本身具備很多很多可玩的特性,在這裡我們對一些格式做一些比較:

HEIF (.heic)JPEG/ExifPNGGIF (89a)WebP
格式和可擴充套件性
基本容器檔案格式ISOBMFFTIFF--RIFF
有失真壓縮是 (JPEG)是 (VP8)
無失真壓縮是 (TIFF Rev 6.0)是 (PNG)是 (GIF)是 (VP8L)
可擴充套件至其他編碼格式
元資料格式(在內部、頂部)Exif, XMP, MPEG-7Exif--Exif, XMP
可擴充套件至其他元資料格式
其他媒體型別(音訊、文字等)Audio
多影象特性
同一個檔案中多個影象
影象序列/動畫
影象編碼
派生影象
多次90度旋轉
裁剪
平鋪/堆疊
可擴充套件至其他編輯操作
輔助圖片資訊
透明度(alpha通道)
深度對映
縮圖

從這裡,我們也知道,蘋果公司優先在手機裡支援了heic格式,相比於其他圖片格式有太多的優點了;在iphone 使用優點如下:

  • 壓縮率極大提升,照片型別圖片同樣質量是jpeg的一半尺寸。相當於對於拍照來說iPhone X,7和8的有效儲存空間是128G-512G。
  • 對於一些色塊,線條型別圖片壓縮比例更是驚人,而且完全沒有jpeg那種邊緣噪點。有時候只需要五分之一的空間。
  • 支援高色深,10-bit,12-bit內容。這是HDR普及所必須的,jpeg完全不行必死無疑。另外iphone已經可以拍這些高色深格式的HDR圖片,安卓機則不行,當然這裡在android P+以上版本陸續可以支援heif格式的影象了。
  • 支援透明度
  • 支援多通道,比如iPhone的人像模式拍出來是兩張圖,其中原圖附帶了景深通道,第三方應用可以直接呼叫做出自定義的虛化效果。而安卓機只能是通過檔案命名,速度慢,檔案亂,沒法匯出,不支援第三方應用。
  • 支援多檔案,同一個檔案裡可以有多張圖片,比如上述原圖和渲染好的虛化圖,還可以有視訊動圖。安卓再次撲街,完全不行,只能嘗試放在一個資料夾裡。
  • 支援多幀複合壓縮,比如上述虛化圖和原圖,都不需要儲存兩張圖,對比壓縮以後只儲存一部分虛化背景就可以。又因為背景被虛化資訊量很小,拍人像模式的照片佔用空間更是遠遠低於安卓機

小結

小結:

從昨天的的文章對比的:https://blog.csdn.net/weixin_44643524/article/details/112550247能看到 ImageX 這個雲服務支援的heic 壓縮率也是極高的;不過目前,從動圖這塊看,ImageX 家的動圖支援的還是非常不錯的,我有去嘗試過其他家自研的格式,比如騰訊的TPG、快手KPG還有京東的一個圖片格式來看,自研的圖片格式壓縮效果確實好於開源格式,不過缺點也明顯一般這些格式都需要配合SDK或者解碼庫使用;

HEIF 這個格式的優勢,隨著新版的作業系統的普及Android P 以上版本和 iOS 11+ 以上作業系統的普及,系統預設支援heif 格式的影象指日可待了;

下面主要聊聊AVIF

什麼是AVIF?

AVIF是HEIF ISO標準和Mozilla,Xiph,Google,Cisco等許多公司的免版稅AV1編解碼器的組合。

當前,JPEG是Web上最流行的影象格式。它的使用年限非常出色,而且由於其出色的相容性,它很可能會在未來幾年保持流行。以前有很多嘗試替換JPEG的嘗試,例如JPEG 2000,JPEG XR和WebP。但是,這些格式僅提供了適度的壓縮改進,並不總是在影象質量上勝過JPEG。AVIF的壓縮率和影象質量要比所有其他方法都要好,而且差距很大。

有什麼好處?

平均網站頻寬的一半以上用於影象。改進的影象壓縮可以節省頻寬並提高Web的整體效能。AVIF中的壓縮效果非常好,影象可以縮小到JPEG和WebP的一半大小

為什麼要使用新的影象格式?

AVIF要做的一件大事就是修復了WebP的最大缺陷。WebP已有10多年的歷史了,AVIF是WebP格式的主要升級。這兩種格式在技術上相關:它們都基於VPx系列的視訊編解碼器。WebP使用舊的VP8版本,而AVIF基於AV1。

WebP限於8位顏色深度,並且在其最佳壓縮操作模式下,它只能儲存影象解析度的一半的顏色(稱為色度二次取樣)。這將導致飽和色彩的邊緣在WebP中被弄髒或畫素化。AVIF支援全解析度的10位和12位色彩以及高動態範圍(HDR)。

JPEG格式
WebP
WebP(銳化YUV選項)
AVIF

AV1還使用一種新的壓縮技術:亮度色度。大多數影象格式將亮度與色相分開儲存。AVIF使用亮度通道來猜測顏色通道的外觀。它們通常是相關的,因此很好的猜測可以得出較小的檔案大小和更清晰的邊緣。

採用AV1和AVIF

VP8和WebP遭受了勉強的行業採用。Safari僅在Chrome推出10年後才新增WebP支援。

Chrome 85已經支援AVIF。其他基於Chromium的瀏覽器和Firefox仍在進行中。蘋果尚未宣佈Safari是否支援AVIF。但是,這次蘋果公司是AVIF的建立者開放媒體聯盟的公司之一。與以前的免版稅編解碼器相比,AV1編解碼器的採用速度更快。來自Nvidia,AMD和Intel的最新GPU已經具有對AV1的硬體解碼支援。

AVIF使用與iOS相機中使用的HEIC格式相同的HEIF容器。AVIF和HEIC提供類似的壓縮效能。

注意事項

AVIF是功能豐富的格式。它的大多數功能都適用於智慧手機相機,例如“實時”照片,深度圖,連拍,HDR和無損編輯。瀏覽器將僅支援其中一部分功能。在“影象調整大小”的實現中,我們僅支援靜態範圍的影象。

AVIF中的兩個最大問題是編碼速度和漸進渲染的缺乏。

關於基準測試的注意事項

公平而準確地判斷哪種有損編解碼器更好是令人驚訝的困難。有損編解碼器經過專門設計,主要用於壓縮肉眼看不到的細微影象細節,因此“看起來幾乎相同,但是檔案更小!”是所有有損編解碼器的共同特徵,但不夠具體,不足以得出有關其效能的結論。

有損編解碼器無法僅通過比較檔案大小來進行比較。有損編解碼器可以輕鬆製作任何大小的檔案。它們的效果在於檔案大小與可達到的視覺質量之間的比例。

比較編解碼器的最佳方法是,使每個編解碼器將影象壓縮到完全相同的檔案大小,然後比較它們所達到的實際視覺質量。如果檔案大小不同,則任何判斷都可能是不公平的,因為生成較大檔案的編解碼器可能這樣做只是因為要求其保留更多詳細資訊,而不是因為無法更好地壓縮。

AVIF影象在完全下載之前不會在螢幕上顯示任何內容。相反,漸進式JPEG仍在載入時,可以非常快速地顯示較低質量的影象近似值。漸進式JPEG交付良好時,它們使網站載入速度似乎更快。漸進JPEG看起來可以載入為檔案大小的一半。AVIF可以完全以JPEG大小的一半載入,因此它以純粹的壓縮優勢克服了漸進式渲染的不足。在這種情況下,只剩下WebP,既沒有漸進式渲染也沒有強大的壓縮。

與其他編解碼器相比,解碼AVIF影象進行顯示需要更多的CPU能力,但實際上它應該足夠快。即使是低端的Android裝置也可以在沒有硬體加速幫助的情況下以全高清格式播放AV1視訊,而AVIF影象只是AV1視訊的一幀。但是,AVIF影象的編碼要慢得多。建立單個影象可能甚至需要幾秒鐘。AVIF支援平鋪,這可以加速多核CPU上的編碼。我們有很多CPU核心,因此我們可以利用它來加快編碼速度。“影象調整大小”未使用AVIF中可能的最大壓縮級別來進一步提高壓縮速度。調整大小的影象將被快取,因此僅在快取未命中時,編碼速度才明顯。

我們還將在波蘭語中新增AVIF支援。波蘭語會在後臺非同步轉換影象,從而完全隱藏了編碼延遲,並且與“影象調整大小”相比,它能夠更好地壓縮AVIF影象。

今天如何以及何時啟用AVIF?

即使目前尚不支援AVIF,我們仍然可以將HTML格式的HTML格式與<picture>元素一起使用。該<picture>元素允許逐步支援,因為我們可以按照要載入的順序列出影象源,瀏覽器將載入它支援的第一個影象源。如果瀏覽器根本不支援<picture>,它將退回到使用default<img>

<picture>
	<source srcset="img/photo.avif" type="image/avif">
	<source srcset="img/photo.webp" type="image/webp">
	<img src="img/photo.jpg" alt="Description of Photo">
</picture>

當然了,我昨天的測試文件發現使用 ImageX(感覺做的比較專業)可以快速的將 圖片轉換為AVIF格式,比如這個例子:http://imagex.75live.com/tos-cn-i-n9b2vwdhz3/aaeb00635949973062083b65b5b8c364.jpeg~tplv-n9b2vwdhz3-toB.avif如果恰巧也有計劃將網站遷移到avif使用可以去試用一下他們家的服務;

下一篇打算重點講一下,如何通過一個JS的SDK 來解決在web 瀏覽器載入HEIF和avif的影象格式;敬請期待;