[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