CustusX  22.04-rc5
An IGT application
cxBranchList.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 BRANCHLIST_H_
12 #define BRANCHLIST_H_
13 
14 #include "cxBranch.h"
15 #include "cxMesh.h"
16 #include "cxVector3D.h"
17 #include "org_custusx_registration_method_bronchoscopy_Export.h"
18 
19 
20 namespace cx
21 {
22 
23 typedef std::vector< Eigen::Matrix4d > M4Vector;
24 typedef boost::shared_ptr<class BranchList> BranchListPtr;
25 
26 #define MAX_ROTATION_TO_TILT_DOWN_DEGREES 30 //Threshold between rotation direction of scope to tilt up or down in a bifurcation.
27 
28 class org_custusx_registration_method_bronchoscopy_EXPORT BranchList
29 {
30  std::vector<BranchPtr> mBranches;
31 public:
32  BranchList();
33  virtual ~BranchList();
34  void addBranch(BranchPtr b);
35  void deleteBranch(BranchPtr b);
36  void deleteAllBranches();
37  std::vector<BranchPtr> getBranches();
38  void findBranchesInCenterline(Eigen::MatrixXd positions_r, bool sortByZindex = true);
39  void selectGenerations(int maxGeneration);
40  void findBronchoscopeRotation();
41  void calculateBronchoscopeRotation(BranchPtr branch);
42  void smoothOrientations();
43  void smoothRadius();
44  BranchPtr findBranchWithLargestRadius();
45  void interpolateBranchPositions(double resolution);
46  void smoothBranchPositions(int controlPointDistance);
47  void excludeClosePositionsInCTCenterline(double minPointDistance);
48  BranchListPtr removePositionsForLocalRegistration(Eigen::MatrixXd trackingPositions, double maxDistance);
49  vtkPolyDataPtr createVtkPolyDataFromBranches(bool fullyConnected = false, bool straightBranches = false) const;
50 };
51 
52 std::pair<Eigen::MatrixXd,Eigen::MatrixXd > org_custusx_registration_method_bronchoscopy_EXPORT findConnectedPointsInCT(int startIndex , Eigen::MatrixXd positionsNotUsed);
53 Eigen::MatrixXd sortMatrix(int rowNumber, Eigen::MatrixXd matrix);
54 Eigen::MatrixXd org_custusx_registration_method_bronchoscopy_EXPORT eraseCol(int removeIndex, Eigen::MatrixXd positions);
55 std::pair<Eigen::MatrixXd::Index, double> org_custusx_registration_method_bronchoscopy_EXPORT dsearch(Eigen::Vector3d p, Eigen::MatrixXd positions);
56 std::pair<std::vector<Eigen::MatrixXd::Index>, Eigen::VectorXd > org_custusx_registration_method_bronchoscopy_EXPORT dsearchn(Eigen::MatrixXd p1, Eigen::MatrixXd p2);
57 std::vector<Eigen::Vector3d> org_custusx_registration_method_bronchoscopy_EXPORT smoothBranch(BranchPtr branchPtr, int startIndex, Eigen::MatrixXd startPosition);
58 double bendingDirectionToBronchoscopeRotation(Vector3D bendingDirection, Vector3D parentBranchOrientation, double parentRotation);
60 
61 }//namespace cx
62 
63 #endif /* BRANCHLIST_H_ */
std::vector< Eigen::Vector3d > smoothBranch(BranchPtr branchPtr, int startIndex, Eigen::MatrixXd startPosition)
std::pair< Eigen::MatrixXd, Eigen::MatrixXd > findConnectedPointsInCT(int startIndex, Eigen::MatrixXd positionsNotUsed)
Eigen::MatrixXd eraseCol(int removeIndex, Eigen::MatrixXd positions)
double bendingDirectionToBronchoscopeRotation(Vector3D bendingDirection, Vector3D parentBranchOrientation, double parentRotation)
boost::shared_ptr< class BranchList > BranchListPtr
boost::shared_ptr< class Branch > BranchPtr
Vector3D calculateBronchoscopeBendingDirection(Vector3D A, Vector3D B)
vtkSmartPointer< vtkPolyData > vtkPolyDataPtr
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
Definition: cxVector3D.h:42
Eigen::MatrixXd sortMatrix(int rowNumber, Eigen::MatrixXd matrix)
std::pair< std::vector< Eigen::MatrixXd::Index >, Eigen::VectorXd > dsearchn(Eigen::MatrixXd p1, Eigen::MatrixXd p2)
std::vector< Eigen::Matrix4d > M4Vector
std::pair< Eigen::MatrixXd::Index, double > dsearch(Eigen::Vector3d p, Eigen::MatrixXd positions)
Namespace for all CustusX production code.