The library demonstrates ORB feature extractor running using CPU and GPU. The ORB feature extractor is based on OpenVSLAM version.
This ORB can easily integrate to Visual SLAM. After initializing orb_extractor object, for every input frame, call to extract function. Extract function will return a set of keypoints and descriptors.
The ORB feature extractor consists of various CV kernels such as resize, gaussian, fast, compute descriptor and orientation while non CV functions like distribute_keypoints_via_tree.
All the CV related kernels have offloaded to Intel GPU using oneAPI Level Zero interface and GPU kernels are written using C-for-Metal. Non CV functions will run in CPU.
- Ubuntu 22.04 and Ubuntu 24.04
- OpenCV 4.2+ with support up to OpenCV 4.6 (ROS Jazzy)
- Intel® Graphics Compute Runtime for oneAPI Level Zero and OpenCL™ Driver
- Intel oneAPI 2025.3 with SYCL compiler for GPU acceleration
libgpu_orb/
├── include/
│ └── orb_extractor.h
├── lib/
│ ├── libgpu_orb.so
│ ├── fastclear_genx.bin
│ ├── fastext_genx.bin
│ ├── fastnmsext_genx.bin
│ ├── gaussian_genx.bin
│ ├── resize_genx.bin
│ └── orb_descriptor_genx.bin
└── samples/
├── CMakeLists.txt
├── main.cpp
├── market.jpg
└── tutorial.md
include- Class header that provides configurable options for this librarylib- Host code libgpu_orb.so and all *.bin are compiled GPU kernelssamples- Sample code to show how to use the library for either mono camera or stereo camera
Build:
cd samples
mkdir build
cd build
cmake ../
make -j8Run the sample:
./feature_extractTo adjust for latency and CPU utilization:
export CPU_SLEEP_TIME=<sleep duration in microseconds>NOTE: Higher sleep value leads to higher latency and reduced CPU utilization and vice versa