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
