7 #ifndef IMAGE_PROC_UTILS_H
8 #define IMAGE_PROC_UTILS_H
12 #include <opencv2/calib3d.hpp>
62 cv::Mat K_raw = cv::Mat(3, 3, CV_64F, k_raw_array);
63 cv::Mat D_raw = cv::Mat(1, 8, CV_64F, d_raw_array);
65 cv::Mat K_rect = cv::getOptimalNewCameraMatrix(K_raw, D_raw, img_size, 0, img_size,
nullptr);
68 cv::Mat r = cv::Mat::eye(3, 3, CV_32F);
76 cv::Mat distorted_pt(1, 1, CV_32FC2, cv::Scalar(x, y));
77 cv::Mat undistorted_pt(1, 1, CV_32FC2);
79 cv::undistortPoints(distorted_pt, undistorted_pt, K_raw, D_raw);
81 float ux = undistorted_pt.at<
float>(0);
82 float uy = undistorted_pt.at<
float>(1);
84 float scale_factor = 1.0f / sqrtf(1.0f + ux * ux + uy * uy);
86 *range_to_3d_lut++ = (ux * scale_factor);
87 *range_to_3d_lut++ = (uy * scale_factor);
88 *range_to_3d_lut++ = (scale_factor);
108 *xyz_frame++ = (*range_to_3d_lut++) * (*range_image);
109 *xyz_frame++ = (*range_to_3d_lut++) * (*range_image);
110 *xyz_frame++ = (*range_to_3d_lut++) * (*range_image);