[Insight-users] How to get a progess from an iterator?
    lynx.abraxas at freenet.de 
    lynx.abraxas at freenet.de
       
    Tue Dec  8 15:09:28 EST 2009
    
    
  
On 06/12/09 18:24:51, Luis Ibanez wrote:
> Hi  Lynx,
>
> A simpler option is to just insert a counter inside
> the while-loop of the iterators. That's after all,
> what the code of the ProgressReporter does.
>
Thank You very much Luis. This was exacly what I was trying to do but I didn't
find a way to get the total number of pixels...
I had some strange problem though:
As I started from the ShapedNeighborhoodIterator example form the users  guide
(which is in 2D) I had modified things to my need and changed to 3D.
Somehow  that  all  worked  until I needed the new variables for the progress.
Just from declaring a variable I got a segfault. Changing the position of  the
declaration solved the problem for one variable but not for the rest.
I finally figured out after hours that the problem was the uninitialized third
dimension of the iterator neighbourhood. If I'm not mistaken  such  a  problem
was discussed a few weeks before here on the list...
I  now  wonder  if  there  is  a way to prevent this in futur programming by a
cleaner or more secure programming style. Is  there  a  way  to  prevent  such
faults?  Or  at least to help the compiler find uninitialized components of an
array for reporting at compile time?
Also I found the cool code below to easily implement 2D and  3D  programs.  Is
there  any  chance  to  make  that work also with a ShapedNeighborhoodIterator
who's neighbourhood (a ball) needs to be initialize once in 2D and once in 3D?
Thanks again Luis for Your help.
Lynx
___________________________
int main( int argc, char *argv[] ){
    if ( argc < 8 ){
        std::cerr << "Missing parameters. " << std::endl;
        std::cerr << "Usage: " << std::endl;
        std::cerr << argv[0]
                  << "ImageDimension inputImageFile outputImageFile element_radius foreground background maskground"
                  << std::endl;
        return -1;
        }
    unsigned int dim;
    dim= atoi(argv[1]);
    argv++; //shift();
    argc--;
    switch(dim)
        {
        case 2:
            masked_mean_filter<2>( argc, argv );
            break;
        case 3:
            masked_mean_filter<3>( argc, argv );
            break;
        default:
            std::cerr << "Unsupported dimension" << std::endl;
            exit( EXIT_FAILURE );
        }
    }
    
    
More information about the Insight-users
mailing list