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

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.

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

> On a side note, are there plans to try to get this filter integrated
> into mainline ITK?

Good point, I did have the plan on publishing the code in the insight journal 
but ran out of time to write the accompanying paper. Also I first wanted to 
test or improve one or the other thing:

- test and maybe implement support for itk::VectorImage
- take into account the image spacing (right now equidistant spacing is assumed 
in the calculation of the weights)
- look into the question that you posed today (rethink about the boundary 
condition)

Please let me know if you make any progress or if you have further questions.

Best regards
Klaus



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

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