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