This is the C++ implementation of the paper: L. Zhang, M. Ye, C. Chan, G.-Z. Yang, "Real-Time Surgical Tool Tracking and Pose Estimation using a Hybrid Cylindrical Marker" IJCARS. 2017. We hope you find the tracker useful and if so please cite the paper:
@Article{Zhang2017, author="Zhang, Lin and Ye, Menglong and Chan, Po-Ling and Yang, Guang-Zhong", title="Real-time surgical tool tracking and pose estimation using a hybrid cylindrical marker", journal="International Journal of Computer Assisted Radiology and Surgery", year="2017", pages="1--10", issn="1861-6429", doi="10.1007/s11548-017-1558-9", url="http://dx.doi.org/10.1007/s11548-017-1558-9" }
Two types of marker can be tracked:
- Planar circular-dot marker use
TrackerKeydot
class - Cylindrical hybrid marker use
TrackerCurvedot
class
- > OpenCV 3.0 (should work with 2.4 but not tested)
- CMake (for project configuration)
- Under the root directory of the repository (i.e. where this README located), create a folder called
build
. - In CMake, direct the source code to this root directory, and the binaries to the
build
directory. Then press configure then generate in CMake. - Download test videos from:
https://d.pr/XDO5O (planar circular-dot)
https://d.pr/r9DAp (cylindrical hybrid)
- In
src/main.cpp
, modify the video directory to where the videos was downloaded. - In
config/Settings.xml
, modify tagpatternToUse
to eitherCIRCULAR
orHYBRID
depending on the marker you are using. - Build & run the code.
The marker design is saved in config/curve_pattern.svg
which can be edited by Inkscape. We recommend you use Inkscape to print the marker.
Before printing, check File-Document Properties
and set Page Size
to A4, Units
to mm.
You should also modify options in config/Settings.xml
accordingly.
This project is licensed under the BSD License - see the LICENCE file for details.
IPPE, which is used in this project, is BSD licence.