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
