[Insight-users] empty image as output in Windows
    Xabier Artaechevarria Artieda 
    xabiarta at unav.es
       
    Mon Apr  7 07:38:53 EDT 2008
    
    
  
Hi all,
I moved from Linux to Windows and I am having a problem with a filter  
I developed.
It worked in Linux, but when I compile with Visual Studio 2003 the  
output image is 0. The program should not be changed, should it? What  
can the problem be?
I allocate memory and the iterators seem to work fine, but it is as if  
the pipeline did not work properly.
Thanks for your help and regards,
Xabi
// generate data
template< class TInputImage, class TOutputImage >
void
HuThresholdImageFilter< TInputImage, TOutputImage >
::GenerateData()
{
   itkDebugMacro(<< "HuThresholdImageFilter::GenerateData() called");
   // Get the input and output pointers
   InputImageConstPointer  inputPtr  = this->GetInput(0);
   OutputImagePointer      outputPtr = this->GetOutput();
   this->AllocateOutputs();
   // Iterator Typedefs for this routine
   typedef ImageRegionConstIterator<TInputImage>       InputIterator;
   typedef ImageRegionIterator<TOutputImage>           OutputIterator;
   typedef RegionFilter<TOutputImage, TOutputImage>    RegionFilter;
   OutputImageRegionType Region;
   typename TOutputImage::Pointer imagen           =  TOutputImage::New();
   outputPtr->SetRegions( inputPtr->GetLargestPossibleRegion() );
   outputPtr->Allocate();
   InputIterator  in  = InputIterator (inputPtr,  
inputPtr->GetRequestedRegion());
   OutputIterator it =  OutputIterator(outputPtr,  
inputPtr->GetLargestPossibleRegion());
   double  Ti=m_Ti;
   std::cout << Ti << std::endl;
   //Bucle para buscar el mejor Ti
   double ub, un, Nb, Nn, Tii, i;
   Tii = 0;
   i=1;
   //Ti=33000;
   //Create mask
   for ( in.GoToBegin(), it.GoToBegin(); !in.IsAtEnd(), !it.IsAtEnd();  
++in, ++it )
     {
     if(in.Get()>=Ti)
       {
       it.Set(1);
       }
     else
       {
       it.Set(0);
       }
     }
   while (fabs(Tii-Ti)>m_Diff)
     {
     for ( in.GoToBegin(), it.GoToBegin(); !in.IsAtEnd(); ++in, ++it )
       {
       if (it.Get())
         {
         ub=ub+in.Get();
         Nb++;
         }
       else
         {
         un=un+in.Get();
         Nn++;
         }
       }
     if (Nb!=0) ub=ub/Nb;
     else ub=0;
     if (Nn!=0) un=un/Nn;
     else un=0;
     Ti=Tii;
     std::cout << "un" << un << std::endl;
     Tii=(ub+un)/2;
     ub=0;un=0;
     Nn=0;Nb=0;
     i++;
     std::cout << "Iteration: " << i << std::endl;
     std::cout << "Threshold: " << Tii << std::endl;
     for ( in.GoToBegin(), it.GoToBegin(); !in.IsAtEnd(); ++in, ++it )
       {
       it.Set( in.Get()>=Tii );
       }
     }
   this->GraftOutput(outputPtr);
}
-- 
Xabier Artaechevarria
Cancer Imaging Laboratory
Centre for Applied Medical Research
www.cima.es
----------------------------------------------------------------
Este mensaje ha sido enviado desde https://webmail.unav.es
    
    
More information about the Insight-users
mailing list