Skip to content
Snippets Groups Projects
Commit 239e32b0 authored by Julien Michel's avatar Julien Michel
Browse files

ENH: Make inverse fields output non-mandatory

parent 390ef464
Branches
Tags
No related merge requests found
...@@ -91,7 +91,7 @@ private: ...@@ -91,7 +91,7 @@ private:
} }
void DoInit() void DoInit()
{ {
SetName("StereoRectificationGridGenerator"); SetName("StereoRectificationGridGenerator");
SetDescription("Generates two deformation fields to stereo-rectify (i.e. resample in epipolar geometry) a pair of stereo images up to the sensor model precision"); SetDescription("Generates two deformation fields to stereo-rectify (i.e. resample in epipolar geometry) a pair of stereo images up to the sensor model precision");
...@@ -151,9 +151,11 @@ private: ...@@ -151,9 +151,11 @@ private:
AddParameter(ParameterType_OutputImage, "inverse.outleft", "Left inverse deformation grid"); AddParameter(ParameterType_OutputImage, "inverse.outleft", "Left inverse deformation grid");
SetParameterDescription("inverse.outleft","The output deformation grid to be used to resample the epipolar left image"); SetParameterDescription("inverse.outleft","The output deformation grid to be used to resample the epipolar left image");
MandatoryOff("inverse.outleft");
AddParameter(ParameterType_OutputImage, "inverse.outright", "Right inverse deformation grid"); AddParameter(ParameterType_OutputImage, "inverse.outright", "Right inverse deformation grid");
SetParameterDescription("inverse.outright","The output deformation grid to be used to resample the epipolar right image"); SetParameterDescription("inverse.outright","The output deformation grid to be used to resample the epipolar right image");
MandatoryOff("inverse.outright");
AddParameter(ParameterType_Int, "inverse.ssrate", "Sub-sampling rate for inversion"); AddParameter(ParameterType_Int, "inverse.ssrate", "Sub-sampling rate for inversion");
SetParameterDescription("inverse.ssrate","Grid inversion is an heavy process that implies spline regression on control points. To avoid eating to much memory, this parameter allows to first sub-sample the field to invert."); SetParameterDescription("inverse.ssrate","Grid inversion is an heavy process that implies spline regression on control points. To avoid eating to much memory, this parameter allows to first sub-sample the field to invert.");
...@@ -168,48 +170,51 @@ private: ...@@ -168,48 +170,51 @@ private:
SetDocExampleParameterValue("epi.elevation.average","400"); SetDocExampleParameterValue("epi.elevation.average","400");
} }
void DoUpdateParameters() void DoUpdateParameters()
{ {
// Nothing to do here // Nothing to do here
} }
void DoExecute() void DoExecute()
{ {
m_DeformationFieldSource->SetLeftImage(GetParameterImage("io.inleft")); m_DeformationFieldSource->SetLeftImage(GetParameterImage("io.inleft"));
m_DeformationFieldSource->SetRightImage(GetParameterImage("io.inright")); m_DeformationFieldSource->SetRightImage(GetParameterImage("io.inright"));
m_DeformationFieldSource->SetGridStep(GetParameterInt("epi.step")); m_DeformationFieldSource->SetGridStep(GetParameterInt("epi.step"));
m_DeformationFieldSource->SetScale(GetParameterFloat("epi.scale")); m_DeformationFieldSource->SetScale(GetParameterFloat("epi.scale"));
switch(ElevationParametersHandler::GetElevationType(this, "epi.elevation")) switch(ElevationParametersHandler::GetElevationType(this, "epi.elevation"))
{ {
case Elevation_DEM: case Elevation_DEM:
{ {
m_DeformationFieldSource->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "epi.elevation")); m_DeformationFieldSource->SetDEMDirectory(ElevationParametersHandler::GetDEMDirectory(this, "epi.elevation"));
m_DeformationFieldSource->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "epi.elevation")); m_DeformationFieldSource->SetGeoidFile(ElevationParametersHandler::GetGeoidFile(this, "epi.elevation"));
} }
break; break;
case Elevation_Average: case Elevation_Average:
{ {
m_DeformationFieldSource->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "epi.elevation")); m_DeformationFieldSource->SetAverageElevation(ElevationParametersHandler::GetAverageElevation(this, "epi.elevation"));
} }
} }
AddProcess(m_DeformationFieldSource, "Computing epipolar grids ..."); AddProcess(m_DeformationFieldSource, "Computing epipolar grids ...");
m_DeformationFieldSource->Update(); m_DeformationFieldSource->Update();
SetParameterInt("epi.rectsizex",m_DeformationFieldSource->GetRectifiedImageSize()[0]); SetParameterInt("epi.rectsizex",m_DeformationFieldSource->GetRectifiedImageSize()[0]);
SetParameterInt("epi.rectsizey",m_DeformationFieldSource->GetRectifiedImageSize()[1]); SetParameterInt("epi.rectsizey",m_DeformationFieldSource->GetRectifiedImageSize()[1]);
SetParameterFloat("epi.baseline",m_DeformationFieldSource->GetMeanBaselineRatio()); SetParameterFloat("epi.baseline",m_DeformationFieldSource->GetMeanBaselineRatio());
SetParameterOutputImage("io.outleft",m_DeformationFieldSource->GetLeftDeformationFieldOutput()); SetParameterOutputImage("io.outleft",m_DeformationFieldSource->GetLeftDeformationFieldOutput());
SetParameterOutputImage("io.outright",m_DeformationFieldSource->GetRightDeformationFieldOutput()); SetParameterOutputImage("io.outright",m_DeformationFieldSource->GetRightDeformationFieldOutput());
// Inverse part // Inverse part
// lots of casting here ... // lots of casting here ...
// Left field inversion // Left field inversion
if(IsParameterEnabled("inverse.outleft"))
{
m_LeftDeformationFieldCaster->SetInput(m_DeformationFieldSource->GetLeftDeformationFieldOutput()); m_LeftDeformationFieldCaster->SetInput(m_DeformationFieldSource->GetLeftDeformationFieldOutput());
m_LeftInvertDeformationFieldFilter->SetInput(m_LeftDeformationFieldCaster->GetOutput()); m_LeftInvertDeformationFieldFilter->SetInput(m_LeftDeformationFieldCaster->GetOutput());
...@@ -238,8 +243,13 @@ void DoExecute() ...@@ -238,8 +243,13 @@ void DoExecute()
m_LeftImageListFilter->SetInput(m_LeftImageList); m_LeftImageListFilter->SetInput(m_LeftImageList);
SetParameterOutputImage("inverse.outleft",m_LeftImageListFilter->GetOutput()); SetParameterOutputImage("inverse.outleft",m_LeftImageListFilter->GetOutput());
}
// Right field inversion // Right field inversion
if(IsParameterEnabled("inverse.outright"))
{
m_RightDeformationFieldCaster->SetInput(m_DeformationFieldSource->GetRightDeformationFieldOutput()); m_RightDeformationFieldCaster->SetInput(m_DeformationFieldSource->GetRightDeformationFieldOutput());
...@@ -262,7 +272,8 @@ void DoExecute() ...@@ -262,7 +272,8 @@ void DoExecute()
m_RightImageListFilter->SetInput(m_RightImageList); m_RightImageListFilter->SetInput(m_RightImageList);
SetParameterOutputImage("inverse.outright",m_RightImageListFilter->GetOutput()); SetParameterOutputImage("inverse.outright",m_RightImageListFilter->GetOutput());
} }
}
DeformationFieldSourceType::Pointer m_DeformationFieldSource; DeformationFieldSourceType::Pointer m_DeformationFieldSource;
InverseDeformationFieldFilterType::Pointer m_LeftInvertDeformationFieldFilter; InverseDeformationFieldFilterType::Pointer m_LeftInvertDeformationFieldFilter;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment