無損壓縮相似影像?

無損壓縮相似影像?

我需要減小照片庫的大小,所以我自然想要壓縮它們。其中許多並不完全相同,但仍然非常相似(同一場景的後續鏡頭)。有沒有什麼壓縮演算法可以利用這一事實來有效地壓縮這些圖像? 7zip (LZMA) 沒用。

答案1

你可以嘗試帕克8號(fp8_v2.zip)。我自己在 1440 個相似的 PNG 圖像上嘗試過,然後又在 111 個相似的 JPG 圖像上嘗試過。這是結果。

  • 1440 個 PNG 文件,28,631,615 位元組 => 壓縮後 2,058,653 位元組
  • 111 個 JPG 文件,15,003,820 位元組 => 壓縮後 489,096 位元組

使用以下命令時,PNG 檔案的壓縮大約需要 8 分鐘和 550 MB 記憶體:

fp8_v2.exe -7 images *.png

使用以下命令時,JPG 檔案的壓縮大約需要 5 分鐘和 125 MB 記憶體:

fp8_v2.exe -5 images image12*.jpg

也可以看看:jpg無損圖片壓縮測試

答案2

這是一個簡單的解決方案,不適用於照片,但如果有多個圖像具有大的逐像素相同區域,則可能會起作用:以BMP(不是PNG 或GIF)等未打包格式保存圖像,然後TAR並壓縮它們使用像 XZ 這樣的不錯的壓縮器,例如在 Linux 上使用類似的東西

tar -c myDirectory | xz -9 >myDirectory.tar.xz

可以使用帶有“solid archive”選項的 7-Zip 來代替 TAR 和 XZ,以獲得大致相同的性能。這樣,我可以將 16 個類似的螢幕截圖(保存為單獨的 PNG 檔案時每個大約 900 KB)壓縮到 2 MB 的檔案中。此解決方案的優點是它使用通用檔案格式,因此無需安裝新軟體即可運行。 (不幸的是,較舊且更常見的程式 GZIP 和 BZIP2 對我來說效果不佳 - 可能是因為 BZIP2 的區塊大小無法配置為大於 900 KB。)

答案3

我想,如果有足夠大的窗口,使用算術編碼器進行的 burrows-wheeler 變換將是理想的選擇。如果您將 BZIP2 配置為使用等於一小批照片的區塊大小,會發生什麼?它會更慢並佔用更多內存,但壓縮率應該會飆升。您是否嘗試過具有更大區塊大小的 LZMA?

答案4

不是我見過的。最接近的可能是採用幾個相似的 JPEG 並將它們放入 MJPEG 電影中。您也可以使用 APNG 或動畫 GIF 來實現類似的目的。

我不確定這效果如何,聽起來你已經在談論電影截圖了,所以將它們重新打包到電影文件中聽起來......適得其反。

如果您仍然擁有螢幕來源的剪輯,也許更好的方法是簡單地找到一個命令列工具,該工具可以為您提取確切的幀,將該唯一標識符複製到文字檔案中的某個位置,然後您隨時可以當您需要時可以輕鬆地重新提取框架。

相關內容