2017-06-03 30 views
2

我正在研究圖像壓縮技術和分析最佳算法,這些算法可以在100 ms或更短的時間內爲具有八核處理器的筆記本電腦上的分辨率爲1920 * 1080的圖像生成較小的輸出通過網絡傳輸。LibWebP花費太多時間進行圖像壓縮

我一直在使用GDI +和CxImage庫來進行圖像壓縮,通過JPG或PNG壓縮技術,可以在30毫秒左右爲JPG和70毫秒左右的圖像使用PNG格式輸出圖像,所需時間相當不錯,但是如果我爲了更好的質量而壓縮的數據大小要高得多。

然後我遇到了谷歌的WebP格式。我嘗試使用libWebP與VC++。質量和壓縮率真的很棒,但所花費的時間遠遠高於我的預期。如果我將alpha濾波和alpha壓縮設置爲true,則需要超過300 ms和sime時間甚至超過1秒。

這裏是我的WebpConfig設置

m_webp_config.quality   = 50; 
    m_webp_config.alpha_quality  = 0; 
    m_webp_config.lossless   = false; 
    m_webp_config.method   = 3; 
    m_webp_config.alpha_compression = false; 
    m_webp_config.alpha_filtering = false; 
    m_webp_config.autofilter  = false; 
    m_webp_config.filter_sharpness = false; 
    m_webp_config.filter_strength = 0; 
    m_webp_config.filter_type  = 0; 
    m_webp_config.use_sharp_yuv  = false; 

有時我得到每當我捕捉命令提示符或記事本+ +(我懷疑問題是與大量的文字數據,但同樣的這些圖像黑色圖像是不正確的與具有大量文字的網頁)

我在做WebPConfig的任何問題嗎?有沒有一種方法來優化它?

我沒有找到太多的文檔和任何論壇,可以給我一些這些問題的想法。

任何幫助,將不勝感激。提前致謝。

回答

1

試試無損壓縮?可以存在比有損耗更快的無損模式。

如果您正在控制壓縮和解壓縮,請將圖像分成256x256格,然後分別壓縮併發送。這樣,您不僅可以並行化計算,還可以在壓縮過程中交錯部分傳輸,這可以簡化壓縮計算的時間預算。

如果您減少'方法'值,您通常會發現更快的WebP壓縮。對於無損,您需要減少BOTH方法和質量,它們以複雜的方式控制相同的事物。對於無損,嘗試質量20和方法1(或者也可能有一個0方法,不記得)。

+2

謝謝@Jyrki Alakuijala你的建議似乎是可行的。我嘗試將圖像分成較小的圖像和並行壓縮邏輯。取得好成績。 – Ram