InsightSoftwareConsortium / InsightSoftwareConsortium/ITK
Name of FastMarching 'Base' filters
- Dominant language
- C++
- Stars
- 1.7k
- Forks
- 748
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 64
Description
### Description
I am not sure if this is the right place to ask this, but here it is anyway. Why is [itkFastMarchingImageFilterBase](https://github.com/InsightSoftwareConsortium/ITK/blob/87a66198e11920eeb04db1d6125a37e83cf4ebf6/Modules/Filtering/FastMarching/include/itkFastMarchingImageFilterBase.h) named such? When I read 'itk...**Base**.h' I assume that it is (maybe) an abstract class from which `itkFastMarchingFilter` is derived, but surprisingly neither of these two assumptions are true! Am I the only one who finds this confusing?
The Fast marching module essentially implements the Fast Marching algorithm. There are 2 different implementations of the algorithm in the module. First one (lets call this one 'regular') is implemented in classes `itkFastMarchingImageFilter` etc. and the second more generalizable implementation (lets call it 'base') in classes `itkFastMarchingBase` and its subclasses. The 'base' implementation essentially implements the same algorithms expect that it works with generic 'nodes' instead of just voxels of images. As a consequence, we have an `itkFastMarchingImageFilterBase` and an `itkFastMarchingQuadMeshFilterBase` and others which are sub-classes of the more generic 'base' version. The 'regular' classes on the other hand are subclass of `ImageToImageFilter`, so only work for images.
What is not clear to me is the reason for naming the generic implementation 'base'.
### Expected coding style
I propose to rename all the fast marching 'Base' classes to something more appropriate. Perhaps something like 'itkFastMarchingImageDomainFilter' , ...QuadMeshDomainFilter.., etc. unless I am missing something here.
### Versions
5.2.1
edit: expanded description
Contributor guide
Assessment
This issue has not been assessed yet.