2015-06-22 90 views
0

衆所周知,JPEG解碼處理中示出了以下內容:不同的JPEG類型對不同的JPEG解碼子過程有何影響?

  • VLD - 可變長度解碼,
  • ZZ - Z字形掃描,
  • DQ - 逆量化,
  • IDCT - 逆離散餘弦變換,
  • 顏色轉換(YUV到RGB)和重新排序。

我的問題是:對於不同的JPEG圖像不同的字符,上面的哪個解碼過程會花費更多的時間?

例如:

對於具有噪聲這種類型的圖像的,其中,上述五個過程中會花費相對較多的時間進行解碼?

又如:

對於雙相同的圖像機智不同的質量,上述5個進程中的哪一個具有更高質量的解碼圖像時需要更多的時間?

+0

對於完全SIMD優化的JPEG編碼器或解碼器,熵解碼/編碼是最耗時的部分。表查找和可變長度代碼訪問不能被矢量化(用SIMD進行優化),並最終花費大部分時間。 – BitBank

+0

還有一個想法 - 漸進式JPEG圖像需要更長的時間進行編碼和解碼,因爲在生成最終輸出之前,整個圖像的MCU必須保存在內存中。它比基準編碼圖像導致更多的緩存未命中。 – BitBank

+0

目前我只考慮基線jpeg。我只想知道在哪個過程中,圖像中的噪音會產生最大的影響。 – fluency03

回答

0

JPEG往往與大小(時間)線性壓縮。影響解碼時間的主要因素是您是使用順序掃描還是逐行掃描。在順序中,每個組件都被處理一次。在漸進式方面,每個組件至少有2個,可能多達500個(但這是荒謬的)。

爲了您的具體問題:

VLD - 變長解碼,

這取決於你是否做一次(連續)或多次(逐行掃描)

ZZ - 鋸齒掃描

容易做到。數組索引。

DQ - 反量子

取決於你有多少次這樣做。一次爲順序。它可以進行多次累進(但不需要,除非你想在屏幕上持續更新)。

IDCT - 逆離散餘弦變換,

這在很大程度上取決於該算法中所使用,無論是使用比例整數或浮動完成,並且如果它是向下多次(如可以(或可能不會)用逐行JPEG完成)

顏色轉換(YUV到RGB)和重新排序。

你只需要做一次。但是,如果有采樣,則會變得更加複雜。

換句話說,無論圖像是什麼,解碼時間都是相同的。但是,解碼時間取決於該圖像的編碼方式。

我認爲這是因爲讀取磁盤時間較短的文件傾向於比較大的文件更快解碼。數據越隨機,文件往往越大。由於文件大小的原因,讀取和顯示大型BMP文件通常需要更多的時間,而不是相同圖像的JPEG。