69 mitk::ToFImageGrabber::Pointer tofImageGrabber = mitk::ToFImageGrabber::New();
70 tofImageGrabber->SetCameraDevice(mitk::ToFCameraMITKPlayerDevice::New());
72 std::string distanceFileName = MITK_TOF_DATA_DIR;
73 distanceFileName.append(
"/PMDCamCube2_MF0_IT0_20Images_DistanceImage.nrrd");
74 std::string amplitudeFileName = MITK_TOF_DATA_DIR;
75 amplitudeFileName.append(
"/PMDCamCube2_MF0_IT0_20Images_AmplitudeImage.nrrd");
76 std::string intensityFileName = MITK_TOF_DATA_DIR;
77 intensityFileName.append(
"/PMDCamCube2_MF0_IT0_20Images_IntensityImage.nrrd");
79 tofImageGrabber->SetProperty(
"DistanceImageFileName",mitk::StringProperty::New(distanceFileName));
80 tofImageGrabber->SetProperty(
"AmplitudeImageFileName",mitk::StringProperty::New(amplitudeFileName));
81 tofImageGrabber->SetProperty(
"IntensityImageFileName",mitk::StringProperty::New(intensityFileName));
83 if (tofImageGrabber->ConnectCamera())
86 tofImageGrabber->StartCamera();
88 tofImageGrabber->Update();
90 mitk::Image::Pointer distanceImage = tofImageGrabber->GetOutput();
92 mitk::Image::Pointer amplitudeImage = tofImageGrabber->GetOutput(1);
94 mitk::Image::Pointer intensityImage = tofImageGrabber->GetOutput(2);
96 mitk::DataNode::Pointer distanceNode = mitk::DataNode::New();
97 distanceNode->SetName(
"Distance Image");
98 distanceNode->SetData(distanceImage);
99 this->GetDataStorage()->Add(distanceNode);
101 mitk::DataNode::Pointer amplitudeNode = mitk::DataNode::New();
102 amplitudeNode->SetName(
"Amplitude Image");
103 amplitudeNode->SetData(amplitudeImage);
104 this->GetDataStorage()->Add(amplitudeNode);
106 mitk::DataNode::Pointer intensityNode = mitk::DataNode::New();
107 intensityNode->SetName(
"Intensity Image");
108 intensityNode->SetData(intensityImage);
109 this->GetDataStorage()->Add(intensityNode);
111 tofImageGrabber->StopCamera();
113 tofImageGrabber->DisconnectCamera();
115 mitk::RenderingManager::GetInstance()->InitializeViews(distanceImage->GetGeometry());
119 MITK_ERROR<<
"Connection to ToF camera could not be established";
126 mitk::DataNode::Pointer distanceNode = this->GetDataStorage()->GetNamedNode(
"Distance Image");
127 if (distanceNode.IsNotNull())
130 mitk::Image::Pointer distanceImage =
dynamic_cast<mitk::Image*
>(distanceNode->GetData());
131 if (distanceImage.IsNotNull())
134 mitk::CameraIntrinsics::Pointer cameraIntrinsics = mitk::CameraIntrinsics::New();
136 cameraIntrinsics->SetFocalLength(295.8,296.1);
138 cameraIntrinsics->SetPrincipalPoint(113.2,97.1);
140 mitk::ToFDistanceImageToSurfaceFilter::Pointer surfaceFilter = mitk::ToFDistanceImageToSurfaceFilter::New();
142 surfaceFilter->SetCameraIntrinsics(cameraIntrinsics);
145 interPixelDistance[0] = 0.045;
146 interPixelDistance[1] = 0.045;
147 surfaceFilter->SetInterPixelDistance(interPixelDistance);
149 surfaceFilter->SetInput(distanceImage);
151 surfaceFilter->Update();
153 mitk::Surface::Pointer surface = surfaceFilter->GetOutput();
155 mitk::DataNode::Pointer surfaceNode = mitk::DataNode::New();
156 surfaceNode->SetName(
"ToF surface");
157 surfaceNode->SetData(surface);
158 this->GetDataStorage()->Add(surfaceNode);
160 mitk::RenderingManager::GetInstance()->InitializeViews(surface->GetGeometry());
164 QMessageBox::warning(
nullptr,
"ToF Tutorial",
"Node 'Distance Image' contains no image");
169 QMessageBox::warning(
nullptr,
"ToF Tutorial",
"Perform Step 1 first to acquire a distance image");