From f166060a712dc36464f31542b1a92f324212abd1 Mon Sep 17 00:00:00 2001 From: Proton local user Date: Tue, 2 May 2023 23:46:48 +0200 Subject: [PATCH 1/3] review of projection geometry definition - introduction of CalculateInternalTransformV2 - Each projection maps the isocentric transform (RTIso COR) to its own projection center, including calibration offset. - Direct comparison with previous implementation of CalculateInternalTransform not done... yet. - Results on validation dataset are good. - This change was triggered by rather large errors (ca. 0.8mm) on validation dataset. - Both fakeIso and DCM RTPlan iso have been updated to V2. --- .../itkDTRrecon/itkImageProcessor.cpp | 438 +++++++++++++----- .../itkDTRrecon/itkImageProcessor.h | 11 + 2 files changed, 322 insertions(+), 127 deletions(-) diff --git a/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp b/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp index 3723431..15a3000 100644 --- a/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp +++ b/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp @@ -1362,6 +1362,82 @@ void itkImageProcessor::CalculateExternalUserTransform(TransformType::Pointer tr m_TransformMetaInfo->SetUserRotations(LPStoIEC_Directions * rotationUser); } +itkImageProcessor::TransformType::Pointer +itkImageProcessor::CalculateInternalTransformV2( + ImageType3D::PointType m_TranslationOffset, //IEC + ImageType3D::PointType m_RotationOffset, //IEC + ImageType3D::PointType m_TranslationUser, //IEC + ImageType3D::PointType m_RotationUser, //IEC + ImageType3D::PointType m_CalibratedProjectionCenter, //LPS + ImageType3D::PointType m_RTIsocenter, //LPS + InternalImageType::DirectionType m_IECtoLPSDirections + ) +{ + + //Convert all inputs into LPS + + ImageType3D::PointType m_TOffsetLPS = + m_IECtoLPSDirections * m_TranslationOffset; + + ImageType3D::PointType m_ROffsetLPS = + m_IECtoLPSDirections * m_RotationOffset; + + ImageType3D::PointType m_TUserLPS = + m_IECtoLPSDirections * m_TranslationUser; + + ImageType3D::PointType m_RUserLPS = + m_IECtoLPSDirections * m_RotationUser; + + +// TransformType::Pointer IsocetricTransform = TransformType::New(); +// IsocetricTransform->SetComputeZYX(true); +// IsocetricTransform->SetIdentity(); + + TransformType::OutputVectorType translation; + translation[0] = m_TOffsetLPS[0] + m_TUserLPS[0]; + translation[1] = m_TOffsetLPS[1] + m_TUserLPS[1]; + translation[2] = m_TOffsetLPS[2] + m_TUserLPS[2]; + +// IsocetricTransform->SetTranslation(translation); + + const double dtr = (atan(1.0) * 4.0) / 180.0; +// IsocetricTransform->SetRotation( +// dtr * m_ROffsetLPS[0] + dtr * m_RUserLPS[0], +// dtr * m_ROffsetLPS[1] + dtr * m_RUserLPS[1], +// dtr * m_ROffsetLPS[2] + dtr * m_RUserLPS[2]); + + TransformType::OutputVectorType rotations; + rotations[0] = m_ROffsetLPS[0] + m_RUserLPS[0]; + rotations[1] = m_ROffsetLPS[1] + m_RUserLPS[1]; + rotations[2] = m_ROffsetLPS[2] + m_RUserLPS[2]; + + +// ImageType3D::PointType m_TransformOrigin; +// m_TransformOrigin.Fill(0.); +// IsocetricTransform->SetCenter( +// m_TransformOrigin ); + +// IsocetricTransform->Print(std::cout); + + // Map offset to the projection center + TransformType::Pointer m_outputTransform = + MapTransformToNewOrigin ( + m_CalibratedProjectionCenter - m_RTIsocenter, + translation, + rotations + ); + + std::cout<GetTranslation()<GetCenter()<SetCenter(m_CalibratedProjectionCenter); + std::cout<GetTranslation()<GetCenter()<GetImportOffset(), IECtoLPS_Directions ); +// CurrTransform = +// CalculateInternalTransform( +// ZeroPoint , +// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), +// m_TransformMetaInfo->GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_CTMetaInfo->GetProjectionOriginLPS( +// m_DRTGeometryMetaInfo->GetProjectionCenter() +// ), +// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), +// m_CTMetaInfo->GetImportOffset(), +// IECtoLPS_Directions +// ); } @@ -1562,6 +1651,9 @@ void itkImageProcessor::InitializeRegistration( ); transform1->SetCenter( m_DRTImage1MetaInfo->GetProjectionOriginLPSZero() ); +// transform1 ->SetCenter( +// m_CTMetaInfo->GetProjectionOriginLPSZero( +// m_DRTGeometryMetaInfo->GetProjectionCenter())); /********* END OF CALCULATE INTERNAL TRANSFORM FOR PROJ1 *********/ @@ -1602,6 +1694,19 @@ void itkImageProcessor::InitializeRegistration( m_CTMetaInfo->GetImportOffset(), IECtoLPS_Directions ); +// CurrTransform = +// CalculateInternalTransform( +// ZeroPoint , +// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), +// m_TransformMetaInfo->GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_CTMetaInfo->GetProjectionOriginLPS( +// m_DRTGeometryMetaInfo->GetProjectionCenter() +// ), +// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), +// m_CTMetaInfo->GetImportOffset(), +// IECtoLPS_Directions +// ); } transform2->SetComputeZYX(true); @@ -1615,6 +1720,9 @@ void itkImageProcessor::InitializeRegistration( ); transform2->SetCenter( m_DRTImage2MetaInfo->GetProjectionOriginLPSZero() ); +// transform2 ->SetCenter( +// m_CTMetaInfo->GetProjectionOriginLPSZero( +// m_DRTGeometryMetaInfo->GetProjectionCenter())); /********* END OF CALCULATE INTERNAL TRANSFORM FOR PROJ1 *********/ @@ -1844,49 +1952,72 @@ void itkImageProcessor::InitializeProjector() // m_DRTGeometryMetaInfo->GetProjectionCenter1()); - CurrTransform = - CalculateInternalTransform( - ZeroPoint, - ZeroPoint, - m_TransformMetaInfo->GetTranslations(), - m_TransformMetaInfo->GetRotations(), - m_DRTImage1MetaInfo->GetProjectionOriginLPS(), - pFakeIsoLPS, - ZeroPoint, - IECtoLPS_Directions - ); +// CurrTransform = +// CalculateInternalTransform( +// ZeroPoint, +// ZeroPoint, +// m_TransformMetaInfo->GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), +// pFakeIsoLPS, +// ZeroPoint, +// IECtoLPS_Directions +// ); + + CurrTransform = CalculateInternalTransformV2( + ZeroPoint , + ZeroPoint , + m_TransformMetaInfo->GetTranslations(), + m_TransformMetaInfo->GetRotations(), + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), + m_DRTImage2MetaInfo->GetProjectionOriginLPS(), + IECtoLPS_Directions + ); } else { - CurrTransform = - CalculateInternalTransform( +// CurrTransform = +// CalculateInternalTransform( +// ZeroPoint , +// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), +// m_TransformMetaInfo->GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), +// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), +// m_CTMetaInfo->GetImportOffset(), +// IECtoLPS_Directions +// ); + + CurrTransform = CalculateInternalTransformV2( ZeroPoint , m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), m_TransformMetaInfo->GetTranslations(), m_TransformMetaInfo->GetRotations(), - m_DRTImage1MetaInfo->GetProjectionOriginLPS(), - m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), - m_CTMetaInfo->GetImportOffset(), + m_DRTImage1MetaInfo->GetProjectionOriginLPSZero(), + m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), IECtoLPS_Directions ); } - transform1->SetComputeZYX(true); - transform1->SetIdentity(); +// transform1->SetComputeZYX(true); +// transform1->SetIdentity(); - transform1->SetTranslation( - CurrTransform->GetTranslation()); - transform1->SetRotation( - CurrTransform->GetAngleX(), - CurrTransform->GetAngleY(), - CurrTransform->GetAngleZ() - ); +// transform1->SetTranslation( +// CurrTransform->GetTranslation()); +// transform1->SetRotation( +// CurrTransform->GetAngleX(), +// CurrTransform->GetAngleY(), +// CurrTransform->GetAngleZ() +// ); - transform1->SetCenter( - m_DRTImage1MetaInfo->GetProjectionOriginLPSZero() ); -// transform1->Print(std::cout); +// transform1->SetCenter( +// m_DRTImage1MetaInfo->GetProjectionOriginLPSZero() ); + + + transform1 = CurrTransform; + // 2D Image 1 interpolator1->SetProjectionAngle( @@ -1920,48 +2051,70 @@ void itkImageProcessor::InitializeProjector() - CurrTransform = - CalculateInternalTransform( - ZeroPoint, - ZeroPoint, - m_TransformMetaInfo->GetTranslations(), - m_TransformMetaInfo->GetRotations(), - m_DRTImage2MetaInfo->GetProjectionOriginLPS(), - pFakeIsoLPS, - ZeroPoint, - IECtoLPS_Directions - ); +// CurrTransform = +// CalculateInternalTransform( +// ZeroPoint, +// ZeroPoint, +// m_TransformMetaInfo->GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), +// pFakeIsoLPS, +// ZeroPoint, +// IECtoLPS_Directions +// ); + CurrTransform = CalculateInternalTransformV2( + ZeroPoint , + ZeroPoint , + m_TransformMetaInfo->GetTranslations(), + m_TransformMetaInfo->GetRotations(), + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), + m_DRTImage2MetaInfo->GetProjectionOriginLPS(), + IECtoLPS_Directions + ); } else { - CurrTransform = - CalculateInternalTransform( +// CurrTransform = +// CalculateInternalTransform( +// ZeroPoint , +// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), +// m_TransformMetaInfo->GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), +// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), +// m_CTMetaInfo->GetImportOffset(), +// IECtoLPS_Directions +// ); + + CurrTransform = CalculateInternalTransformV2( ZeroPoint , m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), m_TransformMetaInfo->GetTranslations(), m_TransformMetaInfo->GetRotations(), - m_DRTImage2MetaInfo->GetProjectionOriginLPS(), - m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), - m_CTMetaInfo->GetImportOffset(), + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), + m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), IECtoLPS_Directions ); - } +transform2 = CurrTransform; + +// transform2->SetComputeZYX(true); +// transform2->SetIdentity(); + +// transform2->SetTranslation( +// CurrTransform->GetTranslation()); +// transform2->SetRotation( +// CurrTransform->GetAngleX(), +// CurrTransform->GetAngleY(), +// CurrTransform->GetAngleZ() +// ); - transform2->SetComputeZYX(true); - transform2->SetIdentity(); +// transform2->SetCenter( +// m_DRTImage2MetaInfo->GetProjectionOriginLPSZero() ); +// transform2 ->SetCenter( +// m_CTMetaInfo->GetProjectionOriginLPSZero( +// m_DRTGeometryMetaInfo->GetProjectionCenter())); - transform2->SetTranslation( - CurrTransform->GetTranslation()); - transform2->SetRotation( - CurrTransform->GetAngleX(), - CurrTransform->GetAngleY(), - CurrTransform->GetAngleZ() - ); - - - transform2->SetCenter( - m_DRTImage2MetaInfo->GetProjectionOriginLPSZero() ); //transform2->Print(std::cout); // 2D Image 2 @@ -2193,11 +2346,11 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ IsocenterOffsetLPS = m_CTMetaInfo->ConvertIECPointToLPSPoint( m_DRTGeometryMetaInfo->GetProjectionCenterOffset1()); - std::cout<< "///////////////// PGEOM META BEG ///////////////" <GetProjectionCenter() <GetProjectionCenter() <SetProjectionAngleLPS( this->CalcProjectionAngleLPS( @@ -2276,15 +2429,7 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ m_DRTGeometryMetaInfo->GetProjectionAngle1IEC() ), //m_DRTGeometryMetaInfo->GetProjectionAngle1IEC(),// m_DRTImage1MetaInfo->GetProjectionAngleLPS(), Std_DRT2LPS - ) /*- - CalcDRTImageOffset( - PanelOffsetIEC1, - this->CalcProjectionAngleLPS( - m_CTMetaInfo->GetPatientOrientation(), - m_DRTGeometryMetaInfo->GetProjectionAngle1IEC() ), - Std_DRT2LPS - )*/ - + ) ); std::cout<<"CALIBRATION GetOriginLPS "<GetOriginLPS()<GetTranslations(), m_TransformMetaInfo->GetRotations(), + m_DRTImage1MetaInfo->GetProjectionOriginLPSZero(), m_DRTImage1MetaInfo->GetProjectionOriginLPS(), - pFakeIsoLPS, - ZeroPoint, IECtoLPS_Directions ); } else { - CurrTransform = - CalculateInternalTransform( - ZeroPoint , - m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), - m_TransformMetaInfo->GetTranslations(), - m_TransformMetaInfo->GetRotations(), - m_DRTImage1MetaInfo->GetProjectionOriginLPS(), - m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), - m_CTMetaInfo->GetImportOffset(), - IECtoLPS_Directions - ); - } + // CurrTransform = + // CalculateInternalTransform( + // ZeroPoint , + // m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), + // m_TransformMetaInfo->GetTranslations(), + // m_TransformMetaInfo->GetRotations(), + // m_DRTImage1MetaInfo->GetProjectionOriginLPS(), + // m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), + // m_CTMetaInfo->GetImportOffset(), + // IECtoLPS_Directions + // ); - std::cout<<"Curr GetCenter"<GetCenter()<GetIsocenterLPS()<GetIECS2IECScannerR(), + m_TransformMetaInfo->GetTranslations(), + m_TransformMetaInfo->GetRotations(), + m_DRTImage1MetaInfo->GetProjectionOriginLPSZero(), + m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), + IECtoLPS_Directions + ); - transform1->SetComputeZYX(true); - transform1->SetIdentity(); + std::cout<GetProjectionOriginLPSZero()<GetIsocenterLPS() <GetOriginLPS() <GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS() <SetTranslation( - CurrTransform->GetTranslation()); - transform1->SetRotation( - CurrTransform->GetAngleX(), - CurrTransform->GetAngleY(), - CurrTransform->GetAngleZ() - ); + } + + + + + // transform1->SetComputeZYX(true); + // transform1->SetIdentity(); + + // transform1->SetTranslation( + // CurrTransform->GetTranslation()); + // transform1->SetRotation( + // CurrTransform->GetAngleX(), + // CurrTransform->GetAngleY(), + // CurrTransform->GetAngleZ() + // ); + + + // transform1->SetCenter( + // m_DRTImage1MetaInfo->GetProjectionOriginLPSZero() ); + + + transform1 = CurrTransform; // std::cout<< "itkImageProcessor::GetProjectionImages" <SetCenter( - m_DRTImage1MetaInfo->GetProjectionOriginLPSZero()); +// transform1 ->SetCenter( +// m_DRTImage1MetaInfo->GetProjectionOriginLPSZero()); +// transform1 ->SetCenter( +// m_CTMetaInfo->GetProjectionOriginLPSZero( +// m_DRTGeometryMetaInfo->GetProjectionCenter())); + + + std::cout<<"----> transform1 GetCenter"<GetCenter()<GetProjectionAngleLPS() <GetTranslations(), m_TransformMetaInfo->GetRotations(), + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), m_DRTImage2MetaInfo->GetProjectionOriginLPS(), - pFakeIsoLPS, - ZeroPoint, + IECtoLPS_Directions ); @@ -2639,37 +2812,48 @@ void itkImageProcessor::GetProjectionImages(){ } else { - CurrTransform = - CalculateInternalTransform( +// CurrTransform = +// CalculateInternalTransform( +// ZeroPoint , +// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), +// m_TransformMetaInfo->GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), +// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), +// m_CTMetaInfo->GetImportOffset(), +// IECtoLPS_Directions +// ); + + CurrTransform = CalculateInternalTransformV2( ZeroPoint , m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), m_TransformMetaInfo->GetTranslations(), m_TransformMetaInfo->GetRotations(), - m_DRTImage2MetaInfo->GetProjectionOriginLPS(), - m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), - m_CTMetaInfo->GetImportOffset(), + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), + m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), IECtoLPS_Directions ); - } +transform2 = CurrTransform; + +// transform2->SetComputeZYX(true); +// transform2->SetIdentity(); + +// transform2->SetTranslation( +// CurrTransform->GetTranslation()); +// transform2->SetRotation( +// CurrTransform->GetAngleX(), +// CurrTransform->GetAngleY(), +// CurrTransform->GetAngleZ() +// ); - transform2->SetComputeZYX(true); - transform2->SetIdentity(); - - transform2->SetTranslation( - CurrTransform->GetTranslation()); - transform2->SetRotation( - CurrTransform->GetAngleX(), - CurrTransform->GetAngleY(), - CurrTransform->GetAngleZ() - ); - - - transform2 ->SetCenter( - m_DRTImage2MetaInfo->GetProjectionOriginLPSZero()); - +// transform2 ->SetCenter( +// m_DRTImage2MetaInfo->GetProjectionOriginLPSZero()); +// transform2 ->SetCenter( +// m_CTMetaInfo->GetProjectionOriginLPSZero( +// m_DRTGeometryMetaInfo->GetProjectionCenter())); //transform2 ->Print(std::cout); diff --git a/reg23Topograms/itkDTRrecon/itkImageProcessor.h b/reg23Topograms/itkDTRrecon/itkImageProcessor.h index 401aa7e..ec96d35 100644 --- a/reg23Topograms/itkDTRrecon/itkImageProcessor.h +++ b/reg23Topograms/itkDTRrecon/itkImageProcessor.h @@ -280,6 +280,17 @@ private: InternalImageType::DirectionType m_IECtoLPSDirections ); + TransformType::Pointer + CalculateInternalTransformV2( + ImageType3D::PointType m_TranslationOffset, + ImageType3D::PointType m_RotationOffset, + ImageType3D::PointType m_TranslationUser, + ImageType3D::PointType m_RotationUser, + ImageType3D::PointType m_CalibratedProjectionCenter, + ImageType3D::PointType m_RTIsocenter, + InternalImageType::DirectionType m_IECtoLPSDirections + ); + TransformType::Pointer transform1, From 9b5921dd60eb3cae09378bae7eee66856789b3ce Mon Sep 17 00:00:00 2001 From: Proton local user Date: Wed, 3 May 2023 14:41:52 +0200 Subject: [PATCH 2/3] autoReg working --- .../itkDTRrecon/itkImageProcessor.cpp | 537 +++++++++--------- .../itkDTRrecon/itkImageProcessor.h | 44 +- 2 files changed, 290 insertions(+), 291 deletions(-) diff --git a/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp b/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp index 15a3000..6ce2871 100644 --- a/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp +++ b/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp @@ -1362,6 +1362,7 @@ void itkImageProcessor::CalculateExternalUserTransform(TransformType::Pointer tr m_TransformMetaInfo->SetUserRotations(LPStoIEC_Directions * rotationUser); } + itkImageProcessor::TransformType::Pointer itkImageProcessor::CalculateInternalTransformV2( ImageType3D::PointType m_TranslationOffset, //IEC @@ -1388,37 +1389,16 @@ itkImageProcessor::CalculateInternalTransformV2( ImageType3D::PointType m_RUserLPS = m_IECtoLPSDirections * m_RotationUser; - -// TransformType::Pointer IsocetricTransform = TransformType::New(); -// IsocetricTransform->SetComputeZYX(true); -// IsocetricTransform->SetIdentity(); - TransformType::OutputVectorType translation; translation[0] = m_TOffsetLPS[0] + m_TUserLPS[0]; translation[1] = m_TOffsetLPS[1] + m_TUserLPS[1]; translation[2] = m_TOffsetLPS[2] + m_TUserLPS[2]; -// IsocetricTransform->SetTranslation(translation); - - const double dtr = (atan(1.0) * 4.0) / 180.0; -// IsocetricTransform->SetRotation( -// dtr * m_ROffsetLPS[0] + dtr * m_RUserLPS[0], -// dtr * m_ROffsetLPS[1] + dtr * m_RUserLPS[1], -// dtr * m_ROffsetLPS[2] + dtr * m_RUserLPS[2]); - TransformType::OutputVectorType rotations; rotations[0] = m_ROffsetLPS[0] + m_RUserLPS[0]; rotations[1] = m_ROffsetLPS[1] + m_RUserLPS[1]; rotations[2] = m_ROffsetLPS[2] + m_RUserLPS[2]; - -// ImageType3D::PointType m_TransformOrigin; -// m_TransformOrigin.Fill(0.); -// IsocetricTransform->SetCenter( -// m_TransformOrigin ); - -// IsocetricTransform->Print(std::cout); - // Map offset to the projection center TransformType::Pointer m_outputTransform = MapTransformToNewOrigin ( @@ -1427,11 +1407,7 @@ itkImageProcessor::CalculateInternalTransformV2( rotations ); - std::cout<GetTranslation()<GetCenter()<SetCenter(m_CalibratedProjectionCenter); - std::cout<GetTranslation()<GetCenter()<SetComputeZYX(true); - m_OutputTransform ->SetIdentity(); +// TransformType::Pointer m_OutputTransform = +// TransformType::New(); +// m_OutputTransform ->SetComputeZYX(true); +// m_OutputTransform ->SetIdentity(); - m_OutputTransform->SetTranslation( - m_OffsetTransform->GetTranslation() + - m_UserTransform->GetTranslation() - ); +// m_OutputTransform->SetTranslation( +// m_OffsetTransform->GetTranslation() + +// m_UserTransform->GetTranslation() +// ); - m_OutputTransform->SetRotation( - m_OffsetTransform->GetAngleX() + - m_UserTransform->GetAngleX(), - m_OffsetTransform->GetAngleY() + - m_UserTransform->GetAngleY(), - m_OffsetTransform->GetAngleZ() + - m_UserTransform->GetAngleZ() - ); +// m_OutputTransform->SetRotation( +// m_OffsetTransform->GetAngleX() + +// m_UserTransform->GetAngleX(), +// m_OffsetTransform->GetAngleY() + +// m_UserTransform->GetAngleY(), +// m_OffsetTransform->GetAngleZ() + +// m_UserTransform->GetAngleZ() +// ); - m_OutputTransform->SetCenter( - m_ProjectionTransformCenter); +// m_OutputTransform->SetCenter( +// m_ProjectionTransformCenter); - //std::cout<GetProjectionOriginLPS( // m_DRTGeometryMetaInfo->GetProjectionCenter1()); +// CurrTransform = +// CalculateInternalTransform( +// ZeroPoint, +// ZeroPoint, +// m_TransformMetaInfo->GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), +// pFakeIsoLPS, +// ZeroPoint, +// IECtoLPS_Directions +// ); CurrTransform = - CalculateInternalTransform( + CalculateInternalTransformV2( ZeroPoint, ZeroPoint, m_TransformMetaInfo->GetTranslations(), m_TransformMetaInfo->GetRotations(), + m_DRTImage1MetaInfo->GetProjectionOriginLPSZero(), m_DRTImage1MetaInfo->GetProjectionOriginLPS(), - pFakeIsoLPS, - ZeroPoint, IECtoLPS_Directions ); + } else { - CurrTransform = - CalculateInternalTransform( - ZeroPoint , - m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), - m_TransformMetaInfo->GetTranslations(), - m_TransformMetaInfo->GetRotations(), - m_DRTImage1MetaInfo->GetProjectionOriginLPS(), - m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), - m_CTMetaInfo->GetImportOffset(), - IECtoLPS_Directions - ); // CurrTransform = // CalculateInternalTransform( // ZeroPoint , // m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), // m_TransformMetaInfo->GetTranslations(), // m_TransformMetaInfo->GetRotations(), -// m_CTMetaInfo->GetProjectionOriginLPS( -// m_DRTGeometryMetaInfo->GetProjectionCenter() -// ), +// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), // m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), // m_CTMetaInfo->GetImportOffset(), // IECtoLPS_Directions // ); + CurrTransform = CalculateInternalTransformV2( + ZeroPoint , + m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), + m_TransformMetaInfo->GetTranslations(), + m_TransformMetaInfo->GetRotations(), + m_DRTImage1MetaInfo->GetProjectionOriginLPSZero(), + m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), + IECtoLPS_Directions + ); + } @@ -1651,9 +1635,6 @@ void itkImageProcessor::InitializeRegistration( ); transform1->SetCenter( m_DRTImage1MetaInfo->GetProjectionOriginLPSZero() ); -// transform1 ->SetCenter( -// m_CTMetaInfo->GetProjectionOriginLPSZero( -// m_DRTGeometryMetaInfo->GetProjectionCenter())); /********* END OF CALCULATE INTERNAL TRANSFORM FOR PROJ1 *********/ @@ -1670,43 +1651,51 @@ void itkImageProcessor::InitializeRegistration( +// CurrTransform = +// CalculateInternalTransform( +// ZeroPoint, +// ZeroPoint, +// m_TransformMetaInfo->GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), +// pFakeIsoLPS, +// ZeroPoint, +// IECtoLPS_Directions +// ); CurrTransform = - CalculateInternalTransform( - ZeroPoint, - ZeroPoint, - m_TransformMetaInfo->GetTranslations(), - m_TransformMetaInfo->GetRotations(), - m_DRTImage2MetaInfo->GetProjectionOriginLPS(), - pFakeIsoLPS, - ZeroPoint, - IECtoLPS_Directions - ); + CalculateInternalTransformV2( + ZeroPoint, + ZeroPoint, + m_TransformMetaInfo->GetTranslations(), + m_TransformMetaInfo->GetRotations(), + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), + m_DRTImage2MetaInfo->GetProjectionOriginLPS(), + IECtoLPS_Directions + ); + } else { - CurrTransform = - CalculateInternalTransform( - ZeroPoint , - m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), - m_TransformMetaInfo->GetTranslations(), - m_TransformMetaInfo->GetRotations(), - m_DRTImage2MetaInfo->GetProjectionOriginLPS(), - m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), - m_CTMetaInfo->GetImportOffset(), - IECtoLPS_Directions - ); // CurrTransform = // CalculateInternalTransform( // ZeroPoint , // m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), // m_TransformMetaInfo->GetTranslations(), // m_TransformMetaInfo->GetRotations(), -// m_CTMetaInfo->GetProjectionOriginLPS( -// m_DRTGeometryMetaInfo->GetProjectionCenter() -// ), +// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), // m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), // m_CTMetaInfo->GetImportOffset(), // IECtoLPS_Directions // ); + CurrTransform = CalculateInternalTransformV2( + ZeroPoint, + m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), + m_TransformMetaInfo->GetTranslations(), + m_TransformMetaInfo->GetRotations(), + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), + m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), + IECtoLPS_Directions + ); + } transform2->SetComputeZYX(true); @@ -1720,9 +1709,6 @@ void itkImageProcessor::InitializeRegistration( ); transform2->SetCenter( m_DRTImage2MetaInfo->GetProjectionOriginLPSZero() ); -// transform2 ->SetCenter( -// m_CTMetaInfo->GetProjectionOriginLPSZero( -// m_DRTGeometryMetaInfo->GetProjectionCenter())); /********* END OF CALCULATE INTERNAL TRANSFORM FOR PROJ1 *********/ @@ -1963,16 +1949,17 @@ void itkImageProcessor::InitializeProjector() // ZeroPoint, // IECtoLPS_Directions // ); - CurrTransform = CalculateInternalTransformV2( - ZeroPoint , - ZeroPoint , - m_TransformMetaInfo->GetTranslations(), - m_TransformMetaInfo->GetRotations(), - m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), - m_DRTImage2MetaInfo->GetProjectionOriginLPS(), - IECtoLPS_Directions - ); + ZeroPoint , + ZeroPoint , + m_TransformMetaInfo->GetTranslations(), + m_TransformMetaInfo->GetRotations(), + m_DRTImage1MetaInfo->GetProjectionOriginLPSZero(), + m_DRTImage1MetaInfo->GetProjectionOriginLPS(), + IECtoLPS_Directions + ); + + } else { // CurrTransform = @@ -1997,27 +1984,25 @@ void itkImageProcessor::InitializeProjector() IECtoLPS_Directions ); + } -// transform1->SetComputeZYX(true); -// transform1->SetIdentity(); + transform1->SetComputeZYX(true); + transform1->SetIdentity(); -// transform1->SetTranslation( -// CurrTransform->GetTranslation()); -// transform1->SetRotation( -// CurrTransform->GetAngleX(), -// CurrTransform->GetAngleY(), -// CurrTransform->GetAngleZ() -// ); + transform1->SetTranslation( + CurrTransform->GetTranslation()); + transform1->SetRotation( + CurrTransform->GetAngleX(), + CurrTransform->GetAngleY(), + CurrTransform->GetAngleZ() + ); -// transform1->SetCenter( -// m_DRTImage1MetaInfo->GetProjectionOriginLPSZero() ); - - - transform1 = CurrTransform; - + transform1->SetCenter( + m_DRTImage1MetaInfo->GetProjectionOriginLPSZero() ); +// transform1->Print(std::cout); // 2D Image 1 interpolator1->SetProjectionAngle( @@ -2062,15 +2047,18 @@ void itkImageProcessor::InitializeProjector() // ZeroPoint, // IECtoLPS_Directions // ); - CurrTransform = CalculateInternalTransformV2( - ZeroPoint , - ZeroPoint , - m_TransformMetaInfo->GetTranslations(), - m_TransformMetaInfo->GetRotations(), - m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), - m_DRTImage2MetaInfo->GetProjectionOriginLPS(), - IECtoLPS_Directions - ); + CurrTransform = + CalculateInternalTransformV2( + ZeroPoint, + ZeroPoint, + m_TransformMetaInfo->GetTranslations(), + m_TransformMetaInfo->GetRotations(), + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), + m_DRTImage2MetaInfo->GetProjectionOriginLPS(), + IECtoLPS_Directions + ); + + } else { // CurrTransform = @@ -2084,9 +2072,8 @@ void itkImageProcessor::InitializeProjector() // m_CTMetaInfo->GetImportOffset(), // IECtoLPS_Directions // ); - CurrTransform = CalculateInternalTransformV2( - ZeroPoint , + ZeroPoint, m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), m_TransformMetaInfo->GetTranslations(), m_TransformMetaInfo->GetRotations(), @@ -2094,27 +2081,25 @@ void itkImageProcessor::InitializeProjector() m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), IECtoLPS_Directions ); + + } -transform2 = CurrTransform; - -// transform2->SetComputeZYX(true); -// transform2->SetIdentity(); - -// transform2->SetTranslation( -// CurrTransform->GetTranslation()); -// transform2->SetRotation( -// CurrTransform->GetAngleX(), -// CurrTransform->GetAngleY(), -// CurrTransform->GetAngleZ() -// ); -// transform2->SetCenter( -// m_DRTImage2MetaInfo->GetProjectionOriginLPSZero() ); -// transform2 ->SetCenter( -// m_CTMetaInfo->GetProjectionOriginLPSZero( -// m_DRTGeometryMetaInfo->GetProjectionCenter())); + transform2->SetComputeZYX(true); + transform2->SetIdentity(); + transform2->SetTranslation( + CurrTransform->GetTranslation()); + transform2->SetRotation( + CurrTransform->GetAngleX(), + CurrTransform->GetAngleY(), + CurrTransform->GetAngleZ() + ); + + + transform2->SetCenter( + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero() ); //transform2->Print(std::cout); // 2D Image 2 @@ -2346,11 +2331,11 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ IsocenterOffsetLPS = m_CTMetaInfo->ConvertIECPointToLPSPoint( m_DRTGeometryMetaInfo->GetProjectionCenterOffset1()); -// std::cout<< "///////////////// PGEOM META BEG ///////////////" <GetProjectionCenter() <GetProjectionCenter() <SetProjectionAngleLPS( this->CalcProjectionAngleLPS( @@ -2429,7 +2414,15 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ m_DRTGeometryMetaInfo->GetProjectionAngle1IEC() ), //m_DRTGeometryMetaInfo->GetProjectionAngle1IEC(),// m_DRTImage1MetaInfo->GetProjectionAngleLPS(), Std_DRT2LPS - ) + ) /*- + CalcDRTImageOffset( + PanelOffsetIEC1, + this->CalcProjectionAngleLPS( + m_CTMetaInfo->GetPatientOrientation(), + m_DRTGeometryMetaInfo->GetProjectionAngle1IEC() ), + Std_DRT2LPS + )*/ + ); std::cout<<"CALIBRATION GetOriginLPS "<GetOriginLPS()<GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), +// pFakeIsoLPS, +// ZeroPoint, +// IECtoLPS_Directions +// ); + CurrTransform = CalculateInternalTransformV2( ZeroPoint, @@ -2694,70 +2699,52 @@ void itkImageProcessor::GetProjectionImages(){ m_DRTImage1MetaInfo->GetProjectionOriginLPS(), IECtoLPS_Directions ); + } else { +// CurrTransform = +// CalculateInternalTransform( +// ZeroPoint , +// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), +// m_TransformMetaInfo->GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), +// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), +// m_CTMetaInfo->GetImportOffset(), +// IECtoLPS_Directions +// ); - // CurrTransform = - // CalculateInternalTransform( - // ZeroPoint , - // m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), - // m_TransformMetaInfo->GetTranslations(), - // m_TransformMetaInfo->GetRotations(), - // m_DRTImage1MetaInfo->GetProjectionOriginLPS(), - // m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), - // m_CTMetaInfo->GetImportOffset(), - // IECtoLPS_Directions - // ); + CurrTransform = CalculateInternalTransformV2( + ZeroPoint , + m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), + m_TransformMetaInfo->GetTranslations(), + m_TransformMetaInfo->GetRotations(), + m_DRTImage1MetaInfo->GetProjectionOriginLPSZero(), + m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), + IECtoLPS_Directions + ); - CurrTransform = CalculateInternalTransformV2( - ZeroPoint , - m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), - m_TransformMetaInfo->GetTranslations(), - m_TransformMetaInfo->GetRotations(), - m_DRTImage1MetaInfo->GetProjectionOriginLPSZero(), - m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), - IECtoLPS_Directions - ); + } - std::cout<GetProjectionOriginLPSZero()<GetIsocenterLPS() <GetOriginLPS() <GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS() <GetCenter()<GetIsocenterLPS()<SetComputeZYX(true); + transform1->SetIdentity(); - - - - // transform1->SetComputeZYX(true); - // transform1->SetIdentity(); - - // transform1->SetTranslation( - // CurrTransform->GetTranslation()); - // transform1->SetRotation( - // CurrTransform->GetAngleX(), - // CurrTransform->GetAngleY(), - // CurrTransform->GetAngleZ() - // ); - - - // transform1->SetCenter( - // m_DRTImage1MetaInfo->GetProjectionOriginLPSZero() ); - - - transform1 = CurrTransform; + transform1->SetTranslation( + CurrTransform->GetTranslation()); + transform1->SetRotation( + CurrTransform->GetAngleX(), + CurrTransform->GetAngleY(), + CurrTransform->GetAngleZ() + ); // std::cout<< "itkImageProcessor::GetProjectionImages" <SetCenter( -// m_DRTImage1MetaInfo->GetProjectionOriginLPSZero()); -// transform1 ->SetCenter( -// m_CTMetaInfo->GetProjectionOriginLPSZero( -// m_DRTGeometryMetaInfo->GetProjectionCenter())); - - - std::cout<<"----> transform1 GetCenter"<GetCenter()<SetCenter( + m_DRTImage1MetaInfo->GetProjectionOriginLPSZero()); // std::cout<<"Angle1 "<GetProjectionAngleLPS() <GetTranslations(), +// m_TransformMetaInfo->GetRotations(), +// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), +// pFakeIsoLPS, +// ZeroPoint, +// IECtoLPS_Directions +// ); CurrTransform = - CalculateInternalTransformV2( - ZeroPoint, - ZeroPoint, - m_TransformMetaInfo->GetTranslations(), - m_TransformMetaInfo->GetRotations(), - m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), - m_DRTImage2MetaInfo->GetProjectionOriginLPS(), - - IECtoLPS_Directions - ); + CalculateInternalTransformV2( + ZeroPoint, + ZeroPoint, + m_TransformMetaInfo->GetTranslations(), + m_TransformMetaInfo->GetRotations(), + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero(), + m_DRTImage2MetaInfo->GetProjectionOriginLPS(), + IECtoLPS_Directions + ); // std::cout<<"pFakeIsoLPS: "<GetIECS2IECScannerR(), m_TransformMetaInfo->GetTranslations(), m_TransformMetaInfo->GetRotations(), @@ -2833,27 +2830,27 @@ void itkImageProcessor::GetProjectionImages(){ m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), IECtoLPS_Directions ); + + } -transform2 = CurrTransform; - -// transform2->SetComputeZYX(true); -// transform2->SetIdentity(); - -// transform2->SetTranslation( -// CurrTransform->GetTranslation()); -// transform2->SetRotation( -// CurrTransform->GetAngleX(), -// CurrTransform->GetAngleY(), -// CurrTransform->GetAngleZ() -// ); -// transform2 ->SetCenter( -// m_DRTImage2MetaInfo->GetProjectionOriginLPSZero()); -// transform2 ->SetCenter( -// m_CTMetaInfo->GetProjectionOriginLPSZero( -// m_DRTGeometryMetaInfo->GetProjectionCenter())); + transform2->SetComputeZYX(true); + transform2->SetIdentity(); + + transform2->SetTranslation( + CurrTransform->GetTranslation()); + transform2->SetRotation( + CurrTransform->GetAngleX(), + CurrTransform->GetAngleY(), + CurrTransform->GetAngleZ() + ); + + + transform2 ->SetCenter( + m_DRTImage2MetaInfo->GetProjectionOriginLPSZero()); + //transform2 ->Print(std::cout); diff --git a/reg23Topograms/itkDTRrecon/itkImageProcessor.h b/reg23Topograms/itkDTRrecon/itkImageProcessor.h index ec96d35..c91f4b4 100644 --- a/reg23Topograms/itkDTRrecon/itkImageProcessor.h +++ b/reg23Topograms/itkDTRrecon/itkImageProcessor.h @@ -268,28 +268,30 @@ private: void CalculateExternalUserTransform(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 - ); +// 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 +// ); - TransformType::Pointer - CalculateInternalTransformV2( - ImageType3D::PointType m_TranslationOffset, - ImageType3D::PointType m_RotationOffset, - ImageType3D::PointType m_TranslationUser, - ImageType3D::PointType m_RotationUser, - ImageType3D::PointType m_CalibratedProjectionCenter, - ImageType3D::PointType m_RTIsocenter, - InternalImageType::DirectionType m_IECtoLPSDirections - ); + /* Calculate the transform used in siddon. + * The isocentric transform is mapped to the calibrated center of projection */ + TransformType::Pointer + CalculateInternalTransformV2( + ImageType3D::PointType m_TranslationOffset, + ImageType3D::PointType m_RotationOffset, + ImageType3D::PointType m_TranslationUser, + ImageType3D::PointType m_RotationUser, + ImageType3D::PointType m_CalibratedProjectionCenter, + ImageType3D::PointType m_RTIsocenter, + InternalImageType::DirectionType m_IECtoLPSDirections + ); TransformType::Pointer From 97674c6b4b8337d1199298a7d4f0cbac22bdc094 Mon Sep 17 00:00:00 2001 From: Proton local user Date: Wed, 3 May 2023 15:19:50 +0200 Subject: [PATCH 3/3] Cleanup debug print --- .../itkDTRrecon/itkImageProcessor.cpp | 463 +----------------- .../itkDTRrecon/itkQtIterationUpdate.h | 2 +- 2 files changed, 22 insertions(+), 443 deletions(-) diff --git a/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp b/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp index 6ce2871..8af1bf8 100644 --- a/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp +++ b/reg23Topograms/itkDTRrecon/itkImageProcessor.cpp @@ -1414,79 +1414,6 @@ itkImageProcessor::CalculateInternalTransformV2( } - -//itkImageProcessor::TransformType::Pointer -//itkImageProcessor::CalculateInternalTransform( -// ImageType3D::PointType m_TranslationOffset, //IEC -// ImageType3D::PointType m_RotationOffset, //IEC -// ImageType3D::PointType m_TranslationUser, //IEC -// ImageType3D::PointType m_RotationUser, //IEC -// ImageType3D::PointType m_ProjectionTransformCenter, //LPS -// ImageType3D::PointType m_UserTransformCenter, //LPS -// ImageType3D::PointType m_OffsetTransformCenter, //LPS -// InternalImageType::DirectionType m_IECtoLPSDirections -// ) -//{ - -// //Convert all inputs into LPS - -// ImageType3D::PointType m_TOffsetLPS = -// m_IECtoLPSDirections * m_TranslationOffset; - -// ImageType3D::PointType m_ROffsetLPS = -// m_IECtoLPSDirections * m_RotationOffset; - -// ImageType3D::PointType m_TUserLPS = -// m_IECtoLPSDirections * m_TranslationUser; - -// ImageType3D::PointType m_RUserLPS = -// m_IECtoLPSDirections * m_RotationUser; - -// // Map user to the projection center -// TransformType::Pointer m_UserTransform = -// MapTransformToNewOrigin ( -// m_ProjectionTransformCenter - m_UserTransformCenter, -// m_TUserLPS, -// m_RUserLPS -// ); - -// // Map offset to the projection center -// TransformType::Pointer m_OffsetTransform = -// MapTransformToNewOrigin ( -// m_ProjectionTransformCenter - m_UserTransformCenter,//m_OffsetTransformCenter, -// m_TOffsetLPS, -// m_ROffsetLPS -// ); - -// TransformType::Pointer m_OutputTransform = -// TransformType::New(); -// m_OutputTransform ->SetComputeZYX(true); -// m_OutputTransform ->SetIdentity(); - -// m_OutputTransform->SetTranslation( -// m_OffsetTransform->GetTranslation() + -// m_UserTransform->GetTranslation() -// ); - -// m_OutputTransform->SetRotation( -// m_OffsetTransform->GetAngleX() + -// m_UserTransform->GetAngleX(), -// m_OffsetTransform->GetAngleY() + -// m_UserTransform->GetAngleY(), -// m_OffsetTransform->GetAngleZ() + -// m_UserTransform->GetAngleZ() -// ); - -// m_OutputTransform->SetCenter( -// m_ProjectionTransformCenter); - - -// std::cout<GetProjectionOriginLPS(); - //ImageType3D::PointType pFakeIsoLPS = - // m_CTMetaInfo->GetProjectionOriginLPS( - // m_DRTGeometryMetaInfo->GetProjectionCenter1()); -// CurrTransform = -// CalculateInternalTransform( -// ZeroPoint, -// ZeroPoint, -// m_TransformMetaInfo->GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), -// pFakeIsoLPS, -// ZeroPoint, -// IECtoLPS_Directions -// ); + CurrTransform = CalculateInternalTransformV2( ZeroPoint, @@ -1599,17 +1513,6 @@ void itkImageProcessor::InitializeRegistration( } else { -// CurrTransform = -// CalculateInternalTransform( -// ZeroPoint , -// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), -// m_TransformMetaInfo->GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), -// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), -// m_CTMetaInfo->GetImportOffset(), -// IECtoLPS_Directions -// ); CurrTransform = CalculateInternalTransformV2( ZeroPoint , m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), @@ -1620,7 +1523,6 @@ void itkImageProcessor::InitializeRegistration( IECtoLPS_Directions ); - } @@ -1635,6 +1537,7 @@ void itkImageProcessor::InitializeRegistration( ); transform1->SetCenter( m_DRTImage1MetaInfo->GetProjectionOriginLPSZero() ); + /********* END OF CALCULATE INTERNAL TRANSFORM FOR PROJ1 *********/ @@ -1645,24 +1548,7 @@ void itkImageProcessor::InitializeRegistration( ImageType3D::PointType pFakeIsoLPS = m_DRTImage2MetaInfo->GetProjectionOriginLPS(); - //ImageType3D::PointType pFakeIsoLPS = - // m_CTMetaInfo->GetProjectionOriginLPS( - // m_DRTGeometryMetaInfo->GetProjectionCenter2()); - - - -// CurrTransform = -// CalculateInternalTransform( -// ZeroPoint, -// ZeroPoint, -// m_TransformMetaInfo->GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), -// pFakeIsoLPS, -// ZeroPoint, -// IECtoLPS_Directions -// ); - CurrTransform = + CurrTransform = CalculateInternalTransformV2( ZeroPoint, ZeroPoint, @@ -1675,17 +1561,7 @@ void itkImageProcessor::InitializeRegistration( } else { -// CurrTransform = -// CalculateInternalTransform( -// ZeroPoint , -// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), -// m_TransformMetaInfo->GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), -// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), -// m_CTMetaInfo->GetImportOffset(), -// IECtoLPS_Directions -// ); + CurrTransform = CalculateInternalTransformV2( ZeroPoint, m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), @@ -1923,32 +1799,10 @@ void itkImageProcessor::InitializeProjector() m_CTMetaInfo->GetLPS2IECDirections().GetTranspose(); TransformType::Pointer CurrTransform; - //CurrTransform->SetComputeZYX(true); - //CurrTransform->SetIdentity(); if(m_RTMetaInfo == NULL) { - //AAAAAA TODOOOOO CERCA - ImageType3D::PointType pFakeIsoLPS = - m_DRTImage1MetaInfo->GetProjectionOriginLPS(); - - //ImageType3D::PointType pFakeIsoLPS = - // m_CTMetaInfo->GetProjectionOriginLPS( - // m_DRTGeometryMetaInfo->GetProjectionCenter1()); - - -// CurrTransform = -// CalculateInternalTransform( -// ZeroPoint, -// ZeroPoint, -// m_TransformMetaInfo->GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), -// pFakeIsoLPS, -// ZeroPoint, -// IECtoLPS_Directions -// ); CurrTransform = CalculateInternalTransformV2( ZeroPoint , ZeroPoint , @@ -1959,20 +1813,8 @@ void itkImageProcessor::InitializeProjector() IECtoLPS_Directions ); - } else { -// CurrTransform = -// CalculateInternalTransform( -// ZeroPoint , -// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), -// m_TransformMetaInfo->GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), -// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), -// m_CTMetaInfo->GetImportOffset(), -// IECtoLPS_Directions -// ); CurrTransform = CalculateInternalTransformV2( ZeroPoint , @@ -1999,10 +1841,9 @@ void itkImageProcessor::InitializeProjector() CurrTransform->GetAngleZ() ); - transform1->SetCenter( m_DRTImage1MetaInfo->GetProjectionOriginLPSZero() ); -// transform1->Print(std::cout); + // 2D Image 1 interpolator1->SetProjectionAngle( @@ -2013,40 +1854,13 @@ void itkImageProcessor::InitializeProjector() m_DRTGeometryMetaInfo->GetIntensityThreshold() ); interpolator1->SetPanelOffset( m_DRTGeometryMetaInfo->GetPanel1Offset()); - std::cout<< - "00000000000000 IP1 m_DRTGeometryMetaInfo->GetPanel2Offset()" - <GetPanel1Offset()<SetTransform(transform1); interpolator1->Initialize(); - - - //CurrTransform->SetComputeZYX(true); - //CurrTransform->SetIdentity(); - if(m_RTMetaInfo == NULL) { - ImageType3D::PointType pFakeIsoLPS = - m_DRTImage2MetaInfo->GetProjectionOriginLPS(); - //ImageType3D::PointType pFakeIsoLPS = - // m_CTMetaInfo->GetProjectionOriginLPS( - // m_DRTGeometryMetaInfo->GetProjectionCenter2()); - - - -// CurrTransform = -// CalculateInternalTransform( -// ZeroPoint, -// ZeroPoint, -// m_TransformMetaInfo->GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), -// pFakeIsoLPS, -// ZeroPoint, -// IECtoLPS_Directions -// ); CurrTransform = CalculateInternalTransformV2( ZeroPoint, @@ -2061,17 +1875,6 @@ void itkImageProcessor::InitializeProjector() } else { -// CurrTransform = -// CalculateInternalTransform( -// ZeroPoint , -// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), -// m_TransformMetaInfo->GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), -// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), -// m_CTMetaInfo->GetImportOffset(), -// IECtoLPS_Directions -// ); CurrTransform = CalculateInternalTransformV2( ZeroPoint, m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), @@ -2081,8 +1884,6 @@ void itkImageProcessor::InitializeProjector() m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetOriginLPS(), IECtoLPS_Directions ); - - } @@ -2111,25 +1912,10 @@ void itkImageProcessor::InitializeProjector() m_DRTGeometryMetaInfo->GetIntensityThreshold() ); interpolator2->SetPanelOffset( m_DRTGeometryMetaInfo->GetPanel2Offset()); - std::cout<< - "00000000000000 IP2 m_DRTGeometryMetaInfo->GetPanel2Offset()" - <GetPanel2Offset()<SetTransform(transform2); interpolator2->Initialize(); - // // 2D Image 2 - // interpolator2->SetProjectionAngle( - // dtr * - // m_DRTImage2MetaInfo->GetProjectionAngleLPS() ); - // interpolator2->SetFocalPointToIsocenterDistance( - // m_DRTImage2MetaInfo->GetSCD()); - // interpolator2->SetThreshold( - // m_DRTGeometryMetaInfo->GetIntensityThreshold() - // ); - // interpolator2->SetTransform(transform); - // interpolator2->Initialize(); - resampleFilter1 = ResampleFilterType::New(); resampleFilter1->SetInput( @@ -2282,9 +2068,6 @@ void itkImageProcessor::loadRTPlanInfo( ); -// std::cout<< "m_CTMetaInfo->GetImportOffset() " -// <GetImportOffset() <UpdateProjectionGeometryMeta(); this->InitializeProjector(); @@ -2331,11 +2114,11 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ IsocenterOffsetLPS = m_CTMetaInfo->ConvertIECPointToLPSPoint( m_DRTGeometryMetaInfo->GetProjectionCenterOffset1()); - std::cout<< "///////////////// PGEOM META BEG ///////////////" <GetProjectionCenter() <GetProjectionCenter() <SetProjectionAngleLPS( this->CalcProjectionAngleLPS( @@ -2376,20 +2159,6 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ m_DRTImage1MetaInfo->SetProjectionOriginLPSZero( CalibratedIsocenterZeroLPS); -// // This is based on the calibrated iso to be sure... -// std::vector vBounds = m_CTMetaInfo->CalculateRegions( -// NominalIsocenter_wZcorrectionLPS -//// m_DRTImage1MetaInfo->GetProjectionOriginLPS() -// ); - -// std::cout<<"Bounds1: " -// <SetSizeWithBounds( NULL,//vBounds.data(), m_DRTGeometryMetaInfo->GetDRT1Size(), @@ -2414,19 +2183,9 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ m_DRTGeometryMetaInfo->GetProjectionAngle1IEC() ), //m_DRTGeometryMetaInfo->GetProjectionAngle1IEC(),// m_DRTImage1MetaInfo->GetProjectionAngleLPS(), Std_DRT2LPS - ) /*- - CalcDRTImageOffset( - PanelOffsetIEC1, - this->CalcProjectionAngleLPS( - m_CTMetaInfo->GetPatientOrientation(), - m_DRTGeometryMetaInfo->GetProjectionAngle1IEC() ), - Std_DRT2LPS - )*/ + ) ); - std::cout<<"CALIBRATION GetOriginLPS "<GetOriginLPS()<SetImageDirectionsLPS( CalcDRTImageDirections( @@ -2437,24 +2196,6 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ Std_DRT2LPS) ); -// std::cout<<"IsocenterOffsetLPS"<< IsocenterOffsetLPS <GetSize()"<< m_DRTImage1MetaInfo->GetSize() <GetSpacing()"<< m_DRTImage1MetaInfo->GetSpacing() <GetOrigin()"<< m_DRTImage1MetaInfo->GetOrigin() <CalcProjectionAngleLPS( -// m_CTMetaInfo->GetPatientOrientation(), -// m_DRTGeometryMetaInfo->GetProjectionAngle1IEC() ), -// Std_DRT2LPS -// ) <GetCOV()"<< m_DRTImage1MetaInfo->GetCOV() <GetOriginLPS()"<< m_DRTImage1MetaInfo->GetOriginLPS() <GetProjectionAngleLPS()"<GetProjectionAngleLPS()<GetImageDirectionsLPS()"<< m_DRTImage1MetaInfo->GetImageDirectionsLPS() <SetProjectionOriginLPS( CalibratedIsocenterLPS); - // m_CTMetaInfo->GetProjectionOriginLPS( - // m_DRTGeometryMetaInfo->GetProjectionCenter2()) - // ); m_DRTImage2MetaInfo->SetProjectionOriginLPSZero( CalibratedIsocenterZeroLPS); - // m_CTMetaInfo->GetProjectionOriginLPSZero( - // m_DRTGeometryMetaInfo->GetProjectionCenter2()) - // ); -// vBounds.clear(); -// vBounds = m_CTMetaInfo->CalculateRegions( -// NominalIsocenter_wZcorrectionLPS//m_DRTImage2MetaInfo->GetProjectionOriginLPS() -// ); - -// std::cout<<"Bounds2: " -// <SetSizeWithBounds( NULL,//vBounds.data(), @@ -2541,8 +2264,6 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ Std_DRT2LPS )); - std::cout<<"m_DRTImage2MetaInfo->GetOriginLPS()"<< m_DRTImage2MetaInfo->GetOriginLPS() <SetOriginLPS( CalcDRTImageOrigin( @@ -2554,14 +2275,7 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ m_DRTGeometryMetaInfo->GetProjectionAngle2IEC()) , //m_DRTGeometryMetaInfo->GetProjectionAngle2IEC(),//m_DRTImage2MetaInfo->GetProjectionAngleLPS(), Std_DRT2LPS - ) /*- - CalcDRTImageOffset( - PanelOffsetIEC2, - this->CalcProjectionAngleLPS( - m_CTMetaInfo->GetPatientOrientation(), - m_DRTGeometryMetaInfo->GetProjectionAngle2IEC() ), - Std_DRT2LPS - )*/ + ) ); @@ -2574,26 +2288,6 @@ void itkImageProcessor::UpdateProjectionGeometryMeta(){ Std_DRT2LPS) ); -// std::cout<<"IsocenterOffsetLPS"<< IsocenterOffsetLPS <GetSize()"<< m_DRTImage2MetaInfo->GetSize() <GetSpacing()"<< m_DRTImage2MetaInfo->GetSpacing() <GetOrigin()"<< m_DRTImage2MetaInfo->GetOrigin() <CalcProjectionAngleLPS( -// m_CTMetaInfo->GetPatientOrientation(), -// m_DRTGeometryMetaInfo->GetProjectionAngle2IEC() ), -// Std_DRT2LPS -// ) <GetCOV()"<< m_DRTImage2MetaInfo->GetCOV() <GetOriginLPS() - Offset "<< m_DRTImage2MetaInfo->GetOriginLPS() <GetProjectionAngleLPS()"<GetProjectionAngleLPS()<GetImageDirectionsLPS()"<< m_DRTImage2MetaInfo->GetImageDirectionsLPS() <CalcDRTImageDirections(dAngle, stdDRT2LPS); - -// ImageType3D::PointType NewOffset = -// DRT2LPS * (m_DRTOffset); - -// return -// NewOffset; -//} void itkImageProcessor::GetProjectionImages(){ @@ -2664,31 +2342,10 @@ void itkImageProcessor::GetProjectionImages(){ IECtoLPS_Directions = m_CTMetaInfo->GetLPS2IECDirections().GetTranspose(); TransformType::Pointer CurrTransform; - //CurrTransform->SetComputeZYX(true); - //CurrTransform->SetIdentity(); + if(m_RTMetaInfo == NULL) { - - ImageType3D::PointType pFakeIsoLPS = - m_DRTImage1MetaInfo->GetProjectionOriginLPS(); - //m_CTMetaInfo->GetProjectionOriginLPS( - // m_DRTGeometryMetaInfo->GetProjectionCenter()); - -// std::cout<<"pFakeIsoLPS: "<GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), -// pFakeIsoLPS, -// ZeroPoint, -// IECtoLPS_Directions -// ); - CurrTransform = CalculateInternalTransformV2( ZeroPoint, @@ -2702,18 +2359,6 @@ void itkImageProcessor::GetProjectionImages(){ } else { -// CurrTransform = -// CalculateInternalTransform( -// ZeroPoint , -// m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), -// m_TransformMetaInfo->GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage1MetaInfo->GetProjectionOriginLPS(), -// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), -// m_CTMetaInfo->GetImportOffset(), -// IECtoLPS_Directions -// ); - CurrTransform = CalculateInternalTransformV2( ZeroPoint , m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), @@ -2726,8 +2371,6 @@ void itkImageProcessor::GetProjectionImages(){ } - std::cout<<"Curr GetCenter"<GetCenter()<GetIsocenterLPS()<SetComputeZYX(true); transform1->SetIdentity(); @@ -2739,22 +2382,9 @@ void itkImageProcessor::GetProjectionImages(){ CurrTransform->GetAngleY(), CurrTransform->GetAngleZ() ); - -// std::cout<< "itkImageProcessor::GetProjectionImages" <SetCenter( m_DRTImage1MetaInfo->GetProjectionOriginLPSZero()); -// std::cout<<"Angle1 "<GetProjectionAngleLPS() <GetProjectionOriginLPSZero() <GetProjectionOriginLPS()<GetProjectionAngleLPS() <GetProjectionOriginLPSZero() <GetProjectionOriginLPS()<Print(std::cout); // The parameters of interpolator1, such as ProjectionAngle and FocalPointToIsocenterDistance @@ -2764,36 +2394,13 @@ void itkImageProcessor::GetProjectionImages(){ interpolator1->Initialize(); - - - transform2->SetComputeZYX(true); transform2->SetIdentity(); - //CurrTransform->SetComputeZYX(true); - //CurrTransform->SetIdentity(); if(m_RTMetaInfo == NULL) { - ImageType3D::PointType pFakeIsoLPS = - m_DRTImage2MetaInfo->GetProjectionOriginLPS(); - //m_CTMetaInfo->GetProjectionOriginLPS( - // m_DRTGeometryMetaInfo->GetProjectionCenter()); - -// std::cout<<"pFakeIsoLPS: "<GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), -// pFakeIsoLPS, -// ZeroPoint, -// IECtoLPS_Directions -// ); CurrTransform = CalculateInternalTransformV2( ZeroPoint, @@ -2805,22 +2412,8 @@ void itkImageProcessor::GetProjectionImages(){ IECtoLPS_Directions ); -// std::cout<<"pFakeIsoLPS: "<GetIECS2IECScannerR(), -// m_TransformMetaInfo->GetTranslations(), -// m_TransformMetaInfo->GetRotations(), -// m_DRTImage2MetaInfo->GetProjectionOriginLPS(), -// m_RTMetaInfo->GetIsocenterLPS() - m_CTMetaInfo->GetImportOffset(), -// m_CTMetaInfo->GetImportOffset(), -// IECtoLPS_Directions -// ); - CurrTransform = CalculateInternalTransformV2( ZeroPoint, m_DRTGeometryMetaInfo->GetIECS2IECScannerR(), @@ -2847,34 +2440,21 @@ void itkImageProcessor::GetProjectionImages(){ CurrTransform->GetAngleZ() ); - transform2 ->SetCenter( m_DRTImage2MetaInfo->GetProjectionOriginLPSZero()); - //transform2 ->Print(std::cout); - - - // // The parameters of interpolator2, such as ProjectionAngle and FocalPointToIsocenterDistance // // have been set before registration. Here we only need to replace the initial // // transform with the final transform. interpolator2->SetTransform(transform2); //finalTransform); interpolator2->Initialize(); -// std::cout<<"pFakeIsoLPS: "<Update(); filter2->Update(); imageDRT1In = filter1->GetOutput(); imageDRT2In = filter2->GetOutput(); -// std::cout<< "itkImageProcessor::GetProjectionImages END" <GetInverseTransform()->GetMatrix()<GetInverseTransform()->GetTranslation()<GetOutput()->GetBounds(); - - std::cout<< "-------- Proj 2 --------" <GetOutput()->GetBounds(); +// std::cout<< "-------- Proj 2 --------" <GetOutput(); diff --git a/reg23Topograms/itkDTRrecon/itkQtIterationUpdate.h b/reg23Topograms/itkDTRrecon/itkQtIterationUpdate.h index 402c4b6..91e982a 100644 --- a/reg23Topograms/itkDTRrecon/itkQtIterationUpdate.h +++ b/reg23Topograms/itkDTRrecon/itkQtIterationUpdate.h @@ -97,7 +97,7 @@ public: Execute(const itk::Object* object, const itk::EventObject& event) override { if(objIterUpdate->getAbortFlag()){ - std::cout << "Abortisci per piacere" << std::endl; + std::cout << "AbortRequest" << std::endl; objIterUpdate->setAbortFlag(false); throw itk::ProcessAborted(); }