Visical is a versatile camera calibration tool designed for cross-platform use. Built with OpenCV and wxWidgets, it offers multi-source image acquisition and a comprehensive calibration pipeline. Its modular evaluation framework allows for independent quality assessments, enabling reliable and streamlined calibration for various camera systems.
Visical is a versatile and comprehensive camera calibration tool that operates seamlessly across platforms, powered by C++ and designed with the help of OpenCV and wxWidgets. This application offers a robust calibration pipeline, enabling simultaneous quality evaluation and multi-source image acquisition, thereby enhancing the calibration experience.
Key Features
- Multi-source Image Acquisition: Easily load images from local storage, capture directly from webcams, or connect to GigE/USB3 Vision cameras using Aravis.
- Complete Calibration Workflow: Utilize OpenCV for board detection, pose estimation, and camera optimization all within a unified framework.
- Currently supports single-camera calibration, with stereo and multi-camera setups planned for future updates.
- Offers support for chessboards and circles grid patterns.
- Modular Evaluation Framework: Independent quality assessment plugins that can evaluate boards and calibration results separately. These plugins can be configured or disabled as needed and persist settings in JSON format, allowing for extensive customization.
- Cross-Platform Compatibility: Runs efficiently on both Linux and Windows platforms, developed using the latest C++23 standards, CMake, and vcpkg.
Getting Started
To utilize Visical:
- Ensure your calibration board is printed and mounted correctly. Refer to the OpenCV guide to create calibration patterns for assistance.
- Configure settings for image size and detection parameters in the setup phase.
- Use the detection phase to load images and see results visually.
- Calibrate using the accepted dataset to receive essential camera parameters and evaluation outcomes; it also allows visualizing undistorted images.
- Save calibration results in JSON format for future reference.
Example Output
Visical provides JSON output for calibration results, showcasing critical camera parameters:
{
"camera": {
"focal_length_x": 3778.998517383195,
"focal_length_y": 3795.4120564419795,
"principal_point_x": 550.0582420918876,
"principal_point_y": 648.8049607977425
},
"distortion_model": {
"standard": {
"k1": -0.39599703363377464,
"k2": 1.044774916481398,
"p1": 0.0007796825585351178,
"p2": 0.0009423617956795151,
"k3": -9.679592041202422
}
},
"cameraModel": {
"reprojectionError": 0.14116148019896574
}
}
Architecture Overview
Visical breaks down into four distinct layers for optimal performance:
- Acquisition: Handles image loading and capture, preparing for analysis.
- Detection: Utilizes OpenCV to identify calibration boards and estimate poses, retaining results for potential re-evaluation.
- Calibration: Employs detected boards to refine camera settings, leveraging OpenCV capabilities.
- Evaluation: Assesses the quality of detected boards and calibration outcomes in a non-intrusive manner, promoting rapid calibration iterations.
In conclusion, Visical strives to offer enhanced flexibility and efficiency for camera calibration tasks, empowering users across various disciplines to obtain accurate calibration results with ease.
No comments yet.
Sign in to be the first to comment.