小编bum*_*ckl的帖子

从手动创建的矩阵中进行OpenCV立体声校正

我目前正在研究X射线图像的三维重建,因此我需要立体校正两个视图的图像,然后才能在epilines的帮助下匹配一些特征.我正在使用OpenCV 2.4和C++.

为此,我得到了一组X射线图像(锥形束X射线图像,没有真实摄像机,具有失真参数或真实焦距),一个来自前后视图(直接看胸部),一个从侧面看(从侧面看胸部).我知道一些参数,如我可以使用的虚拟焦距(两个视图相等),并且图像的分辨率为512x512px,因此两个视图的图像相机投影均为(255,255).我也知道相机是垂直的.根据这些信息,我开发了一个旋转矩阵R和一个平移向量t(两者都是在Matlab的3d图中帮助验证的).

问题:在OpenCV中,R和t实际上足以进行立体声整流,但整流后得到的图像是黑色的.谷歌搜索引发了我在stereoRectify中的一个错误,但我怀疑这是错误,因为我可以运行OpenCV stereoRectification示例,它确实有效.在Matlab中尝试立体声再现时,我至少可以看到一些失真的整流结果.

这是我的C++代码:

float camera_matrix_ap_data[] = {1207*2.0, 0.0, 255.0,
                 0.0, 1207*2, 255.0,
                                 0.0, 0.0, 1.0};
cv::Mat camera_matrix_ap(3, 3, CV_64F, camera_matrix_ap_data);
float camera_matrix_lat_data[] = {1207*2, 0.0, 255.0,
                 0.0, 1207*2, 255.0,
                                 0.0, 0.0, 1.0};
 cv::Mat camera_matrix_lat(3, 3, CV_64F, camera_matrix_lat_data);

 ///
 /// @brief the distortion matrices
 ///
 cv::Mat distortion_ap(4, 1, CV_64F, 0.0);
 cv::Mat distortion_lat(4, 1, CV_64F, 0.0);

 ///
 /// @brief Translation and Rotation matrices
 ///
 float R_data[] = {0.0, 0.0, 1.0,
           0.0, 1.0, 0.0,
           -1.0, 0.0, 0.0};
 float T_data[] = …
Run Code Online (Sandbox Code Playgroud)

c++ matlab opencv stereo-3d camera-calibration

6
推荐指数
1
解决办法
2983
查看次数

标签 统计

c++ ×1

camera-calibration ×1

matlab ×1

opencv ×1

stereo-3d ×1