Способ установки значения тега положения изображения (пациента) среза DICOM - PullRequest
4 голосов
/ 19 марта 2019

Есть ли способ установить значение Image Position (patient) тега среза DICOM с помощью DCMTK.

Подробное объяснение

У меня есть

enter image description here

В этом окне пользователь должен ввести значения x, y и z тега ImagePosition(patient) в срез DICOM, который должен найти пользователь.

Я возьму эти значения x, y, z в некоторой переменной, скажем, xval,yval,zval.

И теперь мне нужно установить эти значения в DICOMImageReader readerили с использованием любой переменной VTK (например, vtkMarchingSquares или vtkClipper или vtkPlane ..etc) , чтобы я мог либо показать, либо вырезать , где находится соответствующий срез, в выводе, отображаемом в 3D.

Мой вопрос понятен?Есть ли какой-нибудь возможный способ?

То, что я пробовал

1.Чтобы вырезать соответствующий фрагмент в выводе 3D-визуализации

Я пытался использовать vtkClipPolyData1 clipper, как показано ниже

plane->SetOrigin(0,0,0);//vtkPlane//
plane->SetNormal(xval,yval,zval);
clipper->SetClipFunction(plane);

Но это не работает.Я также пытался [не знаю, правильно ли это или неправильно]

  double a=(double)(xval)/100;
  double b=(double)(yval)/100;
  double c =(double)(zval)/100;
 clipper->SetNormal(a,b,c);

, но этот код не обрезает точную позицию, он обрезается где-то еще.

2.Чтобы показать соответствующий фрагмент в 3d-рендеринге вывода

 vtkSmartPointer<vtkLookupTable> bwLut =vtkSmartPointer<vtkLookupTable>::New();
 bwLut->SetTableRange (0, 2000);
 bwLut->SetSaturationRange (0, 0);
 bwLut->SetHueRange (0, 0);
 bwLut->SetValueRange (0, 1);
 bwLut->Build();

  vtkSmartPointer<vtkImageMapToColors> sagittalColors =
  vtkSmartPointer<vtkImageMapToColors>::New();
  sagittalColors->SetInputConnection(reader->GetOutputPort());
  sagittalColors->SetLookupTable(bwLut);
  sagittalColors->Update();

vtkSmartPointer<vtkImageActor> sagittal =vtkSmartPointer<vtkImageActor>::New();
  sagittal->GetMapper()>SetInputConnection(sagittalColors->GetOutputPort());
  sagittal->SetPosition(xval,yval,zval);//this is where i put the values//

Кто-нибудь может помочь, пожалуйста?

...