Hello Luis,<br> just an update on the time step question. For my data I don't see any undesirable side effects like what you described. I also tested corresponding values for a 2D image, same thing! It seems that <= 1/2^dimension should work! However, this comes with the caveat that image analysis is not my expertise!! It would be nice to get a affirmation from a more reliable source!<br>
<br>Nonetheless, I really appreciate you guys making ITK open source and being great with answering questions!<br><br>Cheers,<br><br>C.S.N<br><br><br><div class="gmail_quote">On Mon, Feb 15, 2010 at 5:01 PM, Natarajan CS <span dir="ltr"><<a href="mailto:csnataraj@gmail.com" target="_blank">csnataraj@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div>Hi Luis,<br> sure, sounds like a good plan. I am heading out right now, but hopefully I should be able to get it done by tomorrow! I will try with time steps at 1/2^N, 1/2^(N+1), and 1.5/2^N and send out another e-mail.<br>
<br>Cheers,<br><br>C.S.N<br><br>P.S :- Just in case anyone is interested, the paper is available as a tech report from Berkeley<br><br><a href="http://digitalassets.lib.berkeley.edu/techreports/ucb/text/CSD-88-483.pdf" target="_blank">http://digitalassets.lib.berkeley.edu/techreports/ucb/text/CSD-88-483.pdf</a><br>
<br><br></div><div><div></div><div><div class="gmail_quote">On Mon, Feb 15, 2010 at 3:58 PM, Luis Ibanez <span dir="ltr"><<a href="mailto:luis.ibanez@kitware.com" target="_blank">luis.ibanez@kitware.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>Hi Natarajan,<br>
<br>
You are right, the code is actually testing for<br>
<br>
</div> 1/2^(N+1)<br>
<div><br>
not for<br>
<br>
1/2^(N)<br>
<br>
as I incorrectly wrote in my email.<br>
<br>
<br>
This filter is intended to be the implementation of<br>
the Perona-Malik method, as described in:<br>
<br>
* Pietro Perona and Jalhandra Malik, ``Scale-space and edge detection using<br>
* anisotropic diffusion,'' IEEE Transactions on Pattern Analysis Machine<br>
* Intelligence, vol. 12, pp. 629-639, 1990.<br>
<br>
<br>
I don't have at hand the Perona Malik paper,<br>
so let's do this:<br>
<br>
<br>
Could you please modify the code locally in your ITK code,<br>
and run it with a couple of cases, using a timestep that is<br>
in the range:<br>
<br>
1/2^(N+1) < t < 1/2^(N)<br>
<br>
and let us know if the output looks correct ?<br>
<br>
---<br>
<br>
Typically when you use a timestep that is too large, you<br>
will see intensity artifacts that look like rhomboids in the<br>
borders of the objects in the image.<br>
<br>
<br>
Please let us know what you find,<br>
<br>
<br>
Thanks<br>
<br>
<br>
</div> Luis<br>
<br>
<br>
---------------------------------------------------------------------------<br>
<div><div></div><div>On Mon, Feb 15, 2010 at 3:34 PM, Natarajan CS <<a href="mailto:csnataraj@gmail.com" target="_blank">csnataraj@gmail.com</a>> wrote:<br>
> Hi Luis,<br>
> thanks for the quick reply. Nope, I do not believe I have enabled this<br>
> flag. I am confused, I did take a look at the code snippet you suggested and<br>
> figured that time step is <= 1/2^(N+1) not 1/2^N (Judging from line 75<br>
> and/through 81). In reality I believe this has to be 1/2^N as you suggested,<br>
> at least if the implementation is same as Perona and Malik..<br>
><br>
> just in case my metadata looks as follows :<br>
><br>
> NDims = 3<br>
> DimSize = 256 256 256<br>
> ElementType = MET_SHORT<br>
> ElementDataFile = raw256.raw<br>
><br>
><br>
> Again, thanks for the help!<br>
><br>
> Cheers,<br>
><br>
> C.S.N<br>
><br>
><br>
><br>
> On Mon, Feb 15, 2010 at 2:00 PM, Luis Ibanez <<a href="mailto:luis.ibanez@kitware.com" target="_blank">luis.ibanez@kitware.com</a>><br>
> wrote:<br>
>><br>
>> Hi Natarajan,<br>
>><br>
>><br>
>><br>
>> "Glimpsing at the Source, leaves no doubt"<br>
>><br>
>><br>
>> This is what the file:<br>
>><br>
>> Insight/Code/BasicFilters/itkAnisotropicDiffusionImageFilter.txx<br>
>><br>
>> has in lines 75-82:<br>
>><br>
>><br>
>> if ( m_TimeStep > (minSpacing / vcl_pow(2.0,<br>
>> static_cast<double>(ImageDimension) + 1)) )<br>
>> {<br>
>> // f->SetTimeStep(1.0 / vcl_pow(2.0,<br>
>> static_cast<double>(ImageDimension)));<br>
>> itkWarningMacro( << "Anisotropic diffusion unstable time step: "<br>
>> << m_TimeStep << std::endl<br>
>> << "Stable time step for this image must be smaller<br>
>> than "<br>
>> << minSpacing / vcl_pow(2.0,<br>
>> static_cast<double>(ImageDimension+1)));<br>
>> }<br>
>><br>
>><br>
>> In summary:<br>
>><br>
>> Timestep < pixelSpacing / ( 2^N )<br>
>><br>
>> where N is the image dimension (e.g. 3 for 3D images, and 2 for 2D<br>
>> images).<br>
>><br>
>><br>
>><br>
>><br>
>> Did you enable the flag:<br>
>><br>
>> UseImageSpacing ?<br>
>><br>
>> If so, what is the pixel spacing of your image ?<br>
>><br>
>><br>
>> Regards,<br>
>><br>
>><br>
>><br>
>> Luis<br>
>><br>
>><br>
>> -------------------------------------------<br>
>> On Mon, Feb 15, 2010 at 12:27 PM, Natarajan CS <<a href="mailto:csnataraj@gmail.com" target="_blank">csnataraj@gmail.com</a>><br>
>> wrote:<br>
>> > Hello all,<br>
>> > Not sure if this is a bug or a implementation detail I am<br>
>> > overlooking,<br>
>> > I am tending towards the latter, so any info would be helpful !<br>
>> > I get the following warning from the<br>
>> > GradientAnisotropicDiffusionImageFilter (The filter is being applied to<br>
>> > a<br>
>> > 256^3 dataset of type short)<br>
>> ><br>
>> > WARNING: In<br>
>> ><br>
>> > /hpc/soft/natac0/itk/include/InsightToolkit/BasicFilters/itkAnisotropicDiffusionImageFilter.txx,<br>
>> > line 78<br>
>> > GradientAnisotropicDiffusionImageFilter (0xbc4120): Anisotropic<br>
>> > diffusion<br>
>> > unstable time step: 0.07<br>
>> > Stable time step for this image must be smaller than 0.0625<br>
>> ><br>
>> > i was under the impression that the ITK implimentation was a explicit<br>
>> > method<br>
>> > with the time step requirement for 3D images is <= 1/8 and <= 1/4 for<br>
>> > 2D. Am<br>
>> > i completely off-track here?<br>
>> ><br>
>> > Appreciate any help!<br>
>> ><br>
>> > Thanks,<br>
>> ><br>
>> > C.S.N<br>
>> ><br>
>> > _____________________________________<br>
>> > Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
>> ><br>
>> > Visit other Kitware open-source projects at<br>
>> > <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
>> ><br>
>> > Kitware offers ITK Training Courses, for more information visit:<br>
>> > <a href="http://www.kitware.com/products/protraining.html" target="_blank">http://www.kitware.com/products/protraining.html</a><br>
>> ><br>
>> > Please keep messages on-topic and check the ITK FAQ at:<br>
>> > <a href="http://www.itk.org/Wiki/ITK_FAQ" target="_blank">http://www.itk.org/Wiki/ITK_FAQ</a><br>
>> ><br>
>> > Follow this link to subscribe/unsubscribe:<br>
>> > <a href="http://www.itk.org/mailman/listinfo/insight-users" target="_blank">http://www.itk.org/mailman/listinfo/insight-users</a><br>
>> ><br>
>> ><br>
><br>
><br>
</div></div></blockquote></div><br>
</div></div></blockquote></div><br>