Hi, I am trying to use ExtractDirectedPlaneImageFilterNew extract a 2D image from a 3D image volume (309 547 478). I only can get 2D slice I want along the z-axis like I did in following code. If I initialize the slice plane to "Sagittal", nothing is shown on rendering window, no matter what number I put in third parameter of InitializeStandardPlane. I also tried to rotate the 2D plane to some special location, but I found only plane vector in (0,0,1) can generate slice image. Does anyone know what is wrong with my operation?
const char * filename = argv[1]; // open data mitk::DataNodeFactory::Pointer nodeReader = mitk::DataNodeFactory::New(); nodeReader->SetFileName(filename); nodeReader->Update(); // image mitk::Image::Pointer image = dynamic_cast<mitk::Image*> nodeReader->GetOutput()->GetData(); // Spacing mitk::Vector3D spacing; spacing.Fill(1.0); // Origin mitk::Point3D ori; ori.Fill(0); //Bounding box - set 309 547 478 mitk::BoundingBox::BoundsArrayType boundingBox; boundingBox.Fill(0); boundingBox[1]=image->GetDimension(0); boundingBox[3]=image->GetDimension(1); boundingBox[5]=image->GetDimension(2); //Geometry 3D mitk::Geometry3D::Pointer geo3D = mitk::Geometry3D::New(); geo3D->SetOrigin(ori); geo3D->SetIdentity(); geo3D->SetSpacing(spacing); geo3D->SetBounds(boundingBox); //Plane mitk::PlaneGeometry::Pointer planeGeo = mitk::PlaneGeometry::New(); planeGeo->InitializeStandardPlane(geo3D,mitk::PlaneGeometry::PlaneOrientation::Transversal,100); planeGeo->ChangeImageGeometryConsideringOriginOffset(true); //filter mitk::ExtractDirectedPlaneImageFilterNew::Pointer extractFilter = mitk::ExtractDirectedPlaneImageFilterNew::New(); extractFilter->SetInput(image); extractFilter->SetCurrentWorldGeometry2D(planeGeo); extractFilter->SetImageGeometry(geo3D); extractFilter->Update(); mitk::Image::Pointer slice = extractFilter->GetOutput(); // rendering mitk::DataNode::Pointer node = mitk::DataNode::New(); node->SetData(slice); mitk::StandaloneDataStorage::Pointer DataStorage = mitk::StandaloneDataStorage::New(); DataStorage->Add(node); QmitkRenderWindow* renderWindow = new QmitkRenderWindow(this); renderWindow->GetRenderer()->SetDataStorage(DataStorage); Thanks Li ------------------------------------------------------------------------------ Better than sec? Nothing is better than sec when it comes to monitoring Big Data applications. Try Boundary one-second resolution app monitoring today. Free. http://p.sf.net/sfu/Boundary-dev2dev _______________________________________________ mitk-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/mitk-users
