如何評價全新的圖片格式BPG,它會在將來徹底取代JPG嗎?

BPG Image format

體驗鏈接

BPG Image Comparison


JPEG是目前傳播範圍最廣的圖像格式,但由於採用的是有損壓縮演算法,存在累積性劣化問題,所以一直都有人在研究新格式欲取代之。

思路方面大致有兩個方向,一是小尺寸無損格式,另一種則是今天說到的,同等體積下提供更高畫質表現。

知名程序員、FFmpeg、QEMU和JSLinux等項目的作者Fabrice Bellard推出了這種名為BPG(Better Portable Graphics)的新圖像格式

相比JPEG,它採用更高的壓縮演算法,在相同圖像質量下,BPG文件大小只有JPEG的一半,或者說在相同體積文件下,BPG擁有更好的素質表現。另外BPG還原生支持8位和16位通道等等。

這個新格式的最大優點,就是在壓縮比更高的情況下,保留更多的圖片細節,讓畫質不會有太大減損。而在同樣的畫質下,BPG 圖片的大小卻只有 JPEG 格式的一半。大家可以看看下面的對比圖(右邊是 BPG 效果,左邊是 JPEG)


前幾天占樓,現在到了周末終於有時間來更新一番。

為了回答樓主的問題,我們先從圖像壓縮說起。


一. 圖像壓縮肇始:JPEG

JPEG處理圖片的關鍵步驟包括:

1. 將圖片切割成8*8的block;
2. 對每一個block做DCT,得到transform之後的係數;
3. 對每個係數量化;
4. 量化後對每個block zigzag 掃描,得到最終的encoded bit stream。

由於步驟3對JPEG的DCT係數實行的量化,JPEG是有損壓縮,同時也因為分塊處理,缺乏全局多尺度的考慮,這導致了jpeg壓縮後的圖像,被暴力壓縮時候,容易產生塊效應。

二. 小波大法好

考慮到以上問題,人們嘗試引入新的正交變換,並以此為基礎推出JPEG2000壓縮協議。

JPEG2000相對於JPEG主要不同是,JPEG2000使用了多尺度Wavelet Transform(小波變換)進行圖像表達。所謂圖像表達,就是把二維圖像拉成一條以為的vector,再乘以由線性變換係數組成的矩陣,最終得到由圖像表達係數(如DCT係數,小波係數)組成的vector。

像素到係數這個過程稱為圖像表達 (Image Representation),係數到像素過程稱為圖像重建(Image Reconstruction)。係數到像素過程可以認為是vector乘以逆矩陣之後回到像素空間vector當係數數目=像素數目,且能完全重建圖像時,稱為critically sampled係數,這些係數在線性空間上不存在冗餘性,是圖像壓縮的起點。

我們接著講多尺度變換的好處:

1. 多尺度的有點像是用不同焦段的鏡頭看同一個景色。廣角端可以看到big picture, 中焦看到類似人眼的透視效果,長焦端可以看到壓縮透視效果的細節。同理,wavelet representation的低頻信號可以看到圖像的大概,頻率越往高走,圖像的細節越多。

多尺度的實現,是通過圖像(像素空間)對不同的小波係數做二維卷積實現的。(通常低頻小波係數卷積運算係數多,類比廣角畫面大;高頻小波卷積運算係數少,類比長焦看到的畫面小)

多尺度的好處是,把雞蛋(像素)放在多個籃子(頻率段/尺度)裡面,量化編碼的時候,對每個頻率段而非整個頻率段(如DCT係數)實施量化編碼,這樣低尺度係數(對應的卷積序列長度&>8)量化細緻的話,圖像最終恢復重建的時候,塊效應可以顯著減輕。

2. 傅里葉分析的basis是三角函數(exp(1j*theta)),它的support是無限的。而自然圖像的邊緣常常是寬度有限的,大家知道,當傅里葉級數來逼近step function時候,會產生吉布斯效應:能量誤差(L2 norm)asmyptotically收斂到0,但是看shape依舊有跳變,這就是為什麼我們看微博文字類的照片時,經常在文字邊緣能看到像素明暗的波動(振鈴現象)。

小波的好處在於它的basis很靈活。Daubechies 小波係數在時域上是連續,短支撐,且長得像圖像邊緣。當一個信號用和它長得很像的basis來逼近時,自然圖像表達效率很高,需要的係數也就很少很稀疏,我們管這個現象叫efficient。正是因為efficient representation,小波變換用了較少的係數個數(其他的很多都是0)實現了同樣的重建效果。

以上兩點好處,讓JPEG2000實現了相對JPEG15%的進步:節省了15%的壓縮空間。

三. DPCM大法好

做完了JPEG2000之後,人們發現,JPEG2000 並沒有完全消除圖像的空間冗餘性。為什麼這麼說呢?小波變換雖然特別efficient,但是它的support畢竟是很短的,而空間上很長的線條首尾雖然跨度上千像素,我們在視覺上認為它們是一體的,結構近似,存在很多冗餘。但是JPEG2000處理此類長邊緣,對應的係數其實是獨立編碼,沒有充分利用其冗餘性的特點。

這個時候,隨著互聯網的發達,大家對於視頻壓縮的研究變得火熱,大家都在想怎麼來去除相關性,想來想去無非有兩大源頭。

1. inter-frame redundancy
視頻內固定的風景,走動的人,前後幀關聯巨大(時間冗餘性)。
2. intra-frame redundancy
每一幀圖像內的窗戶,瓷磚,藍天,白雲的塊之間關聯性很大(空間冗餘性)。

考慮消除1和2後節省bits的巨大好處,大家搞出來了H.264 (Advanced Video Coding)。 這裡的1由於和這個問題無關,以後可以找時間細說。

處理2的過程是使用相鄰block來predict我們要預測的block,這個過程和DPCM的道理是一回事。JPEG2000由於使用小波基不能實現motion compensation被棄用,這裡依舊使用JPEG的DCT來壓縮。比如我們要預測8*8 block之內的像素值的大小的話,我們可以利用它左上兩個方向的最近邊的邊長(共17個像素值)來預測。

每次編碼器都窮舉各種mode來找出一種最優最省bits的編碼的方法,記下這種模式的編號和殘餘誤差,我們來對這個誤差編好,這個過程會省出很多bits。

具體預測有很多種mode, H.264了裡面大概包括有:
4 x 4 luma blocks -&> 9 prediction modes.
8 x 8 luma blocks -&> 9 prediction modes.
16 x 16 luma blocks -&> 4 prediction modes.

四. 如何更科學地DPCM?

H.264 做好了之後,大家還嫌效果不好,怎麼辦?於是就做了H.265(Highly Efficient Video Coding簡稱HEVC)。HEVC就是BPG的演算法基礎。

BPG用的演算法就是HEVC中對於intra-frame block的編碼。HEVC 的intra-frame 編碼相對AVC比起來聰明了不少。

1. 使用不同size的block來編碼,而不是固定size的block。變化平緩的地方可以用32*32大小的block編碼,變化劇烈的地方用4*4大小的block編碼。這樣可以有效減輕塊效應。
2. mode掃描的方式提高到35種,等於對180°的角度量化成了35個bin,這樣使得predection error明顯變小。

基於以上兩大原因,BPG超過了AVC的intra-frame編碼。
而減少了幀內的相關性,AVC intra-frame 編碼能力要強於JPEG2000,JPEG2000編碼能力又強於JPEG。

五.總結:

壓縮能力比較:

JPEG&

壓縮能力提升的主要原因:

1. JPEG-&>JPEG2000
多尺度分析降低塊效應
小波係數更稀疏

2. JPEG2000-&>AVC Intra-Frame
降低空間結構冗餘

3. AVC Intra-Frame-&>BPG
進一步降低空間結構冗餘

現在回答題剩下的問題:

1. BPG會是終極的圖像壓縮方法嗎?

毋庸置疑,BPG是先進的圖像壓縮協議。

但是BPG使用的DCT作為線性變換本身相對多尺度的線性變換在壓縮能力上存在先天弱勢。之所以BPG和HEVC仍舊使用DCT來做線性變換的原因是因為一般的多尺度變換做不到在像素空間的block化,從而實現不了高效的block by block的預測。如果想在係數空間內block化,小波係數本身不具有shift-invariant的特性。換言之,像素空間整體移動後,小波係數的形狀存在差異,根本不可預測。除非我們實現了shift-invariant且能critically sampled的變換,要不然我們就很難做到block化,就得接著用DCT來做。

另外對於的mode的預測,BPG的在180度空間內平均分成30多個等分一個一個試的方法多少讓人覺得這種方法是盲人摸象,相對於前人H.264的編碼過程,沒有根本上得改進。自然圖像,諸如邊緣的變化角度明顯是連續變化的,如果能實現具有邊緣角度預測能力的線性變換的話,那麼對於周邊block的預測就會更加準確,會節省更多的bits。


2. BPG會像JPEG一樣被廣泛使用嗎?

未必。

不是牛逼的壓縮協議就能被大量採用的,JPEG2000就是明顯的例子,大家目前日常能看到JPEG2000的地方估計只有Photoshop的保存按鈕,選擇.jpeg2000。(其他可能用到JPEG2000的場合:軍用雷達發回的圖像,因為軍用設備對帶寬極其敏感,把帶寬提高一個數量級,價格不知道翻了多少倍)。

JPEG2000沒有被廣泛用的原因是,JPEG2000沒有比JPEG好太多(15%)且涉及到專利。

說到專利,這裡說一個業界的常識,即便是某一個壓縮協議源代碼公布了,實際上不同公司的具體演算法(尤其是硬體層面的演算法)會不同,並且只會比公布的源代碼效果更好。這裡的原因是,標準委員會的裡面的人很多都在例如微軟,Google這樣的大公司的有職務,他們有不願告訴別人的更好的壓縮想法,打算悶聲發大財,但是標準又要公布,所以他們只會在標準裡面寫表現一般的細節(比如演算法較慢,容錯率一般)。這樣的結果是,各大公司做的演算法有好有差,演算法差的公司很有可能拿好的公司的演算法用,然後做產品賣,然後被發現,打官司要求禁用該演算法在該公司產品的使用。連JPEG這麼老的協議都有很多公司在為自己擁有這個專利而爭執不休,BPG要打破大公司之間的壁壘,而被廣泛使用,其實還存在諸多變數。


【注】:利益相關,本人目前在從事圖像壓縮領域的研究。


一種媒體格式要流行起來不只是性能卓越就好了。
專利限制、編碼解碼庫易用性、兼容性、巨頭支持、派系鬥爭........就是是好東西也不一定流行起來

GIF那麼落後的格式,動畫只能有256沒alpha通道,當年用來取代GIF的APNG (兼容性:向下兼容靜態PNG,和PNG一樣的圖像解碼演算法,要支持起來沒有技術難度。性能:比GIF更高的壓縮比。支持更多色彩、支持alpha通道)比起GIF特性上簡直是完勝,但是都快10年了就是沒有流行起來(只有火狐和新的Safari支持 支持APNG的瀏覽器,也沒有幾個網站會用APNG)。就是派系鬥爭的結果,PNG開發組不願意接受這個格式,而且巨頭也各有各的想法,Mozilla堅持自己的APNG而谷歌堅持自己的Animated WebP。。。
-
看起來基於HEVC 的新格式 BPG 在性能上能好於老舊的JPEG和新近的webP、JPEG XR,是這幾種格式中最好的(圖表中mozjpeg是新演算法壓縮的jpeg,還是屬於jpeg格式)
Lossy Compressed Image Formats Study (July 2014)

Y-SSIM評分

不過要流行起來....
微軟的 JPEG XR 和谷歌的 webP(現在的) 都比 JPEG 先進,推廣很多年了,但都沒流行起來....
一種格式要流行起來還是取決於巨頭的推廣,但是巨頭自己都心懷鬼胎,想不出什麼理由讓谷歌放棄自己的webP,微軟放棄自己的 JPEG XR....

現在看BPG能否流行起來還為時過早,因為它才剛發布不久,但是如果不能進入網頁標準讓各瀏覽器支持那就沒法流行起來,而瀏覽器上各巨頭自己的格式之戰都還沒分高下....桌面上對圖片體積敏感度較小而且操作系統也由巨頭把持....
不過BPG這種新格式對開源很友好、性能突出可能會成為軟體開發者小眾範圍內流行的格式。

而且我想不僅僅BPG應該還會有更多基於 HEVC 的圖片格式出現,如果真的基於 HEVC 的圖片格式沒有專利和許可證問題(jpeg 2000就是死於專利問題),那各巨頭可能就自己開發一個新的基於HEVC的格式然後.....


謝邀。

有損壓縮有不少比JPEG好。
舉個簡單的例子,比如存在很久的JPEG2000增強局部細節。

但是,這類文件有個最大的弊端:兼容性差。
對於有損圖像壓縮存儲,在日常應用上JPEG已經做得足夠好了。建好的高樓,就算舊了,不是說拆舊拆。

所以,我覺得徹底取代幾乎不可能,但是如果演算法效率夠高效果夠好,在部分領域有不錯的前景(比如網頁遊戲)。


政治問題只能政治解決,技術只能解決技術問題。


不要過早優化。

除非圖片的大小已經成為了瓶頸,否則在這種地方做優化,帶來的好處微乎其微,還會帶來各種問題,變相的增加了成本。

實際應用中很少會遇到這樣的情況,那麼JPEG庫在各種環境都是現成的,而且比較穩定,直接拖來用就是了。


關於BPG本身的評價已經夠充分了,我向大家稍稍介紹一下這個牛逼的作者:Fabrice Bellard
他做過很多小眾的(指的是直接用戶)但非常牛逼軟體,下面列舉幾個:
FFASN1:ASN.1的編譯器,產生對應的編碼解碼器的C代碼。
JSLINUX:純Javascript實現的X86模擬器,可以跑起Linux來。
Bellard公式,計算pi用的,用這個公式,他在2009年打破了計算pi的世界記錄,設備是一台不到$3000的桌面電腦,而之前的記錄是用幾百萬美元的超級計算機算的。
QEMU:在Linux上用過X86模擬器的應該很熟悉。
FFMPEG:這個用戶超級多,但是直接用戶還是小眾。
Tiny C Compiler:其中一個Bootloader版可以在15秒內編譯Linux內核源代碼並啟動系統。
BPG:包裝了HEVC的intra-frame的演算法,同時作者還寫了一個gzip後56k的javascript解碼庫。

BPG的代碼是BSD協議的,除了HEVC在某些國家會出現的專利問題外,沒有理由這個格式不會火起來。


如果不解決專利問題,那麼肯定不會。


近來,視頻圖像編碼領域真是熱鬧,各方登場推銷各自標準,互不買賬。至於哪個標準勝出,技術只是一方面,贏得各方各面廣泛支持才是最關鍵。BPG格式推出能贏得哪些公司支持呢?
按照Fabrice Bellard的說法,BPG是HEVC的子集,只是將HEVC(H.265)用於視頻的頭信息換成更加精簡的BPG圖像頭信息,也就是說BPG本質上採用HEVC的技術,符合HEVC規範。
HEVC作為國際標準,是需要收取專利費用的,由MPEG-LA成立專利池統一管理(當然也有些企業不願將專利放進池子中),下圖是MPEG-LA關於HEVC的收費標準,超過10萬個單位的每個收取0.2美元專利費,一個企業收費上限是2500萬美金。

Fabrice Bellard也BPG網頁上聲明"Some of the HEVC algorithms may be protected by patents in some countries. Most devices already include or will include hardware HEVC support, so we suggest to use it if patents are an issue." 也就是說,只有交了HEVC專利費的,使用BPG才不用考慮二次收費。
在專利費面前,我們看看巨頭的態度。
首先是google,不提在推自身的WebP標準,要讓andoid系統、chroma天然支持BPG,就得收專利費(軟體的專利費是否按裝機數量收還請業內人士補充回答),這麼大的使用量,2500萬美元立即飛了,google不會答應。
再看看微軟,同樣微軟有jpeg jxr,操作系統本身支持又得繳費,也不會幹。
其次是蘋果,蘋果估計會站在HEVC陣營,但是要想讓蘋果支持一個開源軟體,難度有點大。
也就是說,幾大操作系統巨頭對BPG都不是很有興趣,要想說取代JPG,現在看來還是「路漫漫其修遠兮」。
=======================================
歡迎業內人士討論。


同為有損壓縮,webp格式都比你這個成熟吧,何況jpg/jpeg/jpeg2000這麼成熟的體系。



謝邀,要我說很難。
你看rmvb過時多久了,現在各種盜版電影依舊是rmvb滿天飛。


不謝腰。
按照慣式思維,如樓上幾位所舉的栗子,BPG似乎沒有機會。
但我認為也未必。
這或許依賴一些大廠的態度和信息技術的趨勢。
Flash如日中天的時候,沒有人可以預料到蘋果將不會支持這種格式。
Html5標準也是在歷經8年後才制定出來。如果不是智能機最近3、4年快速發展,h5比起h4仍舊沒有什麼獨特應用場景。


jpg很難被取代,webp有谷歌這麼大力的推不也推廣的很難么

之前有個博士專搞圖像演算法研究的,只是改進了一下jpeg的實現,結果在實際應用中還經常出現不兼容的情況,更別說弄一下新的格式了

實際中圖片的壓縮演算法的研究一直沒有停過,有很多演算法比目前流行的這些演算法要強的多,目前公開出來的這些演算法都是各種妥協的結果.


先解決HEVC的專利問題先


所謂格式,軟體,系統這些東西,不光要看好不好,還要看兼容性和普及度


這圖就是廣告插頁雙顯卡系統?兩家公司畫一幅截取50%後,給自動合成演算法找麻煩?


兼容嗎?


這麼多年出了這麼多不同的各有優異的格式,但是要成為普及型,路還長的很,我覺得要普及難度甚至超過技術


從兼容性來講要代替jpg還需要很長的路,但是如果能順利搭上hevc的便車的話也可能很快,小體積高質量其實只是一個方面,我們看到bpg很多其它的特性的支持,比如 支持到14bit 攝影的好幫手啊直出也可後期、支持動畫 代替只有256色的gif、 支持無損和半透明通道 png也要抖三抖。可見綜合實力超越webp。


睡前稍微看了一分鐘,前面看問題的思路都不對。不論jpg還是bpg,都只是某代或某種運動圖像編碼演算法其中靜幀圖像編碼子集的一種數據容器而已。到底選什麼容器,決定性的是運動圖像編碼採用何種演算法,而運動圖像編碼演算法一旦確定,則意味著整個視頻行業的軟硬體升級換代。bpg中使用的HEVC演算法,確實是目前流行演算法中最為優秀的,看趨勢勝出可能性也比較大。流行的靜幀容器,不可能脫離運動圖像的壓縮編碼演算法。如果運動圖像編碼演算法全面使用HEVC,採用BPG則是必然的。以前由於網路傳輸環境的改善和硬體水平提升較快,對於靜幀圖像的性能要求沒有那麼迫切,才使得jpg能用了將近20年。但隨著移動互聯網讀圖和視頻監控設備快照存檔的要求,bpg明顯生得其時。

另外附上HEVC簡介http://en.m.wikipedia.org/wiki/High_Efficiency_Video_Coding


感覺不會被替代的,畢竟我曾經一直堅定地認為JPG是JaPanese Girl的縮寫。


說兩句J2K 在媒體上的應用。HEVC現在多是software encoding, latency is around 5s which restricts its applications. J2K is widely used as a Mez encoding format for broadcast signals, for example 1080i picture is normally coded around 200Mbps to protect the image quality and latency is a couple of frames.

現在還有些更新的壓縮編碼,比如VC-2, TICO等,都是super low latency, 多半只有幾行的延遲。

說到底,壓縮的編碼不是DCT 就是小波,換來換去,基本框架不變。


推薦閱讀:

請問怎麼調出這樣色調非常神秘的照片?
偶然看到這張圖,問一下這種效果怎麼做?

TAG:AdobePhotoshop | 圖像處理 | 圖像壓縮 | RAW原始圖像文件 |