I’m currently working on computer vision algorithms, more specifically direct visual odometry (similar to DSO). As far as I know all these algorithms are implemented in C++ (or Matlab). I have the feeling that this project could be a good opportunity to try out Rust. I love the idea of having a very fast language, with a much better type system than C++.
To my knowledge, the requirements of such a project are:
- Reading and showing images / videos ( / streams).
- Manipulation of images as matrices / tensors.
- Linear algebra with those matrices / tensors:
- Standard linear algebra operations (additions, multiplications, decompositions, …).
- Specific linear algebra of rigid body motions, similarities, projective geometry, …
- Linear and non-linear solvers and optimization, like Gauss-Newton optimization.
- Graph optimization (similar to g2o).
- Appearance-based large-scale loop closure detection (similar to openFABMAP).
- Manipulation of point clouds.
- 3D scene visualization:
- Visualization of point clouds.
- Visualization of simple shapes, lines, meshes.
- Scene navigation (being able to zoom, rotate, …).
That makes a lot of requirements and I might have forgotten some. I’d rather do the project entirely in one language, either C++ or Rust but no mix (or max on library). So my questions are:
- Do you think the Rust ecosystem is mature enough for a project like this? (available / missing libraries)
- Are there hard stoppers, caveats, warnings I should be aware of?
- Are there other computer vision projects in Rust?
Thanks in advance for any honest answer!