[Insight-users] Bug reporting for basic filter implementation

Quan Chen quanchen at gmail.com
Mon Oct 11 16:51:29 EDT 2004


The setMacro take care of the Modified() and debug macro issue, so the
problem only restricted to those set functions declared without using
setMacro.

I am wondering why in CannyEdgeDetection function, the setVariance and
setMaximumError is first declared with setMacro and then overided ???
Is that the copy constructor = of ArrayType is not defined? i.e. the
m_Variance=v doesn't work?



On Sat, 09 Oct 2004 18:45:56 -0400, Luis Ibanez <luis.ibanez at kitware.com> wrote:
> 
> Hi Quan,
> 
> Thanks for pointing this out.
> 
> You are right, these Set() methods are missing the
> invocation to Modified(). They are also missing
> the invocation for the Debug macros.
> 
> Could you please log this as a bug entry ?
> 
> You can do this in the following link
> 
>      http://www.itk.org/Bug/
> 
> You can open an account by using your email.
> After that you can login in the system and
> "Add a new Bug" entry.
> 
> Please let us know if you encounter any problem
> while logging the bug entry.
> 
>    Thanks
> 
>      Luis
> 
> ---------------------
> 
> 
> Quan Chen wrote:
> > Well, I am not sure if it can be termed as a bug or just inconsistency in
> > programming.  However, I tryed CannyEdgeDetectionImageFilter, In the
> > itkCannyEdgeDetectionImageFilter.h, there are several function definitions:
> >
> >   /** Standard get/set macros for filter parameters. */
> >   itkSetMacro(Variance, ArrayType);
> >   itkGetMacro(Variance, const ArrayType);
> >   itkSetMacro(MaximumError, ArrayType);
> >   itkGetMacro(MaximumError, const ArrayType);
> >
> >   /** Set/Get the Variance parameter used by the Gaussian smoothing
> >       filter in this algorithm */
> >   void SetVariance(const typename ArrayType::ValueType v)
> >   {
> >     m_Variance.Fill(v);
> >   }
> >
> >   /** Set/Get the MaximumError paramter used by the Gaussian smoothing
> > filter
> >       in this algorithm */
> >   void SetMaximumError(const typename ArrayType::ValueType v)
> >   {
> >     m_MaximumError.Fill(v);
> >   }
> >
> > However, shouldn't there be a
> > this->Modified();
> > in each functions?  I know several other filter functions are implemented
> > that way, e.g. itkGradientMagnitudeRecursiveGaussianImageFilter.  As far as
> > I understand, the itk use those pipe line structures, so if you changed on
> > components in the pipe line, you should inform those behind you.
> > Also, there are lines like this
> >  itkSetMacro(Threshold, OutputImagePixelType );
> >   itkGetMacro(Threshold, OutputImagePixelType);
> >   itkSetMacro(OutsideValue, OutputImagePixelType);
> >   itkGetMacro(OutsideValue, OutputImagePixelType);
> > I believe we should expand those and add that modified() call too.
> >
> > I didn't check other filters, my guess is there will be other filters
> > implemented that miss this line.
> >
> > I found this problem when I modify the application example
> > "GeodesicActiveContour".  I replace the gradient filter with the Canny
> > filter.  However, I noticed that when I change the sigma value (which I
> > modified to reflect variance in cannyfilter), I find that the program
> > doesn't react to this change and even if I click the button trying to ask
> > the program to recalculate, it fail to do anything.
> >
> > BTW, the version I am using is the 1.8.0 version, which I believe is the
> > up-to-date one.
> > _______________________________________________
> > Insight-users mailing list
> > Insight-users at itk.org
> > http://www.itk.org/mailman/listinfo/insight-users
> >
> >
> 
>


More information about the Insight-users mailing list