Thanks Suyash.

On Dec 6, 2012, at 11:23 PM, Suyash P. Awate <[email protected]> wrote:

> 
> Hi folks,
> 
> I've discussed this with Kris this afternoon and this needs a small fix in 
> the way weights are being handled for anisotropic voxel sizes and in 
> dimensions higher than 2.
> 
> 
> Regards,
> Suyash
> 
> 
> On Thu, Dec 6, 2012 at 4:02 PM, Nicholas Tustison <[email protected]> wrote:
> Hi Kris,
> 
> You're right.  If I change the image spacing to be isotropic, I get
> past the error which is great.  I'm assuming we'll just see what
> Suyash says.  Thanks for looking into this.
> 
> Nick
> 
> 
> On Dec 6, 2012, at 5:24 PM, Kris Zygmunt <[email protected]> wrote:
> 
> > Ok, there are 2 problems going on.  The first is that the patch weights are 
> > not appropriately 3D sphere.  The second is that the resampling of the 
> > patch weights results in a max patch weight < 1 for non-integer resampling 
> > values.  But I think the resampling should really be reconsidered a bit 
> > more.  If the image spacing is 0.5,0.5,0.5 I'm not sure that resampling 
> > really needs to happen.  The point is really to make the patch weights 
> > capture the relative anisotropy.  Thus if the image spacing is 1,1,0.5 then 
> > maybe in that case it makes sense to resample the patch weights in the z 
> > direction to cover the same amount of physical space.  I'm including Suyash 
> > on this message to see what he thinks is the best way to handle this.
> >
> > I haven't looked at your code changes yet, as I first wanted to understand 
> > better what was happening.  I'll take a look there next.
> >
> > -Kris
> >
> > On Dec 6, 2012, at 12:24 PM, Nicholas Tustison wrote:
> >
> >> Thanks Kris and Brad for your responses.  Since it's easier to
> >> look at code, I thought I'd post the changes I had to make.
> >>
> >> http://review.source.kitware.com/#/c/8833/
> >>
> >> Kris, if I read the code correctly, it seems to me that the physical
> >> weighting image shouldn't be affected at all by anisotropic voxels
> >> in the input image.  Am I reading that right?  The size of the physical
> >> weighting image seems only affected by the patch radius with
> >> isotropic spacing equal to 1.  When I write that image to disk using
> >> my patch, I get an isotropic weighting distance function.  Otherwise
> >> I get a flat disk where the weighting in the z? direction seems to be
> >> close to 0.  Before we get to the issue that both Brad and I are
> >> having of the thrown exception, perhaps we can clarify this issue.
> >> Is that okay?
> >>
> >> Thanks again for your help with this, Kris,
> >>
> >> Nick
> >>
> >>
> >>
> >>
> >>
> >>
> >> On Dec 6, 2012, at 1:08 PM, Bradley Lowekamp <[email protected]> 
> >> wrote:
> >>
> >>> Nick,
> >>>
> >>> I just ran into this problem too this morning. I am glad you looked into 
> >>> the problem further than I did.
> >>>
> >>> I was wrapping it for SimpleITK. I was setting up the filter with the 
> >>> defaults matching:
> >>>
> >>> http://review.source.kitware.com/#/c/8803/1/Code/BasicFilters/json/PatchBasedDenoisingImageFilter.json
> >>>
> >>> And I was testing it with the following 3D image:
> >>>
> >>> http://itk.org/gitweb?p=SimpleITKData.git;a=blob;f=Input/RA-Short.nrrd;h=fca085049470a826324a4f2c93af2fd65fbaed52;hb=HEAD
> >>>
> >>> With the following meta information:
> >>> Size: [64, 64, 64]
> >>> Spacing: [0.755874, 0.755874, 0.755874]
> >>> Origin: [0.283453, 0.283453, 0.283453]
> >>> Direction:
> >>> 1 0 0
> >>> 0 1 0
> >>> 0 0 1
> >>>
> >>>
> >>> I get the same error with the defaults as you did, when I run the filter 
> >>> with the defaults
> >>>
> >>> And then if I change the patchRadius:
> >>>
> >>> python: sitk.PatchBasedDenoising( img, patchRadius=8 )
> >>> ---------------------------------------------------------------------------
> >>> RuntimeError                              Traceback (most recent call 
> >>> last)
> >>>
> >>> /home/blowekamp/src/SimpleITK/Testing/Data/Input/<ipython console> in 
> >>> <module>()
> >>>
> >>> /home/blowekamp/build/SimpleITK/SimpleITK-build/Wrapping/SimpleITK.pyc in 
> >>> PatchBasedDenoising(*args, **kwargs)
> >>> 5767         double fractionPixelsForSigmaUpdate=1.0) -> Image
> >>> 5768     """
> >>> -> 5769   return _SimpleITK.PatchBasedDenoising(*args, **kwargs)
> >>> 5770 class MaximumProjectionImageFilter(_object):
> >>> 5771     """
> >>>
> >>> RuntimeError: Exception thrown in SimpleITK PatchBasedDenoising: 
> >>> /home/blowekamp/build/SimpleITK/ITK-prefix/include/ITK-4.3/itkPatchBasedDenoisingImageFilter.hxx:641:
> >>> itk::ERROR: PatchBasedDenoisingImageFilter(0x3086ee0): Center pixel's 
> >>> weight (0.685381) must be equal to 1.0
> >>>
> >>> Thanks,
> >>> Brad
> >>>
> >>> On Dec 6, 2012, at 12:07 PM, Nicholas Tustison <[email protected]> 
> >>> wrote:
> >>>
> >>>> Hi Kris,
> >>>>
> >>>> Today I finally got a chance to look at your denoising work (I'm ashamed
> >>>> that I was at Penn for with Suyash for some time but I never asked him
> >>>> about it).  Anyway, I have a couple questions and I was hoping you could
> >>>> help me try to run your denoising work on some of my MRI.   I took the 
> >>>> test
> >>>> that you wrote and modified it only so that I could use it as a 
> >>>> stand-alone
> >>>> program.  I also verified that my version worked with the test images.
> >>>> However, when I tried to use it on my image (stats below)
> >>>>
> >>>> Image information
> >>>> Size:          [256, 256, 20]
> >>>> Origin:        [-232.879, -135.656, 240.706]
> >>>> SpatialExtent: [498.047, 498.047, 190]
> >>>> Center:        [16.1448, 113.368, 335.706]
> >>>> Spacing:       [1.95312, 1.95312, 10]
> >>>> Index:         [0, 0, 0]
> >>>> Direction:
> >>>> 1 0 0
> >>>> 0 1 0
> >>>> 0 0 1
> >>>>
> >>>> using the following parameters
> >>>>
> >>>> patchRadius = 4
> >>>> noiseModel = gaussian
> >>>> fidelityWeight = 0.0
> >>>> numberOfIterations = 1
> >>>> sigmaMultiplicationFactor = 2
> >>>>
> >>>> it gave me the following error
> >>>>
> >>>> Line: 634
> >>>> Description: itk::ERROR: PatchBasedDenoisingImageFilter(0x7fbffb0f5e10): 
> >>>> Center pixel's weight (0) must be equal to 1.0
> >>>>
> >>>> After investigating this section of the code, I noticed that the 
> >>>> physicalWeightsImage
> >>>> (after writing it to an image file) consists of what looked like a 
> >>>> weighted 2-D disc.
> >>>> Based on my reading of the comments, should this be more of a 3-D 
> >>>> weighted sphere?
> >>>> If so, I made some changes in the code to actually get a weighted sphere 
> >>>> thinking
> >>>> that might be solve the problem but I still got the same error.  
> >>>> However, if I increase
> >>>> the radius to 8, it seems to get past that error without issue.  Is 
> >>>> there a general rule
> >>>> for determining a minimal radius for this filter?
> >>>>
> >>>> Thanks for your help,
> >>>> Nick
> >>>>
> >>>>
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> Powered by www.kitware.com
> >>>>
> >>>> Visit other Kitware open-source projects at
> >>>> http://www.kitware.com/opensource/opensource.html
> >>>>
> >>>> Kitware offers ITK Training Courses, for more information visit:
> >>>> http://kitware.com/products/protraining.php
> >>>>
> >>>> Please keep messages on-topic and check the ITK FAQ at:
> >>>> http://www.itk.org/Wiki/ITK_FAQ
> >>>>
> >>>> Follow this link to subscribe/unsubscribe:
> >>>> http://www.itk.org/mailman/listinfo/insight-developers
> >>>
> >>
> >
> 
> 

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Kitware offers ITK Training Courses, for more information visit:
http://kitware.com/products/protraining.php

Please keep messages on-topic and check the ITK FAQ at:
http://www.itk.org/Wiki/ITK_FAQ

Follow this link to subscribe/unsubscribe:
http://www.itk.org/mailman/listinfo/insight-developers

Reply via email to