我目前正在研究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)