Thank you very much for this, Kris.  I can work around the anisotropy.
I just really appreciate the insight regarding the implications of such 
data.  I'll take a look at the patch tonight or tomorrow.

Thanks again,
Nick



On Dec 10, 2012, at 5:07 PM, Kris Zygmunt <[email protected]> wrote:

> Nick,
>    Your patch had been abandoned, so I created a new patch that addresses all 
> of the issues mentioned below.  It can be found at 
> http://review.source.kitware.com/#/c/8874 .  The only thing I am still 
> concerned about with the weights is your large spacing anisotropy where your 
> image is [1.95, 1.95, 10].  In this case, instead of a 9x9x9 patch for the 
> isotropic case, you will end up with a patch that is 43x43x9 which will make 
> all of the processing much slower.  I'm not sure how it would be best for the 
> denoising filter to support this much anisotropy.
> -Kris
> 
> 
> On Dec 7, 2012, at 4:09 AM, Nicholas Tustison wrote:
> 
>> 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