У меня есть ряд DICOM, с последующим происхождения, интервал и размер:Знаете номер ломтика?
int nExtent[6];
double dSpacing[3];
double dOrigin[3];
m_pReader->GetOutputInformation(0)->Get(vtkStreamingDemandDrivenPipeline::WHOLE_EXTENT(), nExtent);
m_pReader->GetOutput()->GetSpacing(dSpacing);
m_pReader->GetOutput()->GetOrigin(dOrigin);
где m_pReader является объектом vtkDICOMReader ...
dOrigin является 0, 0, 0;
dSpacing id 0.447266, 0.447266, 3.998718;
nКонтент является 0, 511, 0, 511, 0, 43;
серия AXIAL. Теперь, если я нарежьте серию через план ОСЕВЫМ, я мог бы порезать серии 44 ломтиков, так:
double deltaY = 0.0;
delta += 1.0;
pReslice->Update();
double dSliceSpacing = pReslice->GetOutput()->GetSpacing()[2];
vtkMatrix4x4* pMatrix = pReslice->GetResliceAxes();
// move the dCenter dPoint that we are slicing through
double dPoint[4];
double dCenter[4];
dPoint[0] = 0.0;
dPoint[1] = 0.0;
dPoint[2] = dSliceSpacing * deltaY;
dPoint[3] = 1.0;
pMatrix->MultiplyPoint(dPoint, dCenter);
pMatrix->SetElement(0, 3, dCenter[0]);
pMatrix->SetElement(1, 3, dCenter[1]);
pMatrix->SetElement(2, 3, dCenter[2]);
Все Allright ...
Проблема: если я нарежьте серию через План CORONAL, число ломтиков не 44! Но сколько? Как узнать номер фрагмента, если этот план является CORONAL или SAGITTAL?
Прежде всего, t слов, чтобы поблагодарить вас за вашу поддержку! :) – flaviu2
Во-вторых, я начинаю применять ваш псевдокод ... Я вернусь с обратной связью. – flaviu2