2011-01-31 147 views
1

我有一個DICOM圖像,我正在使用C#讀取並將其轉換爲16位位圖。位圖被創建,但圖像具有DICOM疊加層。我想在創建最終的dicom位圖時將覆蓋圖刻錄到位圖中。我無法做到這一點。 有什麼幫助嗎?DICOM和DICOM覆蓋問題

一種方法是創建覆蓋數據的位圖併合並2位圖,但我無法將覆蓋數據也作爲位圖獲取。 我已經捕獲了二進制覆蓋數據,但是如何將其刻錄成位圖?

感謝

+0

目前尚不十分清楚你想要完成什麼:你需要一個帶覆蓋層的DICOM文件,或者是一個可以覆蓋覆蓋層的位圖? – ruslik 2011-01-31 03:11:49

+0

我需要帶覆蓋的DICOM文件的位圖 – user596268 2011-01-31 20:15:22

+0

因此,您需要知道如何將OverlayDaya解壓縮爲位圖等的可用字節。 – zezba9000 2011-02-23 16:19:14

回答

2

DICOM覆蓋是一個簡單的圖蒙版。渲染圖像時,我會建議只遍歷像素,並且在將像素設置爲白色的情況下。

在灰度圖像的情況下,您必須檢查光度解釋以查看它是MONOCHROME1還是MONOCHROME2。然後您必須檢查分配的位數以查看最大像素值是多少,並強制將疊加層設置爲該值的像素值(例如MONOCHROME1圖像)。在MONOCHROME2圖像的情況下,您必須將啓用疊加層的像素設置爲最小像素值。

在彩色圖像的情況下,您可以將像素更改爲特定顏色,或者如果需要將圖像更改爲白色,以便顯示疊加層。

4

有兩種類型的疊加層:

1)燒屏:是原來的一個。它使用單色像素數據的較高位(在像素範圍之外,例如,當BitsAllocated是16並且BitsStored是12時,每個像素有4個未使用的位(位12..15),可用於我不確定它是如何處理簽名圖像的
請注意,沒有標籤指定圖像是否有這樣的覆蓋(有一個名爲Burned In Annnotation(0028,0301)的標籤,但它意味着其他)

2)覆蓋模塊:一系列標記(組0x600xx)被保留用於覆蓋。每個這樣的組包含幾個標籤以及每個像素1位的位圖,其中1表示存在重疊。
請注意,它不是標準的GDI位圖,行在DWORD邊界上不對齊! (我不確定它是否使用相同的位字節序列。)

DICOM圖像可以有幾個(最多16個)這樣的覆蓋。有關確切規格,請參閱標準的第3部分。

1

重疊平面總是每像素1比特,其中Overlay Bits Allocated是1和Overlay Bits Position (60XX, 0102)總是0。一個位覆蓋數據從Pixel Data元件單獨編碼和Overlay Data (60XX, 3000)元件被用於存儲數據。覆蓋數據元素的值表示是OW。但是,OB可用於顯式VR編碼。

根據PS 3.5 of DICOM standard section 8.1.2,「Overlay Data被編碼爲單個Overlay Plane的比特的直接級聯,其中Overlay Plane的第一個比特被編碼在最低有效位中,緊接着是下一個比特重疊平面在下一個最重要的位。當覆蓋數據跨越OW情況下的字邊界或OB情況下的字節邊界時,它將繼續被編碼,分別在下一個字或字節中被編碼,最低有效位到最高有效位。

2字節字(OW的VR)的字節排序由編碼中使用的字節序排列。因此,在行邊界處沒有使用填充,並且從左到右和從上到下進行編碼,在覆蓋位1是覆蓋平面(左上像素)的第一位的時候是一行。

形式上疊加數據被允許被嵌入的Pixel Data (7FE0, 0010)Overlay Bit Position (60XX, 0102)未使用的位被用於指示在其中疊加數據保存中的像素數據的未使用比特。在這種類型的編碼中,Overlay Bits Allocated (60XX, 0100)應該具有與Image Pixel moduleBits Allocated (0028, 0100)屬性相同的值。大於1的值Overlay Bits Allocated表示疊加數據嵌入像素數據中。

偶數組(6000-601F,eeee)用於覆蓋平面編碼,數據集每個圖像最多可以有16個覆蓋圖。