MITK-IGT
IGT Extension of MITK
Loading...
Searching...
No Matches
QmitkToFUtilView.cpp
Go to the documentation of this file.
1/*============================================================================
2
3The Medical Imaging Interaction Toolkit (MITK)
4
5Copyright (c) German Cancer Research Center (DKFZ)
6All rights reserved.
7
8Use of this source code is governed by a 3-clause BSD license that can be
9found in the LICENSE file.
10
11============================================================================*/
12
13// Blueberry
14#include <mitkIRenderWindowPart.h>
15#include <mitkILinkedRenderWindowPart.h>
16
17// Qmitk
18#include "QmitkToFUtilView.h"
19
20// Qt
21#include <QMessageBox>
22#include <QString>
23#include <qmessagebox.h>
24#include <qfiledialog.h>
25#include <qcombobox.h>
26
27// MITK
28#include <mitkBaseRenderer.h>
30#include <mitkTransferFunction.h>
31#include <mitkTransferFunctionProperty.h>
33#include <mitkToFCameraDevice.h>
35#include <mitkSmartPointerProperty.h>
36#include <mitkRenderingModeProperty.h>
37#include <mitkVtkScalarModeProperty.h>
38
39// VTK
40#include <vtkCamera.h>
41#include <vtkPointData.h>
42#include <vtkPolyData.h>
43
44// ITK
45#include <itkCommand.h>
46#include <itksys/SystemTools.hxx>
47
48const std::string QmitkToFUtilView::VIEW_ID = "org.mitk.views.tofutil";
49
50//Constructor
52 : QmitkAbstractView()
53 , m_Controls(nullptr)
54 , m_Framerateoutput(false)
55 , m_MitkDistanceImage(nullptr), m_MitkAmplitudeImage(nullptr), m_MitkIntensityImage(nullptr), m_Surface(nullptr)
56 , m_DistanceImageNode(nullptr), m_AmplitudeImageNode(nullptr), m_IntensityImageNode(nullptr), m_RGBImageNode(nullptr), m_SurfaceNode(nullptr)
57 , m_ToFImageRecorder(nullptr), m_ToFImageGrabber(nullptr), m_ToFDistanceImageToSurfaceFilter(nullptr), m_ToFCompositeFilter(nullptr)
58 , m_2DDisplayCount(0)
59 , m_RealTimeClock(nullptr)
60 , m_StepsForFramerate(100)
61 , m_2DTimeBefore(0.0)
62 , m_2DTimeAfter(0.0)
63 , m_CameraIntrinsics(nullptr)
64{
65 this->m_Frametimer = new QTimer(this);
66
67 this->m_ToFDistanceImageToSurfaceFilter = mitk::ToFDistanceImageToSurfaceFilter::New();
68 this->m_ToFCompositeFilter = mitk::ToFCompositeFilter::New();
69 this->m_ToFImageRecorder = mitk::ToFImageRecorder::New();
70}
71
72//Destructor, specifically calling OnToFCameraStopped() and OnToFCammeraDiconnected()
78
79//Creating the PartControl Signal-Slot principal
81{
82 // build up qt view, unless already done
83 if ( !m_Controls )
84 {
85 // create GUI widgets from the Qt Designer's .ui file
86 m_Controls = new Ui::QmitkToFUtilViewControls;
87 m_Controls->setupUi( parent );
88
89 //Looking for Input and Defining reaction
90 connect(m_Frametimer, SIGNAL(timeout()), this, SLOT(OnUpdateCamera()));
91
92 connect( (QObject*)(m_Controls->m_ToFConnectionWidget), SIGNAL(KinectAcquisitionModeChanged()), this, SLOT(OnKinectAcquisitionModeChanged()) ); // Todo in Widget2
93 connect( (QObject*)(m_Controls->m_ToFConnectionWidget), SIGNAL(ToFCameraConnected()), this, SLOT(OnToFCameraConnected()) );
94 connect( (QObject*)(m_Controls->m_ToFConnectionWidget), SIGNAL(ToFCameraDisconnected()), this, SLOT(OnToFCameraDisconnected()) );
95 connect( (QObject*)(m_Controls->m_ToFRecorderWidget), SIGNAL(ToFCameraStarted()), this, SLOT(OnToFCameraStarted()) );
96 connect( (QObject*)(m_Controls->m_ToFRecorderWidget), SIGNAL(ToFCameraStopped()), this, SLOT(OnToFCameraStopped()) );
97 connect( (QObject*)(m_Controls->m_ToFRecorderWidget), SIGNAL(RecordingStarted()), this, SLOT(OnToFCameraStopped()) );
98 connect( (QObject*)(m_Controls->m_ToFRecorderWidget), SIGNAL(RecordingStopped()), this, SLOT(OnToFCameraStarted()) );
99}
100}
101
102//SetFocus-Method -> actually setting Focus to the Recorder
104{
105 m_Controls->m_ToFRecorderWidget->setFocus();
106}
107
108//Activated-Method->Generating RenderWindow
110{
111 //get the current RenderWindowPart or open a new one if there is none
112 auto* renderWindowPart = this->GetRenderWindowPart(mitk::WorkbenchUtil::OPEN);
113 if (nullptr != renderWindowPart)
114 {
115 auto* linkedRenderWindowPart = dynamic_cast<mitk::ILinkedRenderWindowPart*>(renderWindowPart);
116 if (linkedRenderWindowPart == nullptr)
117 {
118 MITK_ERROR << "No linked render window part available!!!";
119 }
120 else
121 {
122 linkedRenderWindowPart->EnableSlicingPlanes(false);
123 }
124 renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController()->SetDefaultViewDirection(mitk::AnatomicalPlane::Axial);
125 renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController()->SliceLockedOn();
126 renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController()->SetDefaultViewDirection(mitk::AnatomicalPlane::Axial);
127 renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController()->SliceLockedOn();
128 renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController()->SetDefaultViewDirection(mitk::AnatomicalPlane::Axial);
129 renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController()->SliceLockedOn();
130
131 mitk::RenderingManager::GetInstance()->InitializeViews();
132
133 this->UseToFVisibilitySettings(true);
134
135 if (this->m_ToFCompositeFilter)
136 {
137 m_Controls->m_ToFCompositeFilterWidget->SetToFCompositeFilter(this->m_ToFCompositeFilter);
138 }
139 if (this->GetDataStorage())
140 {
141 m_Controls->m_ToFCompositeFilterWidget->SetDataStorage(this->GetDataStorage());
142 }
143
144 if (this->m_ToFImageGrabber.IsNull())
145 {
146 m_Controls->m_ToFRecorderWidget->setEnabled(false);
147 m_Controls->m_ToFVisualisationSettingsWidget->setEnabled(false);
148 m_Controls->m_ToFCompositeFilterWidget->setEnabled(false);
149 m_Controls->m_ToFMeasurementWidget->setEnabled(false);
150 m_Controls->m_ToFSurfaceGenerationWidget->setEnabled(false);
151 }
152 }
153}
154
155//ZomnnieView-Method -> Resetting GUI to default. Why not just QmitkToFUtilView()?!
156void QmitkToFUtilView::ActivatedZombieView(berry::IWorkbenchPartReference::Pointer /*zombieView*/)
157{
158 ResetGUIToDefault();
159}
160
164
168
169//Reset of the ToFUtilView
171{
172 ResetGUIToDefault();
173}
174
176{
177 MITK_DEBUG <<"OnToFCameraConnected";
178 this->m_2DDisplayCount = 0;
179
180 this->m_ToFImageGrabber = m_Controls->m_ToFConnectionWidget->GetToFImageGrabber();
181
182 // initialize surface generation
183 this->m_ToFDistanceImageToSurfaceFilter = mitk::ToFDistanceImageToSurfaceFilter::New();
184
185 // initialize ToFImageRecorder and ToFRecorderWidget
186 this->m_ToFImageRecorder = mitk::ToFImageRecorder::New();
187 this->m_ToFImageRecorder->SetCameraDevice(this->m_ToFImageGrabber->GetCameraDevice());
188 m_Controls->m_ToFRecorderWidget->SetParameter(this->m_ToFImageGrabber, this->m_ToFImageRecorder);
189 m_Controls->m_ToFRecorderWidget->setEnabled(true);
190 m_Controls->m_ToFRecorderWidget->ResetGUIToInitial();
191 m_Controls->m_ToFVisualisationSettingsWidget->setEnabled(false);
192
193 // initialize ToFCompositeFilterWidget
194 this->m_ToFCompositeFilter = mitk::ToFCompositeFilter::New();
195 if (this->m_ToFCompositeFilter)
196 {
197 m_Controls->m_ToFCompositeFilterWidget->SetToFCompositeFilter(this->m_ToFCompositeFilter);
198 }
199 if (this->GetDataStorage())
200 {
201 m_Controls->m_ToFCompositeFilterWidget->SetDataStorage(this->GetDataStorage());
202 }
203
204 if ( this->GetRenderWindowPart() )
205 // initialize measurement widget
206 m_Controls->m_ToFMeasurementWidget->InitializeWidget(this->GetRenderWindowPart()->GetQmitkRenderWindows(),this->GetDataStorage(), this->m_ToFDistanceImageToSurfaceFilter->GetCameraIntrinsics());
207 else
208 MITK_WARN << "No render window part available!!! MeasurementWidget will not work.";
209
211 this->m_2DTimeBefore = this->m_RealTimeClock->GetCurrentStamp();
212
213 this->RequestRenderWindowUpdate();
214}
215
216void QmitkToFUtilView::ResetGUIToDefault()
217{
218 auto* renderWindowPart = this->GetRenderWindowPart();
219 if(nullptr != renderWindowPart)
220 {
221 auto* linkedRenderWindowPart = dynamic_cast<mitk::ILinkedRenderWindowPart*>(renderWindowPart);
222 if(linkedRenderWindowPart == nullptr)
223 {
224 MITK_ERROR << "No linked render window part available!!!";
225 }
226 else
227 {
228 linkedRenderWindowPart->EnableSlicingPlanes(true);
229 }
230 renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController()->SetDefaultViewDirection(mitk::AnatomicalPlane::Axial);
231 renderWindowPart->GetQmitkRenderWindow("axial")->GetSliceNavigationController()->SliceLockedOff();
232 renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController()->SetDefaultViewDirection(mitk::AnatomicalPlane::Sagittal);
233 renderWindowPart->GetQmitkRenderWindow("sagittal")->GetSliceNavigationController()->SliceLockedOff();
234 renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController()->SetDefaultViewDirection(mitk::AnatomicalPlane::Coronal);
235 renderWindowPart->GetQmitkRenderWindow("coronal")->GetSliceNavigationController()->SliceLockedOff();
236
237 this->UseToFVisibilitySettings(false);
238
239 //global reinit
240 mitk::RenderingManager::GetInstance()->InitializeViews();
241 this->RequestRenderWindowUpdate();
242 }
243}
244
246{
247 this->GetDataStorage()->Remove(m_DistanceImageNode);
249 this->GetDataStorage()->Remove(m_RGBImageNode);
251 this->GetDataStorage()->Remove(m_AmplitudeImageNode);
253 this->GetDataStorage()->Remove(m_IntensityImageNode);
254 if(m_SurfaceNode)
255 this->GetDataStorage()->Remove(m_SurfaceNode);
256
257 m_Controls->m_ToFRecorderWidget->OnStop();
258 m_Controls->m_ToFRecorderWidget->setEnabled(false);
259 m_Controls->m_ToFVisualisationSettingsWidget->setEnabled(false);
260 m_Controls->m_ToFMeasurementWidget->setEnabled(false);
261 m_Controls->m_ToFSurfaceGenerationWidget->setEnabled(false);
262 //clean up measurement widget
263 m_Controls->m_ToFMeasurementWidget->CleanUpWidget();
264}
265
267{
268 if (m_ToFCompositeFilter.IsNotNull()&&m_ToFImageGrabber.IsNotNull())
269 {
270 if (m_SelectedCamera.contains("Kinect"))
271 {
272 if (m_ToFImageGrabber->GetBoolProperty("RGB"))
273 {
274 this->m_RGBImageNode = ReplaceNodeData("RGB image",this->m_ToFImageGrabber->GetOutput(3));
275 this->m_ToFDistanceImageToSurfaceFilter->SetInput(3,this->m_ToFImageGrabber->GetOutput(3));
276 }
277 else if (m_ToFImageGrabber->GetBoolProperty("IR"))
278 {
279 this->m_MitkAmplitudeImage = m_ToFCompositeFilter->GetOutput(1);
280 this->m_AmplitudeImageNode = ReplaceNodeData("Amplitude image",m_MitkAmplitudeImage);
281 }
282 }
283 this->UseToFVisibilitySettings(true);
284 }
285}
286
288{
289 if (m_ToFImageGrabber.IsNotNull())
290 {
291 // initialize camera intrinsics
292 if (this->m_ToFImageGrabber->GetProperty("CameraIntrinsics"))
293 {
294 m_CameraIntrinsics = dynamic_cast<mitk::CameraIntrinsicsProperty*>(this->m_ToFImageGrabber->GetProperty("CameraIntrinsics"))->GetValue();
295 MITK_INFO << m_CameraIntrinsics->ToString();
296 }
297 else
298 {
299 m_CameraIntrinsics = nullptr;
300 MITK_ERROR << "No camera intrinsics were found!";
301 }
302
303 // set camera intrinsics
304 if ( m_CameraIntrinsics.IsNotNull() )
305 {
306 this->m_ToFDistanceImageToSurfaceFilter->SetCameraIntrinsics(m_CameraIntrinsics);
307 }
308
309 // initial update of image grabber
310 this->m_ToFImageGrabber->Update();
311
312 bool hasRGBImage = false;
313 m_ToFImageGrabber->GetCameraDevice()->GetBoolProperty("HasRGBImage",hasRGBImage);
314
315 bool hasIntensityImage = false;
316 m_ToFImageGrabber->GetCameraDevice()->GetBoolProperty("HasIntensityImage",hasIntensityImage);
317
318 bool hasAmplitudeImage = false;
319 m_ToFImageGrabber->GetCameraDevice()->GetBoolProperty("HasAmplitudeImage",hasAmplitudeImage);
320
321 this->m_ToFCompositeFilter->SetInput(0,this->m_ToFImageGrabber->GetOutput(0));
322 if(hasAmplitudeImage)
323 this->m_ToFCompositeFilter->SetInput(1,this->m_ToFImageGrabber->GetOutput(1));
324 if(hasIntensityImage)
325 this->m_ToFCompositeFilter->SetInput(2,this->m_ToFImageGrabber->GetOutput(2));
326
327 // initial update of composite filter
328 this->m_ToFCompositeFilter->Update();
329 this->m_MitkDistanceImage = m_ToFCompositeFilter->GetOutput();
330 this->m_DistanceImageNode = ReplaceNodeData("Distance image",m_MitkDistanceImage);
331
332 std::string rgbFileName;
333 m_ToFImageGrabber->GetCameraDevice()->GetStringProperty("RGBImageFileName",rgbFileName);
334
335 if(hasRGBImage || (rgbFileName!=""))
336 {
337 if(m_ToFImageGrabber->GetBoolProperty("IR"))
338 {
339 this->m_MitkAmplitudeImage = m_ToFCompositeFilter->GetOutput(1);
340 }
341 else
342 {
343 this->m_RGBImageNode = ReplaceNodeData("RGB image",this->m_ToFImageGrabber->GetOutput(3));
344 }
345 }
346 else
347 {
348 this->m_RGBImageNode = nullptr;
349 }
350
351 if(hasAmplitudeImage)
352 {
353 this->m_MitkAmplitudeImage = m_ToFCompositeFilter->GetOutput(1);
354 this->m_AmplitudeImageNode = ReplaceNodeData("Amplitude image",m_MitkAmplitudeImage);
355 }
356
357 if(hasIntensityImage)
358 {
359 this->m_MitkIntensityImage = m_ToFCompositeFilter->GetOutput(2);
360 this->m_IntensityImageNode = ReplaceNodeData("Intensity image",m_MitkIntensityImage);
361 }
362
366
367 this->UseToFVisibilitySettings(true);
368
369 this->m_SurfaceNode = ReplaceNodeData("Surface", nullptr);
370 m_Controls->m_ToFCompositeFilterWidget->UpdateFilterParameter();
371 // initialize visualization widget
372 m_Controls->m_ToFVisualisationSettingsWidget->Initialize(this->m_DistanceImageNode,
375 this->m_SurfaceNode);
376 m_Controls->m_ToFSurfaceGenerationWidget->Initialize(m_ToFDistanceImageToSurfaceFilter,
380 GetRenderWindowPart(mitk::WorkbenchUtil::OPEN)->GetQmitkRenderWindow("3d")->GetRenderer()->GetVtkRenderer()->GetActiveCamera());
381 // set distance image to measurement widget
382 m_Controls->m_ToFMeasurementWidget->SetDistanceImage(m_MitkDistanceImage);
383
384 this->m_Frametimer->start(50);
385
386 m_Controls->m_ToFVisualisationSettingsWidget->setEnabled(true);
387 m_Controls->m_ToFCompositeFilterWidget->setEnabled(true);
388 m_Controls->m_ToFMeasurementWidget->setEnabled(true);
389 m_Controls->m_ToFSurfaceGenerationWidget->setEnabled(true);
390 }
391}
392
394{
395 m_Controls->m_ToFVisualisationSettingsWidget->setEnabled(false);
396 m_Controls->m_ToFCompositeFilterWidget->setEnabled(false);
397
398 this->m_Frametimer->stop();
399}
400
402{
403 if(!m_Controls->m_ToFSurfaceGenerationWidget->UpdateSurface())
404 {
405 // update pipeline
406 this->m_MitkDistanceImage->Update();
407 }
408
409 this->RequestRenderWindowUpdate();
410
412 {
413 this->m_2DDisplayCount++;
414 if ((this->m_2DDisplayCount % this->m_StepsForFramerate) == 0)
415 {
416 this->m_2DTimeAfter = this->m_RealTimeClock->GetCurrentStamp() - this->m_2DTimeBefore;
417 MITK_INFO << " 2D-Display-framerate (fps): " << this->m_StepsForFramerate / (this->m_2DTimeAfter / 1000);
418 this->m_2DTimeBefore = this->m_RealTimeClock->GetCurrentStamp();
419 }
420 }
421
422}
423
425{
426 this->OnToFCameraStopped();
427 if(index == 0)
428 {
429 if(this->m_IntensityImageNode.IsNotNull())
430 this->m_IntensityImageNode->SetVisibility(false);
431 if(this->m_RGBImageNode.IsNotNull())
432 this->m_RGBImageNode->SetVisibility(true);
433 }
434 else if(index == 1)
435 {
436 if(this->m_IntensityImageNode.IsNotNull())
437 this->m_IntensityImageNode->SetVisibility(true);
438 if(this->m_RGBImageNode.IsNotNull())
439 this->m_RGBImageNode->SetVisibility(false);
440 }
441 this->RequestRenderWindowUpdate();
442 this->OnToFCameraStarted();
443}
444
445mitk::DataNode::Pointer QmitkToFUtilView::ReplaceNodeData( std::string nodeName, mitk::BaseData* data )
446{
447 mitk::DataNode::Pointer node = this->GetDataStorage()->GetNamedNode(nodeName);
448 if (node.IsNull())
449 {
450 node = mitk::DataNode::New();
451 node->SetName(nodeName);
452 node->SetBoolProperty("binary",false);
453 node->SetData(data);
454 this->GetDataStorage()->Add(node);
455 }
456 else
457 {
458 node->SetData(data);
459 }
460 return node;
461}
462
464{
465 //We need this property for every node.
466 auto renderingModePropertyForTransferFunction = mitk::RenderingModeProperty::New(mitk::RenderingModeProperty::COLORTRANSFERFUNCTION_COLOR);
467
468 auto* renderWindowPart = this->GetRenderWindowPart(mitk::WorkbenchUtil::OPEN);
469
470 auto* axialRenderer = mitk::BaseRenderer::GetInstance(renderWindowPart->GetQmitkRenderWindow("axial")->renderWindow());
471 auto* sagittalRenderer = mitk::BaseRenderer::GetInstance(renderWindowPart->GetQmitkRenderWindow("sagittal")->renderWindow());
472 auto* coronalRenderer = mitk::BaseRenderer::GetInstance(renderWindowPart->GetQmitkRenderWindow("coronal")->renderWindow());
473 auto* threeDimRenderer = mitk::BaseRenderer::GetInstance(renderWindowPart->GetQmitkRenderWindow("3d")->renderWindow());
474
475 // set node properties
476 if (m_DistanceImageNode.IsNotNull())
477 {
478 this->m_DistanceImageNode->SetProperty( "visible" , mitk::BoolProperty::New( true ));
479 this->m_DistanceImageNode->SetVisibility( !useToF, sagittalRenderer );
480 this->m_DistanceImageNode->SetVisibility( !useToF, coronalRenderer );
481 this->m_DistanceImageNode->SetVisibility( !useToF, threeDimRenderer );
482 this->m_DistanceImageNode->SetProperty("Image Rendering.Mode", renderingModePropertyForTransferFunction);
483 }
484 if (m_AmplitudeImageNode.IsNotNull())
485 {
486 this->m_AmplitudeImageNode->SetVisibility( !useToF, axialRenderer );
487 this->m_AmplitudeImageNode->SetVisibility( !useToF, coronalRenderer );
488 this->m_AmplitudeImageNode->SetVisibility( !useToF, threeDimRenderer );
489 this->m_AmplitudeImageNode->SetProperty("Image Rendering.Mode", renderingModePropertyForTransferFunction);
490 }
491 if (m_IntensityImageNode.IsNotNull())
492 {
493 this->m_IntensityImageNode->SetProperty( "visible" , mitk::BoolProperty::New( true ));
494 this->m_IntensityImageNode->SetVisibility( !useToF, axialRenderer );
495 this->m_IntensityImageNode->SetVisibility( !useToF, sagittalRenderer );
496 this->m_IntensityImageNode->SetVisibility( !useToF, threeDimRenderer );
497 this->m_IntensityImageNode->SetProperty("Image Rendering.Mode", renderingModePropertyForTransferFunction);
498 }
499 if ((m_RGBImageNode.IsNotNull()))
500 {
501 this->m_RGBImageNode->SetProperty( "visible" , mitk::BoolProperty::New( true ));
502 this->m_RGBImageNode->SetVisibility( !useToF, axialRenderer );
503 this->m_RGBImageNode->SetVisibility( !useToF, sagittalRenderer );
504 this->m_RGBImageNode->SetVisibility( !useToF, threeDimRenderer );
505 }
506 // initialize images
507 if (m_MitkDistanceImage.IsNotNull())
508 {
509 mitk::RenderingManager::GetInstance()->InitializeViews(
510 this->m_MitkDistanceImage->GetTimeGeometry(), mitk::RenderingManager::REQUEST_UPDATE_2DWINDOWS);
511 }
512 if(this->m_SurfaceNode.IsNotNull())
513 {
514 QHash<QString, QmitkRenderWindow*> renderWindowHashMap = renderWindowPart->GetQmitkRenderWindows();
515 QHashIterator<QString, QmitkRenderWindow*> i(renderWindowHashMap);
516 while (i.hasNext()){
517 i.next();
518 this->m_SurfaceNode->SetVisibility( false, mitk::BaseRenderer::GetInstance(i.value()->renderWindow()) );
519 }
520 this->m_SurfaceNode->SetVisibility( true, mitk::BaseRenderer::GetInstance(renderWindowPart->GetQmitkRenderWindow("3d")->renderWindow() ) );
521 }
522 //disable/enable gradient background
523 renderWindowPart->EnableDecorations(!useToF, QStringList(QString("background")));
524
525 if((this->m_RGBImageNode.IsNotNull()))
526 {
527 bool RGBImageHasDifferentResolution = false;
528 m_ToFImageGrabber->GetCameraDevice()->GetBoolProperty("RGBImageHasDifferentResolution",RGBImageHasDifferentResolution);
529 if(RGBImageHasDifferentResolution)
530 {
531 //update the display geometry by using the RBG image node. Only for renderwindow coronal
532 mitk::RenderingManager::GetInstance()->InitializeView(renderWindowPart->GetQmitkRenderWindow("coronal")->renderWindow(),
533 this->m_RGBImageNode->GetData()->GetGeometry());
534 }
535 }
536}
static const std::string VIEW_ID
bool m_Framerateoutput
defines if the framerate is computed condinously
void OnChangeCoronalWindowOutput(int index)
Slot invoked when user alters the coronal window input from RGB to Intensity or vice versa.
void UseToFVisibilitySettings(bool useToF)
initialize the visibility settings of ToF data (images + surface)
mitk::DataNode::Pointer m_RGBImageNode
DataNode holding the rgb image of the selected camera.
void OnToFCameraConnected()
Slot called when the "Connect" button of the ConnectionWidget is pressed.
void OnToFCameraStarted()
Slot called when the "Start" button of the RecorderWidget is pressed.
mitk::ToFImageGrabber::Pointer m_ToFImageGrabber
Source of a ToF image processing pipeline. Provides pointers to distance, amplitude and intensity ima...
mitk::ToFDistanceImageToSurfaceFilter::Pointer m_ToFDistanceImageToSurfaceFilter
Filter for calculating a surface representation from a given distance image.
mitk::DataNode::Pointer m_DistanceImageNode
DataNode holding the distance image of the selected camera.
mitk::Image::Pointer m_MitkIntensityImage
member holding a pointer to the intensity image of the selected camera
void Deactivated() override
mitk::Image::Pointer m_MitkDistanceImage
member holding a pointer to the distance image of the selected camera
void OnUpdateCamera()
Slot triggered from the timer to update the images and visualization.
void Hidden() override
mitk::ToFImageRecorder::Pointer m_ToFImageRecorder
ToF image recorder used for lossless recording of ToF image data.
int m_StepsForFramerate
number of steps used for calculating the display framerate
mitk::RealTimeClock::Pointer m_RealTimeClock
real time clock used to calculate the display framerate
QString m_SelectedCamera
String holding the selected camera.
void SetFocus() override
double m_2DTimeAfter
holds the time stamp at the end of the display framerate measurement
Ui::QmitkToFUtilViewControls * m_Controls
void OnToFCameraStopped()
Slot called when the "Stop" button of the RecorderWidget is pressed.
~QmitkToFUtilView() override
void OnToFCameraDisconnected()
Slot called when the "Disconnect" button of the ConnectionWidget is pressed.
mitk::Image::Pointer m_MitkAmplitudeImage
member holding a pointer to the amplitude image of the selected camera
void OnKinectAcquisitionModeChanged()
Slot invoked when acquisition mode of Kinect is changed.
mitk::ToFCompositeFilter::Pointer m_ToFCompositeFilter
Filter combining several processing steps (thresholding, Median filtering, Bilateral filtering)
int m_2DDisplayCount
member used to determine whether frame rate output should be shown
void CreateQtPartControl(QWidget *parent) override
mitk::DataNode::Pointer m_IntensityImageNode
DataNode holding the intensity image of the selected camera.
QTimer * m_Frametimer
Timer used to continuously update the images.
double m_2DTimeBefore
holds the time stamp at the beginning of the display framerate measurement
void Activated() override
Called when the view gets activated.
void ActivatedZombieView(berry::IWorkbenchPartReference::Pointer zombieView) override
Called when the view gets deactivated. In this case the zombie view of this view becomes active!
void Visible() override
mitk::CameraIntrinsics::Pointer m_CameraIntrinsics
member holding the intrinsic parameters of the camera
mitk::DataNode::Pointer m_AmplitudeImageNode
DataNode holding the amplitude image of the selected camera.
mitk::DataNode::Pointer m_SurfaceNode
DataNode holding the surface generated from the distanc image of the selected camera.
static Pointer New(void)
instanciates a new, operating-system dependant, instance of mitk::RealTimeClock.