educelab / volume-cartographer

Volumetric processing toolkit and C++ libraries for the recovery and restoration of damaged cultural materials
GNU General Public License v3.0
62 stars 21 forks source link

Remove GSL dependency #103

Open csparker247 opened 4 weeks ago

csparker247 commented 4 weeks ago

What problem is your feature request solving?

101 introduces the GNU Scientific Library (GSL) as a private dependency for the segmentation library. Specifically, the new CubicSplineMT class uses gsl_integration_qags to calculate the spline length.

While GSL is widely supported across platforms, I don't love adding an external library dependency when we're basically just using one function.

What is your feature request?

We should explore alternative methods for efficiently estimating the spline length. For example, we might roll our own templated version of the QAGS algorithm [pdf] and compare the performance.

What alternative solutions have you considered?

No response

Is there anything else we should know that wasn't included already?

No response

Are you proposing to work on this feature yourself?

Code of Conduct

csparker247 commented 4 weeks ago

Another idea: let the backend be selectable.

Boost provides integration via quadrature: https://www.boost.org/doc/libs/1_86_0/libs/math/doc/html/quadrature.html