Klaus,

Thanks for your helpful response.

On Thu, Jul 14, 2011 at 8:06 AM, Fritzsche, Klaus H. <
[email protected]> wrote:

> Dear Taylor,
>
> >Was this implementation of TV designed to handled 2D images?
>
> No, but it should be very little effort to change this.
>
> In your experiments, were you using real 2D images or 3D images with one
> slice?


I am using a real 2D image.


> This makes a difference, since the filter uses a boundary condition that
> pads the image by replicating the border voxel values
> (itk::ZeroFluxNeumannBoundaryCondition). Having a 1-slice 3D image, this
> pads all values in both slice-orthogonal directions. Thus, a "real" 2D image
> should be better in this case.
>

Yes, I quickly figured this out when I accidentally read in the png image as
a 3 dimensional ITK image. (The TV output was all black except for circular
ring corresponding to where the input image had a sharp step from image data
to black background)

>
> Rethinking the implementation, the filter should probably be improved by
> letting it ignore voxel-positions outside the image boundary. Then, all
> kinds of images would be handled correctly. This would also be "more
> correct" for the 3D image, since the digital total variation approach is
> designed for arbitrarily shaped neighborhoods. They do not have to be
> symmetric or anything.
>

That makes sense. Implementation-wise that sounds like a bit more work
though. If I were to keep the existing approach the same, what part (or
parts) of the chain needs to be generalized to work with 2D images?
Everything I've seen so far looks fully templated wrt image type.

>
> > (2) I've browsed through the code a bit, but haven't found how the
> > iterative TV filter is setting the step size. I'm assuming that since
> > step size is not an imput parameter, this must be using a adaptive
> > step size scheme. Is this true?
>
> The filter update is designed to do low-pass filtering in the sense that
> the sum of weights in the non-linear kernel sum up to 1. The filter
> converges not due to smaller step size but due to narrowing of the kernel.
> You can refer to Tony F. Chan
> s paper "The digital TV filter and nonlinear denoising" for details. The
> only free parameter is lambda (and maybe the regularization parameter, which
> should have no big influence as long as it is chosen to be small. It is
> hardcoded to 0.0001)
>
> > Can someone describe how this is being
> > done or point me to the lines of code that are doing this?
>
> The weights of the nonlinear kernel are computed in
> itkTotalVariationSingleIterationImageFilter.txx from line 203 up to line
> 236.
>

Thanks. This is helpful. I haven't yet had a chance to study this closely
though so I may be back with more questions...

Thanks again,

Taylor
------------------------------------------------------------------------------
AppSumo Presents a FREE Video for the SourceForge Community by Eric 
Ries, the creator of the Lean Startup Methodology on "Lean Startup 
Secrets Revealed." This video shows you how to validate your ideas, 
optimize your ideas and identify your business strategy.
http://p.sf.net/sfu/appsumosfdev2dev
_______________________________________________
mitk-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to