[Insight-developers] denoising filter

Kris Zygmunt krismz at sci.utah.edu
Mon Dec 10 17:07:24 EST 2012


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 <suyash at sci.utah.edu>  
> 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 <ntustison at gmail.com 
>> > 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 <krismz at sci.utah.edu> 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 <blowekamp at mail.nih.gov 
>> > 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 <ntustison at gmail.com 
>> > 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
>> >>>
>> >>
>> >
>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.itk.org/pipermail/insight-developers/attachments/20121210/a4a35c5f/attachment.htm>


More information about the Insight-developers mailing list