CustusX  2023.01.05-dev+develop.0da12
An IGT application
cxBronchoscopyRegistration.h
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 #ifndef BRONCHOSCOPYREGISTRATION_H_
12 #define BRONCHOSCOPYREGISTRATION_H_
13 
14 #include "org_custusx_registration_method_bronchoscopy_Export.h"
15 #include "cxBranchList.h"
16 #include <vector>
17 #include "vtkForwardDeclarations.h"
18 
19 typedef std::vector< Eigen::Matrix4d > M4Vector;
20 
21 
22 namespace cx
23 {
24 
25 typedef std::map<double, Transform3D> TimedTransformMap;
26 
27 class org_custusx_registration_method_bronchoscopy_EXPORT BronchoscopyRegistration
28 {
29  BranchListPtr mBranchListPtr;
30  bool mCenterlineProcessed;
31 
32 public:
34  vtkPolyDataPtr processCenterline(vtkPolyDataPtr centerline, Transform3D rMd, int numberOfGenerations = 0);
35  void setBranchList(BranchListPtr branchList, int numberOfGenerations = 0);
36  BranchListPtr getBranchList();
37  BranchListPtr processCenterlineImage2Image(vtkPolyDataPtr centerline, int numberOfGenerations = 0);
38  Eigen::Matrix4d runBronchoscopyRegistration(TimedTransformMap trackingData_prMt, Transform3D old_rMpr, double maxDistanceForLocalRegistration);
39  Eigen::Matrix4d runBronchoscopyRegistrationImage2Image(vtkPolyDataPtr centerlineFixed, vtkPolyDataPtr centerlineMoving);
40  bool isCenterlineProcessed();
41  virtual ~BronchoscopyRegistration();
42 };
43 
45 Eigen::Matrix4d registrationAlgorithm(BranchListPtr branches, M4Vector Tnavigation);
46 Eigen::Matrix4d registrationAlgorithmImage2Image(BranchListPtr branchesFixed, BranchListPtr branchesMoving);
47 std::vector<Eigen::MatrixXd::Index> dsearch2n(Eigen::MatrixXd pos1, Eigen::MatrixXd pos2, Eigen::MatrixXd ori1, Eigen::MatrixXd ori2);
48 vtkPointsPtr convertTovtkPoints(Eigen::MatrixXd positions);
49 Eigen::Matrix4d performLandmarkRegistration(vtkPointsPtr source, vtkPointsPtr target, bool* ok);
50 std::pair<Eigen::MatrixXd , Eigen::MatrixXd> RemoveInvalidData(Eigen::MatrixXd positionData, Eigen::MatrixXd orientationData);
52 org_custusx_registration_method_bronchoscopy_EXPORT Eigen::MatrixXd makeTransformedMatrix(vtkPolyDataPtr linesPolyData, Transform3D rMd = Transform3D::Identity());
53 
54 }//namespace cx
55 
56 #endif /* BRONCHOSCOPYREGISTRATION_H_ */
boost::shared_ptr< class BranchList > BranchListPtr
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
vtkSmartPointer< vtkPoints > vtkPointsPtr
std::pair< Eigen::MatrixXd, Eigen::MatrixXd > RemoveInvalidData(Eigen::MatrixXd positionData, Eigen::MatrixXd orientationData)
vtkPointsPtr convertTovtkPoints(Eigen::MatrixXd positions)
Eigen::Matrix4d registrationAlgorithmImage2Image(BranchListPtr branchesFixed, BranchListPtr branchesMoving)
std::vector< Eigen::MatrixXd::Index > dsearch2n(Eigen::MatrixXd pos1, Eigen::MatrixXd pos2, Eigen::MatrixXd ori1, Eigen::MatrixXd ori2)
M4Vector excludeClosePositions(M4Vector Tnavigation)
vtkSmartPointer< vtkPolyData > vtkPolyDataPtr
Eigen::Matrix4d performLandmarkRegistration(vtkPointsPtr source, vtkPointsPtr target)
std::vector< Eigen::Matrix4d > M4Vector
std::vector< Eigen::Matrix4d > M4Vector
Eigen::MatrixXd makeTransformedMatrix(vtkPolyDataPtr linesPolyData, Transform3D rMd)
makeTransformedMatrix This method takes an vtkpolydata as input, runs it through a transform and retu...
Eigen::Matrix4d registrationAlgorithm(BranchListPtr branches, M4Vector Tnavigation, Transform3D old_rMpr)
std::map< double, Transform3D > TimedTransformMap
Namespace for all CustusX production code.