2017-03-20 87 views
1

我正在嘗試沿軌跡獲取HU值。使用Matlab在網格文件上計算目標座標和該目標的切線(因此爲軌跡),給出一組xyz座標和方向矢量(切線)。然後,我使用ITK在C++中加載dicom文件(從中提取網格,但不是用於獲取網格的二進制蒙版本身)。然後,我使用功能image->TransformPhysicalPointToIndex(point, pixelIndex);。我讀取目標的目標x,y,z座標,並構建一個雙[3]向量,座標距離目標每隔0.02mm,距離目標2mm。當我調用函數image->TransformPhysicalPointToIndex(point, pixelIndex);時,它總是返回false,因爲點不在圖像中。 因此,在默認值之後,我將圖像原點更改爲元數據中的值,標記爲(0020 | 0032)圖像位置(患者)= -3.125-12 \ 13.125使用ITK將物理點轉換爲索引

由此,所有物理點位於圖像中,但HU值錯誤(像素索引位於左上角,而不是右下角)。 任何人都可以讓我知道我需要遵循的步驟來完成這項任務嗎?

+0

@blowekamp可能會對此有所瞭解嗎? –

回答

0

您可以通過將每行向量乘以-1來反轉ImageDirections。但是您還需要將原點移到右下角以保持物理圖像範圍相同。

+0

我怎樣才能將原點置於右下方?是否需要改變原點/間距以達到我的目的或是否有解決方法? –

+1

您可以計算圖像的範圍(間距*大小),並像這樣修改原點:origin + = extent * directionVector。使用GetOrigin()和SetOrigin()。顯然,這需要爲每個座標完成。 但是你的問題似乎是Matlab代碼沒有正確地尊重DICOM病人空間(物理空間),你最好修復它。 –

+0

我實際上做到了這一點,如果標籤_pixel spacing_右空格?我似乎無法弄清楚哪個標籤是深度的更好衡量標準? –

相關問題