Commit 2a58c00b authored by remi cresson's avatar remi cresson
Browse files

WIP

parent 9ed371d3
......@@ -40,7 +40,6 @@ void
TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
::SmartPad(RegionType& region, const SizeType &patchSize)
{
std::cout << "SMARTPAD: patchSize=" << patchSize << std::endl;
for(unsigned int dim = 0; dim<OutputImageType::ImageDimension; ++dim)
{
const SizeValueType psz = patchSize[dim];
......@@ -127,27 +126,13 @@ TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
::ImageToExtent(ImageType* image, PointType &extentInf, PointType &extentSup, const SizeType &receptiveField,
const PointType &refExtInf, const SpacingType &refSpacing)
{
std::cout << "ImageToExtent() " << std::endl;
// First, compute the image extent (Here, pixel = area)
std::cout << "ComputeImageExtent() " << std::endl;
ComputeImageExtent(image, extentInf, extentSup, receptiveField);
std::cout << "extentInf " << extentInf << std::endl;
std::cout << "extentSup " << extentSup << std::endl;
std::cout << "refExtInf " << refExtInf << std::endl;
std::cout << "refSpacing " << refSpacing << std::endl;
// Then, clip this physical extent to the reference image grid
std::cout << "AlignExtentToReferenceGrid() " << std::endl;
AlignExtentToReferenceGrid(extentInf, extentSup, refExtInf, refSpacing);
std::cout << "extentInf " << extentInf << std::endl;
std::cout << "extentSup " << extentSup << std::endl;
std::cout << "refExtInf " << refExtInf << std::endl;
std::cout << "refSpacing " << refSpacing << std::endl;
std::cout << "ImageToExtent() ok" << std::endl;
}
/**
......@@ -160,22 +145,14 @@ bool
TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
::OutputRegionToInputRegion(const RegionType &outputRegion, RegionType &inputRegion, ImageType* &inputImage)
{
std::cout << "OutputRegionToInputRegion()" << std::endl;
std::cout << "OutputRegionToInputRegion(): outputRegion=" << outputRegion << std::endl;
// Mosaic Region Start & End (mosaic image index)
const IndexType outIndexStart = outputRegion.GetIndex();
const IndexType outIndexEnd = outputRegion.GetUpperIndex();
std::cout << "OutputRegionToInputRegion(): outIndexStart=" << outIndexStart << std::endl;
std::cout << "OutputRegionToInputRegion(): outIndexEnd=" << outIndexEnd << std::endl;
// Mosaic Region Start & End (geo)
PointType outPointStart, outPointEnd;
this->GetOutput()->TransformIndexToPhysicalPoint(outIndexStart, outPointStart);
this->GetOutput()->TransformIndexToPhysicalPoint(outIndexEnd , outPointEnd );
std::cout << "OutputRegionToInputRegion(): outPointStart=" << outPointStart << std::endl;
std::cout << "OutputRegionToInputRegion(): outPointEnd=" << outPointEnd << std::endl;
// Add the half-width pixel size of the input image
// and remove the half-width pixel size of the output image
......@@ -185,7 +162,6 @@ TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
for(unsigned int dim = 0; dim<OutputImageType::ImageDimension; ++dim)
{
const SpacingValueType border = 0.5 * (inputSpc[dim] - outputSpc[dim]);
std::cout << "SpacingValueType=" << border << std::endl;
if (outPointStart[dim] < outPointEnd[dim])
{
outPointStart[dim] += border;
......@@ -197,17 +173,12 @@ TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
outPointEnd [dim] += border;
}
}
std::cout << "OutputRegionToInputRegion(): outPointStart=" << outPointStart << std::endl;
std::cout << "OutputRegionToInputRegion(): outPointEnd=" << outPointEnd << std::endl;
// Mosaic Region Start & End (input image index)
IndexType defIndexStart, defIndexEnd;
inputImage->TransformPhysicalPointToIndex(outPointStart, defIndexStart);
inputImage->TransformPhysicalPointToIndex(outPointEnd , defIndexEnd);
std::cout << "OutputRegionToInputRegion(): defIndexStart=" << defIndexStart << std::endl;
std::cout << "OutputRegionToInputRegion(): defIndexEnd=" << defIndexEnd << std::endl;
// Compute input image region
for(unsigned int dim = 0; dim<OutputImageType::ImageDimension; ++dim)
{
......@@ -215,16 +186,8 @@ TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
inputRegion.SetSize(dim, vnl_math_max(defIndexStart[dim], defIndexEnd[dim]) - inputRegion.GetIndex(dim) + 1);
}
std::cout << "OutputRegionToInputRegion(): inputRegion=" << inputRegion << std::endl;
// crop the input requested region at the input's largest possible region
std::cout << "OutputRegionToInputRegion() ok" << std::endl;
bool ret = inputRegion.Crop( inputImage->GetLargestPossibleRegion() );
std::cout << "OutputRegionToInputRegion() returns " << ret << std::endl;
std::cout << "OutputRegionToInputRegion() returns " << inputRegion << std::endl;
return ret;
return inputRegion.Crop( inputImage->GetLargestPossibleRegion() );
}
......@@ -266,7 +229,6 @@ void
TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
::GenerateOutputInformation()
{
std::cout << "GenerateOutputInformation()" << std::endl;
Superclass::GenerateOutputInformation();
//////////////////////////////////////////////////////////////////////////////////////////
......@@ -277,17 +239,12 @@ std::cout << "GenerateOutputInformation()" << std::endl;
m_OutputSpacing = this->GetInput(m_ReferenceGridImage)->GetSignedSpacing();
m_OutputSpacing[0] *= m_OutputSpacingScale;
m_OutputSpacing[1] *= m_OutputSpacingScale;
std::cout << "Compute the spacing from the scale factor and the reference grid" << std::endl;
// Compute the extent of the reference image
PointType refExtInf, refExtSup;
ImageType * refImage = static_cast<ImageType *>( Superclass::ProcessObject::GetInput(m_ReferenceGridImage) );
ComputeImageExtent(refImage, refExtInf, refExtSup, this->GetInputReceptiveFields().at(m_ReferenceGridImage));
std::cout << "Compute the extent of the reference image" << std::endl;
std::cout << "GenerateOutputInformation() refExtInf=" << refExtInf << std::endl;
std::cout << "GenerateOutputInformation() refExtSup=" << refExtSup << std::endl;
// Compute the extent (pixel area) of each input images and update the global extent
PointType extentInf, extentSup;
extentSup.Fill(itk::NumericTraits<double>::max());
......@@ -300,8 +257,6 @@ std::cout << "GenerateOutputInformation() refExtSup=" << refExtSup << std::endl;
PointType currentInputImageExtentInf, currentInputImageExtentSup;
ImageToExtent(currentImage, currentInputImageExtentInf, currentInputImageExtentSup,
this->GetInputReceptiveFields()[imageIndex], refExtInf, m_OutputSpacing);
std::cout << "GenerateOutputInformation() currentInputImageExtentInf=" << currentInputImageExtentInf << std::endl;
std::cout << "GenerateOutputInformation() currentInputImageExtentSup=" << currentInputImageExtentSup << std::endl;
for(unsigned int dim = 0; dim<ImageType::ImageDimension; ++dim)
{
......@@ -314,10 +269,7 @@ std::cout << "GenerateOutputInformation() refExtSup=" << refExtSup << std::endl;
for(unsigned int dim = 0; dim<ImageType::ImageDimension; ++dim)
m_OutputSize[dim] = std::floor( (extentSup[dim] - extentInf[dim]) / vcl_abs(m_OutputSpacing[dim]) ) ;
m_OutputOrigin[0] = extentInf[0] + 0.5 * m_OutputSpacing[0];
m_OutputOrigin[1] = extentSup[1] + 0.5 * m_OutputSpacing[0];
std::cout << "m_OutputOrigin=" << m_OutputOrigin << std::endl;
std::cout << "Input Origin=" << this->GetInput(0)->GetOrigin() << std::endl;
m_OutputOrigin[1] = extentSup[1] - 0.5 * m_OutputSpacing[0];
// Set output grid size
if (!m_ForceOutputGridSize)
......@@ -381,8 +333,6 @@ std::cout << "GenerateOutputInformation() refExtSup=" << refExtSup << std::endl;
itk::EncapsulateMetaData(outputPtr->GetMetaDataDictionary(), MetaDataKey::TileHintX, m_OutputGridSize[0]);
itk::EncapsulateMetaData(outputPtr->GetMetaDataDictionary(), MetaDataKey::TileHintY, m_OutputGridSize[1]);
std::cout << "largestPossibleRegion is " << largestPossibleRegion << std::endl;
std::cout << "GenerateOutputInformation() ok" << std::endl;
}
......@@ -391,20 +341,15 @@ void
TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
::GenerateInputRequestedRegion()
{
std::cout << "GenerateInputRequestedRegion()" << std::endl;
Superclass::GenerateInputRequestedRegion();
// Output requested region
RegionType requestedRegion = this->GetOutput()->GetRequestedRegion();
std::cout << "Req output region (nefore aligment) : " << requestedRegion << std::endl;
// First, align the output region
EnlargeToAlignedRegion(requestedRegion);
std::cout << "Req output region (after aligment) : " << requestedRegion << std::endl;
// For each image, get the requested region
for(unsigned int i = 0; i < this->GetNumberOfInputs(); ++i)
{
......@@ -415,7 +360,7 @@ TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
if (!OutputRegionToInputRegion(requestedRegion, inRegion, inputImage) )
{
// Image does not overlap requested region: set requested region to null
std::cout << "Image #" << i << " :\n" << inRegion << " is outside the requested region" << std::endl;
itkExceptionMacro("Image #" << i << " :\n" << inRegion << " is outside the requested region" << std::endl);
inRegion.GetModifiableIndex().Fill(0);
inRegion.GetModifiableSize().Fill(0);
}
......@@ -426,9 +371,7 @@ TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
toPad[1] -= 1 + (this->GetOutputExpressionFields().at(0)[1] - 1) * m_OutputSpacingScale;
// Pad with radius
std::cout << "Before smartpad image " << i << " req region is " << inRegion << std::endl;
SmartPad(inRegion, toPad);
std::cout << "After smartpad image " << i << " req region is " << inRegion << std::endl;
// We need to avoid some extrapolation when mode is patch-based.
// The reason is that, when some input have a lower spacing than the
......@@ -445,10 +388,7 @@ TensorflowMultisourceModelFilter<TInputImage, TOutputImage>
// Update the requested region
inputImage->SetRequestedRegion(inRegion);
std::cout << "image " << i << " req region is " << inRegion << std::endl;
} // next image
std::cout << "GenerateInputRequestedRegion() ok" << std::endl;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment