2017-03-20 1 views
1

궤도를 따라 HU 값을 얻으려고합니다. 목표 좌표와이 목표에 대한 탄젠트 (따라서 궤적)는 메쉬 파일의 Matlab을 사용하여 계산되어 xyz 좌표와 방향 벡터 (탄젠트) 세트를 제공합니다. 그런 다음, ITK를 사용하여 C++에서 dicom 파일 (메쉬를 추출했지만 Mesh를 얻는 데 사용 된 바이너리 마스크 자체가 아닌)을로드합니다. 그런 다음 함수 image->TransformPhysicalPointToIndex(point, pixelIndex);을 사용했습니다. 나는 목표의 x, y, z 좌표를 읽고 목표로부터 0.02 mm가 될 때까지 좌표로부터 두 mm의 벡터를 구성한다. 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

실제로 정확히 그랬 으면, spacingsize 태그 _pixel spacing_ 맞습니까? 내가 파악할 수없는 것은 어느 태그가 깊이를 더 잘 측정 하는가하는 것입니다. –

관련 문제