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
