TIGRE icon indicating copy to clipboard operation
TIGRE copied to clipboard

Allow different delta values (dx, dy, dz) for "Adaptive Weighted" algorithms?

Open yliu88au opened this issue 2 years ago • 1 comments

Currently, all version of "AW" algorithms have the same "delta" parameter controls the adaptive weight exp( -(xi-xj)^2/ delta) for all (x, y, z) directions. I can see the need to specify different "deltas" when the x, y, z axis have different resolutions (for example, some tomosynthesis situations). Could we make changes to allow this? We could allow delta to be either a scalar (likely current situation) or a array of (d1, d2, d3). Need some code changes in POCS_TV.cu and other places as well.

yliu88au avatar Dec 06 '21 07:12 yliu88au

This should be trivial to add, as the CUDA code already is prepared for this for SART-TV, I just don't pass the parameters.

For the rest, the same change would need to be added, i.e. when computing gradients, divide by voxel size: https://github.com/CERN/TIGRE/blob/master/Common/CUDA/tvdenoising.cu#L112

Just e.g. here: https://github.com/CERN/TIGRE/blob/master/Common/CUDA/POCS_TV.cu#L105

The most sensible way of doing it I think its to pass geo as input to all these, and use geo.dVoxel.

AnderBiguri avatar Dec 06 '21 13:12 AnderBiguri