我正在查看將多個JPEG圖像作爲單個較大圖像一起存儲時,減少存儲空間的問題。基本的直覺是,圖像往往有一些相似之處(如在同一地點或在同一時間點採取的),我們可以利用這種相似性來節省空間嗎?JPEG圖像壓縮
整個流程是:輸入圖像JPG
- >每個圖像轉換成RGB
圖像平鋪 - >重新組織相似RGB
瓦片一起 - >再次變換到JPG
格式。當然,在檢索圖像時,我們需要反向的過程。
使用Y分量的DC係數作爲瓷磚重組的相似度量,對於10幅圖像我獲得了〜8%的空間節省。當我爲100張圖片做這件事時,節省下降到〜3%。
如何在重新組織後得到儲蓄 - 即JPEG編碼過程的哪個部分利用了此圖像塊重組?
相反Y分量的DC係數,在那裏你能想到的,其他一些指標將通過JPEG編碼來更好地利用
修訂:
有一些其他除JPG以外的圖像格式可以利用這種相似性聚合多個圖像時更好嗎?比如像PNG?
謝謝,這很有道理!我使用libjpeg來進行編碼和解碼。由於JPEG在8x8宏塊內進行DCT,所以瓷磚之間的相似性(大於宏塊)可能沒有多大幫助。但是,我認爲相鄰宏塊的DCT係數是相對編碼的,這可能在一定程度上通過這種塊重組而得到改善。我修改了我的問題 - 請看看。 – user655617 2013-03-08 00:14:09
很高興我能幫助澄清事情。是的,libjpeg是IJG參考JPEG標準的JFIF實現。我不記得使用delta編碼的DCT係數(在相鄰的宏塊之間)。 AFAIR中,每個宏塊都變成一個單一的8x8係數矩陣,然後對其進行抽取(分割以減少存儲它們所需的位數 - 這是有損壓縮中的「損失」來自哪裏),並在zig中讀出時尚。這種排序產生長時間運行的0,它們通過運行長度編碼被有效地壓縮(而不是存儲17個零,我們存儲17,0)。 – 2013-03-08 06:14:10