Я новичок в программировании на vtk, и у меня возникли некоторые проблемы. У меня есть изображения DICOM и координаты для каждого из изображений.Я хочу преобразовать эти координаты в координаты VTK.
Например;
Это в координатах DICOM.(0020,0032) Положение изображения (пациент):
-236.894000 \ -203.378900 \ -1219.400000
(0020,0037) Ориентация изображения (пациент): 1,000000 \ 0,000000 \ 0,000000 \ 0,000000 \1,000000 \ 0,000000 (0028,0030)
(0028,0030) Интервал между пикселями: 0,468749 \ 0,468756
(0020,1041) Расположение среза: 228,20
MyВопрос в следующем:
Есть ли способ включить любой из этих тегов и преобразовать значения (0020,0032) в мировую координату VTK, чтобы я мог установить преобразованное значение в vtkImageActor's SetPosition () или SetDisplayExtent () функция.
Возможно ли это?
Что я пробовал
void vtkInteractorObserver::ComputeDisplayToWorld(vtkRenderer *ren,
double x,
double y,
double z,
double worldPt[4])
{
ren->SetDisplayPoint(x, y, z);//I gave the Image position patient values as x,y and z
ren->DisplayToWorld();
ren->GetWorldPoint(worldPt);
if (worldPt[3])
{
worldPt[0] /= worldPt[3];
worldPt[1] /= worldPt[3];
worldPt[2] /= worldPt[3];
worldPt[3] = 1.0;
}
}
//----------------------------------------------------------------------------
// Description:
// Transform from world to display coordinates.
// displayPt has to be allocated as 3 vector
void vtkInteractorObserver::ComputeWorldToDisplay(vtkRenderer *ren,
double x,
double y,
double z,
double displayPt[3])
{
ren->SetWorldPoint(x, y, z, 1.0);
ren->WorldToDisplay();
ren->GetDisplayPoint(displayPt);
}
РЕДАКТИРОВАТЬ
Если для этого есть какие-либо математические вычисления, это также более чем достаточно для меня. Я также сослался на эти две ссылки: https://www.slicer.org/wiki/Coordinate_systems и
http://vtk.1045678.n5.nabble.com/Correct-coordinate-transformations-for-DICOM-data-set-td5728309.html но я не получил ясного понимания.