From c67281a10a038e0892e8e825fa9692d963cf9c73 Mon Sep 17 00:00:00 2001 From: Proton local user Date: Fri, 12 May 2023 14:00:32 +0200 Subject: [PATCH] new R23MetaInfo so that R23 does not need TransformMeta anymore --- .../itkDTRrecon/DRTMetaInformation.cpp | 26 +++++++- .../itkDTRrecon/DRTMetaInformation.h | 64 +++++++++++++++---- .../itkTwoProjectionImageRegistrationMethod.h | 9 ++- .../autoreg/itkgTwoImageToOneImageMetric.h | 6 +- .../autoreg/itkgTwoImageToOneImageMetric.hxx | 4 +- .../itkDTRrecon/itkImageProcessor.cpp | 17 +++-- .../itkDTRrecon/itkImageProcessor.h | 23 +------ 7 files changed, 103 insertions(+), 46 deletions(-) diff --git a/reg23Topograms/itkDTRrecon/DRTMetaInformation.cpp b/reg23Topograms/itkDTRrecon/DRTMetaInformation.cpp index 55ada69..9b0c1dc 100644 --- a/reg23Topograms/itkDTRrecon/DRTMetaInformation.cpp +++ b/reg23Topograms/itkDTRrecon/DRTMetaInformation.cpp @@ -518,7 +518,27 @@ RTGeometryMetaInformation } +R23MetaInformation:: +R23MetaInformation (){ + m_DegreeOfFreedom = tDegreeOfFreedomEnum::UNKNOWN; + +} + + +void +R23MetaInformation +::PrintSelf(std::ostream& os, itk::Indent indent) const +{ + Superclass::PrintSelf(os, indent); +} + + +R23MetaInformation +::~R23MetaInformation () +{ + +} TransformMetaInformation :: TransformMetaInformation (){ @@ -531,11 +551,11 @@ TransformMetaInformation (){ m_UserTranslations.Fill(0.); - m_ReferenceTransform.Fill(0.); + //m_ReferenceTransform.Fill(0.); - m_CurrentTransform.Fill(0.); + //m_CurrentTransform.Fill(0.); - m_DegreeOfFreedom = tDegreeOfFreedomEnum::UNKNOWN; + // m_DegreeOfFreedom = tDegreeOfFreedomEnum::UNKNOWN; } diff --git a/reg23Topograms/itkDTRrecon/DRTMetaInformation.h b/reg23Topograms/itkDTRrecon/DRTMetaInformation.h index 1f77f24..917a7f2 100644 --- a/reg23Topograms/itkDTRrecon/DRTMetaInformation.h +++ b/reg23Topograms/itkDTRrecon/DRTMetaInformation.h @@ -514,6 +514,48 @@ private: }; +class R23MetaInformation : + public itk::Object{ + +public: + /** standard typedefs **/ + typedef R23MetaInformation Self; + typedef itk::Object Superclass; + typedef itk::SmartPointer Pointer; + + + /** Method for creation through the object factory. */ + itkNewMacro(Self); + + /** Run-time type information (and related methods). */ + itkTypeMacro(R23MetaInformation, itk::Object); + + /** object information streaming **/ + void PrintSelf(std::ostream& os, itk::Indent indent) const; + + itkSetEnumMacro(DegreeOfFreedom, tDegreeOfFreedomEnum); + itkGetEnumMacro(DegreeOfFreedom, tDegreeOfFreedomEnum); + + +protected: + + tDegreeOfFreedomEnum + m_DegreeOfFreedom; + + /** Default Constructor **/ + R23MetaInformation (); + /** Default Destructor **/ + virtual ~R23MetaInformation (); + +private: + /** purposely not implemented **/ + R23MetaInformation (const Self&); + + /** purposely not implemented **/ + void operator=(const Self&); + +}; + class TransformMetaInformation : public itk::Object{ @@ -547,14 +589,14 @@ public: itkSetMacro(UserRotations,PointType); itkGetMacro(UserRotations,PointType); - itkSetMacro(ReferenceTransform,TransformMatrixType); - itkGetMacro(ReferenceTransform,TransformMatrixType); +// itkSetMacro(ReferenceTransform,TransformMatrixType); +// itkGetMacro(ReferenceTransform,TransformMatrixType); - itkSetMacro(CurrentTransform,TransformMatrixType); - itkGetMacro(CurrentTransform,TransformMatrixType); +// itkSetMacro(CurrentTransform,TransformMatrixType); +// itkGetMacro(CurrentTransform,TransformMatrixType); - itkSetEnumMacro(DegreeOfFreedom, tDegreeOfFreedomEnum); - itkGetEnumMacro(DegreeOfFreedom, tDegreeOfFreedomEnum); +// itkSetEnumMacro(DegreeOfFreedom, tDegreeOfFreedomEnum); +// itkGetEnumMacro(DegreeOfFreedom, tDegreeOfFreedomEnum); protected: @@ -564,12 +606,12 @@ protected: m_UserTranslations, m_UserRotations; - TransformMatrixType - m_ReferenceTransform, - m_CurrentTransform; +// TransformMatrixType +// m_ReferenceTransform, +// m_CurrentTransform; - tDegreeOfFreedomEnum - m_DegreeOfFreedom; +// tDegreeOfFreedomEnum +// m_DegreeOfFreedom; /** Default Constructor **/ TransformMetaInformation (); diff --git a/reg23Topograms/itkDTRrecon/autoreg/itkTwoProjectionImageRegistrationMethod.h b/reg23Topograms/itkDTRrecon/autoreg/itkTwoProjectionImageRegistrationMethod.h index 3dd6241..7770224 100644 --- a/reg23Topograms/itkDTRrecon/autoreg/itkTwoProjectionImageRegistrationMethod.h +++ b/reg23Topograms/itkDTRrecon/autoreg/itkTwoProjectionImageRegistrationMethod.h @@ -170,8 +170,8 @@ public: itkGetConstObjectMacro(Interpolator2, InterpolatorType); /** Set/Get the Meta informations. */ - itkSetObjectMacro(TransformMetaInfo, TransformMetaInformation); - itkGetConstObjectMacro(TransformMetaInfo, TransformMetaInformation); + itkSetObjectMacro(TransformMetaInfo, R23MetaInformation); + itkGetConstObjectMacro(TransformMetaInfo, R23MetaInformation); /** Set/Get the output filters. */ itkSetObjectMacro(Filter1, ChangeInformationFilterType); @@ -253,7 +253,10 @@ private: InterpolatorPointer m_Interpolator1; InterpolatorPointer m_Interpolator2; - TransformMetaInformation::Pointer + //TransformMetaInformation::Pointer + // m_TransformMetaInfo; + + R23MetaInformation::Pointer m_TransformMetaInfo; ChangeInformationFilterPointer diff --git a/reg23Topograms/itkDTRrecon/autoreg/itkgTwoImageToOneImageMetric.h b/reg23Topograms/itkDTRrecon/autoreg/itkgTwoImageToOneImageMetric.h index 9cb93cb..c3d8712 100644 --- a/reg23Topograms/itkDTRrecon/autoreg/itkgTwoImageToOneImageMetric.h +++ b/reg23Topograms/itkDTRrecon/autoreg/itkgTwoImageToOneImageMetric.h @@ -185,10 +185,10 @@ public: itkGetConstReferenceMacro(NumberOfPixelsCounted, unsigned long); /** Connect the DRTGeometryMetaInfo. */ - itkSetObjectMacro(TransformMetaInfo, TransformMetaInformation); + itkSetObjectMacro(TransformMetaInfo, R23MetaInformation); /** Get a pointer to the DRTGeometryMetaInfo. */ - itkGetConstObjectMacro(TransformMetaInfo, TransformMetaInformation); + itkGetConstObjectMacro(TransformMetaInfo, R23MetaInformation); /** Set the region over which the metric will be computed */ itkSetMacro(FixedImageRegion1, FixedImageRegionType); @@ -274,7 +274,7 @@ protected: mutable FixedImageMaskPointer m_FixedImageMask2; mutable MovingImageMaskPointer m_MovingImageMask; - TransformMetaInformation::Pointer + R23MetaInformation::Pointer m_TransformMetaInfo; ChangeInformationFilterPointer diff --git a/reg23Topograms/itkDTRrecon/autoreg/itkgTwoImageToOneImageMetric.hxx b/reg23Topograms/itkDTRrecon/autoreg/itkgTwoImageToOneImageMetric.hxx index 0e9c600..d4ea48a 100644 --- a/reg23Topograms/itkDTRrecon/autoreg/itkgTwoImageToOneImageMetric.hxx +++ b/reg23Topograms/itkDTRrecon/autoreg/itkgTwoImageToOneImageMetric.hxx @@ -113,7 +113,9 @@ bool gTwoImageToOneImageMetric::SetTransformParameter transformParameters[4] = TranslationAlongY; transformParameters[5] = TranslationAlongZ; - bool transformValid = (std::abs(TranslationAlongX) < m_MaxTranslation) && (std::abs(TranslationAlongY) < m_MaxTranslation) && (std::abs(TranslationAlongZ) < m_MaxTranslation); + bool transformValid = (std::abs(TranslationAlongX) < m_MaxTranslation) && + (std::abs(TranslationAlongY) < m_MaxTranslation) && + (std::abs(TranslationAlongZ) < m_MaxTranslation); if (transformValid) { m_Transform1->SetParameters(transformParameters); diff --git a/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp b/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp index 0049101..66326dd 100644 --- a/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp +++ b/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp @@ -118,6 +118,9 @@ itkImageProcessor::itkImageProcessor() m_TransformMetaInfo = NULL; m_TransformMetaInfo = TransformMetaInformation::New(); + m_r23MetaInfo = NULL; + m_r23MetaInfo = R23MetaInformation::New(); + /* Initialise the projection geoemtry with defaults */ m_DRTGeometryMetaInfo = NULL; m_DRTGeometryMetaInfo @@ -284,13 +287,16 @@ double itkImageProcessor::GetPanelOffset2(){ void itkImageProcessor::SetDegreeOfFreedom(tDegreeOfFreedomEnum dof) { - m_TransformMetaInfo->SetDegreeOfFreedom(dof); + // m_TransformMetaInfo->SetDegreeOfFreedom(dof); + m_r23MetaInfo->SetDegreeOfFreedom(dof); } tDegreeOfFreedomEnum itkImageProcessor::GetDegreeOfFreedom() { - return m_TransformMetaInfo->GetDegreeOfFreedom(); + return + m_r23MetaInfo->GetDegreeOfFreedom(); + //m_TransformMetaInfo->GetDegreeOfFreedom(); } void itkImageProcessor::SetCustom_ImportTransform(double dTx, @@ -428,6 +434,7 @@ int itkImageProcessor::unload3DVolumeAndMeta(){ m_TransformMetaInfo = NULL; m_TransformMetaInfo = TransformMetaInformation::New(); + return 1; } @@ -1436,7 +1443,8 @@ void itkImageProcessor::InitializeRegistration( metric->SetSubtractMean(true); metric->SetMaxTranslation(maxTranslation); - m_TransformMetaInfo->SetDegreeOfFreedom(dof); +// m_TransformMetaInfo->SetDegreeOfFreedom(dof); + m_r23MetaInfo->SetDegreeOfFreedom(dof); mimetric->ComputeGradientOff(); @@ -1479,7 +1487,8 @@ void itkImageProcessor::InitializeRegistration( } - registration->SetTransformMetaInfo(m_TransformMetaInfo); +// registration->SetTransformMetaInfo(m_TransformMetaInfo); + registration->SetTransformMetaInfo(m_r23MetaInfo); registration->SetFilter1(filter1); registration->SetFilter2(filter2); diff --git a/reg23Topograms/itkDTRrecon/itkImageProcessor.h b/reg23Topograms/itkDTRrecon/itkImageProcessor.h index 553212e..5a25620 100644 --- a/reg23Topograms/itkDTRrecon/itkImageProcessor.h +++ b/reg23Topograms/itkDTRrecon/itkImageProcessor.h @@ -269,18 +269,6 @@ private: TransformType::Pointer transform, DRTImageMetaInformation::Pointer imageMetaInfo); -// TransformType::Pointer -// CalculateInternalTransform( -// ImageType3D::PointType m_TranslationOffset, -// ImageType3D::PointType m_RotationOffset, -// ImageType3D::PointType m_TranslationUser, -// ImageType3D::PointType m_RotationUser, -// ImageType3D::PointType m_ProjectionTransformCenter, -// ImageType3D::PointType m_UserTransformCenter, -// ImageType3D::PointType m_OffsetTransformCenter, -// InternalImageType::DirectionType m_IECtoLPSDirections -// ); - /* Calculate the transform used in siddon. * The isocentric transform is mapped to the calibrated center of projection */ TransformType::Pointer @@ -294,8 +282,6 @@ private: InternalImageType::DirectionType m_IECtoLPSDirections ); - - TransformType::Pointer transform1, transform2; @@ -360,13 +346,6 @@ private: ); -// ImageType3D::PointType -// CalcDRTImageOffset( -// ImageType3D::PointType m_DRTOffset, -// double dAngle, -// InternalImageType::DirectionType stdDRT2LPS -// ); - TransformType::Pointer MapTransformToNewOrigin( ImageType3D::PointType m_COR, @@ -433,6 +412,8 @@ private: TransformMetaInformation::Pointer m_TransformMetaInfo; + R23MetaInformation::Pointer + m_r23MetaInfo; double m_OptmizerValue; int m_MaxNumberOfIterations;