this->m_SourceToAxis = 1000.0;
this->m_EdgePaddingValue = itk::NumericTraits<OutputPixelType>::Zero;//density images
this->m_RigidTransformMatrix.SetIdentity();
+ this->m_PanelShift[0] = 0.;
+ this->m_PanelShift[1] = 0.;
//Parameters for output
this->m_OutputSpacing.Fill(1);
BackProjectImageFilter<InputImageType, OutputImageType>
::CalculateProjectionMatrix( void )
{
- InputSpacingType inputSpacing=this->GetInput()->GetSpacing();
+ //InputSpacingType inputSpacing=this->GetInput()->GetSpacing();
// Projection on YZ plane+pixelTrans
itk::Matrix<double,3,4> temp;
template <class InputImageType, class OutputImageType>
void
BackProjectImageFilter<InputImageType, OutputImageType>
- ::ThreadedGenerateData( const OutputImageRegionType & outputRegionForThread, int threadId )
+ ::ThreadedGenerateData( const OutputImageRegionType & outputRegionForThread, itk::ThreadIdType threadId )
{
//Projection pointer
InputImageConstPointer inputPtr=this->GetInput();
iPoint.Fill(itk::NumericTraits<double>::Zero);
OutputIndexType oIndex;
ContinuousInputIndexType iIndex;
- InputSizeType inputSize=inputPtr->GetLargestPossibleRegion().GetSize();
//Get the first output coordinate
oIndex=iterator.GetIndex();//costly but only once a thread
//Compute the first input coordinate (invert Y/X)
homInputPoint= (m_ProjectionMatrix * homOutputPoint);
- iPoint[0]=-homInputPoint[0]/homInputPoint[2];
- iPoint[1]=homInputPoint[1]/homInputPoint[2];
+ iPoint[0]=-homInputPoint[0]/homInputPoint[2] + m_PanelShift[0];
+ iPoint[1]=homInputPoint[1]/homInputPoint[2] + m_PanelShift[1];
typedef itk::LinearInterpolateImageFunction< InputImageType, double > InterpolatorType;
typename InterpolatorType::Pointer interpolator = InterpolatorType::New();