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
>>>
>>
>