Skip to content
Snippets Groups Projects
Commit ec79a109 authored by Sebastian Hahta's avatar Sebastian Hahta
Browse files

bug in rectification validation

parent d4f86dc5
Branches
No related tags found
1 merge request!316Resolves #343 GUI and Frame Refactor
Pipeline #28148 failed
......@@ -28,8 +28,10 @@ StereoRectification::StereoRectification(nlohmann::json &config, cv::Size image_
void StereoRectification::setSize(cv::Size size) {
image_resolution_ = size;
if (calibrated()) {
calculateParameters();
}
}
void StereoRectification::setInterpolation(int interpolation) {
interpolation_ = interpolation;
......@@ -64,13 +66,18 @@ void StereoRectification::setCalibration(const CalibrationData &calib) {
void StereoRectification::calculateParameters() {
using namespace ftl::calibration;
// TODO: lock
valid_ = false;
{
bool valid = true;
valid_ &= !calib_left_.intrinsic.resolution.empty();
valid_ &= !calib_right_.intrinsic.resolution.empty();
valid_ &= validate::cameraMatrix(calib_left_.intrinsic.matrix());
valid_ &= validate::cameraMatrix(calib_right_.intrinsic.matrix());
valid &= calib_left_.intrinsic.resolution != cv::Size{0, 0};
valid &= calib_right_.intrinsic.resolution != cv::Size{0, 0};
valid &= calib_left_.intrinsic.distCoeffs.size() != 0;
valid &= calib_right_.intrinsic.distCoeffs.size() != 0;
valid &= validate::cameraMatrix(calib_left_.intrinsic.matrix());
valid &= validate::cameraMatrix(calib_right_.intrinsic.matrix());
if (!valid) { return; }
}
valid_ = false;
// create temporary buffers
if (tmp_l_.size() != image_resolution_) {
......@@ -104,9 +111,8 @@ void StereoRectification::calculateParameters() {
cv::Mat R;
cv::Mat t;
transform::getRotationAndTranslation(T, R, t);
baseline_ = cv::norm(t);
if (baseline_ == 0) { return; }
if (baseline_ == 0.0) { return; }
// calculate rectification parameters
cv::stereoRectify( K_l, dc_l, K_r, dc_r, image_resolution_,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment