2016-07-15 104 views
2

我有一個關於DICOM標準和libjpeg庫的問題。 在DICOM標準中,有,除其他外,傳輸語法:libjpeg和無損JPEG

JPEG無損,非分層,一階預測 (流程14 [選擇值1]): 默認傳輸語法無損JPEG圖像壓縮

據我所知,這個傳輸語法符合JPEG-1 Lossles格式。 我開始研究的libjpeg庫,我發現它不支持無損JPEG,如前所述這裏(?):JPEG Lossless in DICOM

此外,libjpeg的文檔中有一個說法部分:

不支持 ISO選項包括: *分層存儲 * 無損JPEG * DNL標記 *非整數比率的子採樣

然而,在庫中的代碼,在壓縮參數結構jpeg_compress_struct有一個字段:

boolean lossless;  /* TRUE=lossless encoding, FALSE=lossy */ 

什麼是意味着什麼?我很困惑。任何人都可以描述圖書館支持哪些JPEG標準?此外,如何設置壓縮參數以與DICOM JPEG無損標準兼容?

+0

看來,libjpeg的支持無損模式(JPEG-LS),這是不同的來自您正在使用的無損JPEG。除DICOM庫外,我還沒有看到此編解碼器的任何實現。我寫了自己的文章,其實很簡單。 – BitBank

+0

你確定libjpeg支持JPEG-LS嗎?我認爲這是後來對JPEG和libjpeg的修改 - 據我所知 - 支持「基本」的一個 – Artyshan

+0

我不是100%確定,但我沒有看到任何看起來會幫助你的東西。事實是,解碼DICOM無損JPEG需要大約100行C代碼(用於特定的無損算法)。這與使用濾波方法的PNG和使用最大長度爲16的霍夫曼代碼編碼的增量值類似。 – BitBank

回答

1

讓我們先在這裏做一些說明。您應該從最着名的JPEG 6b(aka 62)版本開始。首先閱讀here的代碼。你會發現沒有提及你的boolean lossless。的libjpeg 6b是基準代碼庫投放兩個叉:

  • 圭Vollbeding(IJG維護者):的libjpeg 7和向上與著名SmartScale擴展
  • dcommander的libjpeg渦輪,特別是讀取here的評論。

因此,如果這是您所說的libjpeg,那麼是的它不支持標準中指定的無損模式。 Ken Murchison創建了無損補丁,您仍應該能夠找到它(例如,here)。它應該直接應用於libjpeg 6b。如果你不想自己修補lib,可以快速查看GDCM和or DCMTK,因爲它們都使用libjpeg +着名的無損補丁(帶有一些補丁,感謝DCMTK團隊)的便利副本。

在這一點上,這應該回答你的問題。

有關的libjpeg(IJG)和libjpeg的渦輪增壓的信息的進一步細節,我建議你讀出的信息:


如果你還在讀書,我申請你也有快速瀏覽另一個圖書館(故意)也叫libjpeg,在這裏看到github。特別要查看README文件(here)。而且您會發現這個libjpeg是ITU 81的全面實施(有損,無損,8/12/16位,甚至是全部在單個代碼中的分層結構,無需進行多次編譯!)。

以及物品是否完整,我發現下面的鏈接非常有用:

+0

謝謝,你澄清它:) – Artyshan