vtk プログラムについての質問です。
3D MRI と 3D US 画像の間で厳密な位置合わせを行っています。米国のデータのサイズは、MRI よりもはるかに大きくなります。最初に、両方の画像の同じ臓器にあるランドマークをいくつか取得します。次に、「vtkLandmarkTransform」を使用して、これらのランドマーク ポイント間の変換を取得します。最後に、「vtkImageReslice」を使用して MRI データに変換を適用します。それで、膨大な MRI データを取得します。
新しい MRI データを US 画像と同じサイズにし、US 画像と同じ臓器の位置を表示するには、どうすれば膨大なデータを切り取ることができますか?
Hers's my code
vtkSmartPointer<vtkPoints> sourcePoints = vtkSmartPointer<vtkPoints>::New();//Input source points
for ( int t = 0; t < 6; t++ )
{
float sourcePoint[3] = {inital_points_mri[t][0], inital_points_mri[t][1], inital_points_mri[t][2]};
sourcePoints->InsertNextPoint(sourcePoint);
}
vtkSmartPointer<vtkPoints> targetPoints = vtkSmartPointer<vtkPoints>::New();//Input target points
for ( int t = 0; t < 6; t++ )
{
float targetPoint[3] = {inital_points_us[t][0], inital_points_us[t][1], inital_points_us[t][2]};
targetPoints->InsertNextPoint(targetPoint);
}
vtkSmartPointer<vtkLandmarkTransform> landmarkTransform = vtkSmartPointer<vtkLandmarkTransform>::New();//get landmark transform
landmarkTransform->SetSourceLandmarks(sourcePoints);
landmarkTransform->SetTargetLandmarks(targetPoints);
landmarkTransform->SetModeToSimilarity ();
landmarkTransform->Update();
vtkSmartPointer<vtkImageReslice> transform2 = vtkSmartPointer<vtkImageReslice>::New(); // Apply transform
transform2->SetInput(MRIimagedata); // Input MRI image
transform2->AutoCropOutputOn(); // I'm not sure I need it or not?
// transform2->SetOutputExtent(0,499,0,489,0,358); // set the extent as US data, but can't get the same organ position
landmarkTransform->Inverse();
transform2->SetResliceTransform(landmarkTransform);
transform2->Update();
vtkImageData* transformImage = transform2->GetOutput();
ご清聴ありがとうございました。