在我的C#Silverlight應用程序中,我嘗試使用FJCore類庫來解碼壓縮的JPEG傳輸語法中的DICOM圖像。C#:使用Silverlight FJCore庫以12位精度解碼JPEG圖像?
的DICOM圖像通常與12位精度壓縮。當試圖使用原始FJCore源代碼解碼這樣的圖像時,我得到一個異常說「不支持的編解碼器類型」,因爲在最初的FJCore實現中,只有SOF0(基線DCT)和SOF2(逐行DCT)起始幀標記是支持的。如果我改變實現以接受SOF1標記(擴展順序DCT)並且以與SOF0幀相同的方式處理SOF1幀,則圖像被解碼,但僅佔8位。現在
一個典型的12位精度的圖像看起來是這個修改後的FJCore庫解碼後:
理想的情況下,圖像看起來應該是這樣:
據我從FJCore實現中可以看出,圖像精度記錄在JpegFrame類中,但從未使用過。原始的FJCore實現似乎只完全支持8位精度的灰度圖像。
我計劃「由不畏艱險」,並試圖擴大自己對FJCore支持12位精度的灰度圖像。但在此之前,我認爲我應該在StackOverflow中提出問題,以查看是否有人遇到並解決了此問題?在這種情況下,我很樂意瞭解您是如何解決問題的。
非常感謝提前!
Anders @ Cureos
@Hans,很抱歉,您不喜歡我將問題發佈到SO的方式。 在世界上最好的,FJCore將有一個活着的和充滿活力的用戶或開發者論壇,但遺憾的是自2009年初以來 沒有開發或開發者互動的跡象我注意到,FJCore已經在SO討論了幾次(甚至有自己的標籤),所以我藉此機會在這裏發佈我的問題。 我並不是要求某人來完成這項工作,但如果有人知道12位精度問題的開源解決方案,這對我(以及潛在的其他開發人員)會有很大的幫助。 –
在快速查看源代碼之後,似乎編解碼器能夠讀取12位圖像。 看着上面的圖片我會說,VOI/LUT變換必須應用於由FJCore返回的幀 編輯:我正在看圖像,現在它看起來不像VOI/LUT問題了。高位僅被截斷 –
感謝Paolo花時間研究這一點。我懷疑是截斷錯誤;很高興你能夠證實這一點。 –