[Insight-users] Re: Wondering if it is a bug in Danielsson distance map filter
Luis Ibanez
luis.ibanez at kitware.com
Thu, 15 Apr 2004 19:39:06 -0400
Hi Radhika,
Thanks for posting this detailed report.
This looks like a bug...
Just a question... what is the pixel type that you
use as output for the ShiftScale image ?
I'm wondering that if it is a float pixel type, we
may be dealing with a pixel that has a float value
very close to zero in the image passed as input
to the Danielsson filter.
Please let us know,
Thanks
-----------------------------
Radhika Sivaramakrishna wrote:
> Hi Luis,
> I am observing a strange behavior in the Danielsson map filter and I am
> wondering if it is a bug. I have been experimenting with this for a few
> days now and I have found this behavior even on 3D images. I have
> attached an image (Mask_2D.img) that I ran the distance map filter on. I
> inverted this mask before running the filter. I ran it with and without
> setting UseImageSpacing. When I do not
>
> set UseImageSpacing, I observe some strange behavior. It sets 1 in
> places where it should not. Could you explain what is happening? My
> pixel type is unsigned char. Here is a very small portion of the code
> that just runs the shiftscale and Danielsson Filter. In the attached
> results you will clearly see an extra 1 in location (8,18) which should
> not be. I don't know if I am using this incorrectly or something else is
> happening.
>
> Thanks
> Radhika
>
> typedef itk::Image<PixelType,2> ImageType2D;
> typedef itk::ImageFileWriter< ImageType2D > WriterType2D;
> typedef itk::ShiftScaleImageFilter <ImageType2D, ImageType2D>
> ShiftScaleFilterType2D;
> typedef itk::DanielssonDistanceMapImageFilter <ImageType2D, ImageType2D>
> EDMFilterType2D; EDMFilterType2D::Pointer edmfilter2D =
> EDMFilterType2D::New();
>
> ShiftScaleFilterType2D::Pointer ssfilter2D = ShiftScaleFilterType2D::New();
>
> ssfilter2D->SetShift(shift);
> ssfilter2D->SetScale(scale);
> edmfilter2D->SetInputIsBinary(true);
> // edmfilter2D->SetUseImageSpacing(true);
> ssfilter2D->SetInput(mask);
> edmfilter2D->SetInput(ssfilter2D->GetOutput());
> edmfilter2D->Update();
>
> -----Original Message-----
> From: Luis Ibanez [mailto:luis.ibanez at kitware.com]
> Sent: Wednesday, April 14, 2004 1:13 PM
> To: Radhika Sivaramakrishna
> Cc: ITK
> Subject: Re: [Insight-users] More questions on Daniellson distance map
> filter
>
>
> Hi Radhika,
>
> The DanielssonDistanceMap takes into account diagonal distances
> regardless of whether the UseImageSpacing flag is enabled or not.
>
> What changes when the flag is enabled is that the components
> of the pixel spacing are taken into account. Therefore the
> distances are reported in physical units (e.g. millimeters)
> instead of pixels. As a consequence, enabling the flag also
> takes care of taking pixel anisotropy into account.
>
> The distances are computed as Euclidean distances, not as
> Manhattan distances (city-block), but are limited in precision
> to one-pixel. That is, there is no sub-pixel accuracy in the
> distance values. An easy way to verify the Euclidean-ness of
> the resulting DistanceMap is to create a dataset with a single
> pixel on in the middle and pass it as input to the Danielsson
> DistanceMap filter.
>
> Using the DanielssonDistanceMap plugin for VolView would
> be a very easy way of experimenting with the distances.
>
>
> Please let us know if you have further questions.
>
>
> Thanks
>
>
> Luis
>
>
>
> -----------------------------
> Radhika Sivaramakrishna wrote:
>
> > Hi Luis,
> > Thanks for your explanation. I have a doubt: when the UseImageSpacing is
> > enabled, does this (1) take into account diagonal distances and (2)
> > nonisotropic voxels also? I thought it did both. If I want to just make
> > sure that diagonal distances are taken into account (ie I don't want to
> > do city block distances or chessboard distances), but do not want to
> > take non-isotropy into account, what should I do?
> >
> > Hope my question is clear.
> > Thanks
> > Radhika
> >
> >
> >
> > -----Original Message-----
> > From: Luis Ibanez [mailto:luis.ibanez at kitware.com]
> > Sent: Monday, April 12, 2004 6:46 PM
> > To: Radhika Sivaramakrishna
> > Cc: ITK
> > Subject: Re: [Insight-users] More questions on Daniellson distance map
> > filter
> >
> >
> >
> > Hi Radhika,
> >
> > When you enable the "UseImageSpacing" flag, the values
> > of pixel spacing are used in the last stage of distance
> > computation. The spacing is used to multiply the distance
> > components when their squares are summed up.
> >
> > The resulting distance is then casted to the type of the
> > output image pixel type. This is done in the file:
> >
> > Insight/Code/BasicFilters/
> > itkDanielssonDistanceMapImageFilter.txx:
> >
> > in line 299:
> >
> > dt.Set(
> > static_cast<
> > typename
> > OutputImageType::PixelType>(sqrt( distance )) );
> >
> >
> > Note that the casting is done as a flat truncation.
> > No effort is made for scaling the distances in the
> > range of the pixel type. Depending on the physical
> > extent of your image, this may or may not be a problem.
> >
> >
> >
> > If you want to compute this distance scaling in a better
> > way, you could setup the output pixel type as float,
> > and then connect the output of the DanielssonDistanceMap
> > filter to a RescaleIntensityImageFilter with output pixel
> > type = unsigned char. This last filter will then rescale
> > nicely the distances into the range of intensities of the
> > output image. Note that with this filter you can select
> > what values to use for representing the maximum and minimum
> > values of the distance.
> >
> >
> > --
> >
> > You may want to take a look at the new VolView plugin
> > for computing the Danielsson distance. The source code
> > for this plugin is available at
> >
> >
> > InsightApplications/
> > VolviewPlugins/
> > vvITKDanielssonDistanceMap.cxx
> >
> >
> >
> >
> > Please let us know if you have further questions,
> >
> >
> > Thanks
> >
> >
> > Luis
> >
> >
> >
> > -------------------------------
> >
> > Radhika Sivaramakrishna wrote:
> >
> > > Hi,
> > >
> > > I had more questions on the Danielsson distance map filter. I have
> set
> > > the input and output of the filter to unsigned char.
> > >
> > > I have also put the SetUseImageSpacing flag to true. This means that
> > > actual distances may be computed which are more floating point
> > >
> > > numbers. Since I am forcing the output to unsigned char, then
> does this
> > > mean that the actual distances are truncated to unsigned char
> > >
> > > or are they rounded to it? Is there a better way to handle this?
> > >
> > > Thanks
> > >
> > > Radhika
> > >
> > >
> > >
> > > -----------------------------------------------------
> > >
> > > Confidentiality Notice.
> > >
> > > This email message is for the sole use of the intended
> recipient(s) and
> > > may contain confidential and privileged information. Any unauthorized
> > > review, use, disclosure or distribution is prohibited. If you are not
> > > the intended recipient, please contact the sender by reply email and
> > > destroy all copies of the original message. If you are the intended
> > > recipient, please be advised that the content of this message is
> subject
> > > to access, review and disclosure by the sender's Email System
> > Administrator.
> > >
> >
> >
> >
> > -----------------------------------------------------
> > Confidentiality Notice.
> > This email message is for the sole use of the intended recipient(s) and
> > may contain confidential and privileged information. Any unauthorized
> > review, use, disclosure or distribution is prohibited. If you are not
> > the intended recipient, please contact the sender by reply email and
> > destroy all copies of the original message. If you are the intended
> > recipient, please be advised that the content of this message is subject
> > to access, review and disclosure by the sender's Email System
> Administrator.
> >
>
>
>
> -----------------------------------------------------
> Confidentiality Notice.
> This email message is for the sole use of the intended recipient(s) and
> may contain confidential and privileged information. Any unauthorized
> review, use, disclosure or distribution is prohibited. If you are not
> the intended recipient, please contact the sender by reply email and
> destroy all copies of the original message. If you are the intended
> recipient, please be advised that the content of this message is subject
> to access, review and disclosure by the sender's Email System Administrator.
>
>
>
>
>