更改相机焦点的值(以像素为单位)

时间:2014-07-01 11:55:38

标签: opencv image-processing point-cloud-library

我目前正在寻找以下问题的正确解决方案,这不是直接面向编程的,但我猜测opencv的用户可能有一个想法: 我的立体相机有一个1 / 3.2" 752x480分辨率。由于点云库(PCL),我正在使用这台相机的两个立体图像来创建点云。 问题是我希望通过直接降低输入图像的分辨率(从752x480到376x240)来减少点云所包含的点数。 正如标题中所示,我必须根据这种需要调整相机的焦距(以像素为单位): 由于以下公式,我计算了这个参数:

float focal_pixel = (FOCAL_METERS / SENSOR_WIDTH_METERS)*InputImg.cols;

然而,SENSOR_WIDTH_METERS目前是常数并且对应于1 / 3.2"转换为米的数据我希望将其改编为我想要的分辨率:376x240。

我绝对不确定我是否清楚地解决了问题,这意味着我的方向是错误的。

提前谢谢

编辑:用于处理立体图像的功能(计算后):

getPointCloud(hori_c_pp, vert_c_pp, focal_pixel, BASELINE_METERS, out_stereo_cloud, ref_texture);

其中两个第一个参数只是图像中心的坐标,BASELINE_METERS我的相机的基线out_stereo_cloud我的输出云,最终ref_texture颜色信息。此功能取自子库stereo_matching。 出于某种原因,如果我只是调整立体图像的大小,它似乎与focal_pixel参数冲突,因为维度不再相同。 我在这个问题上非常迷失。

1 个答案:

答案 0 :(得分:0)

由于我没有真正遵循您发布的公式和方法电话,我建议您使用其他方法。

OpenCV已经为您提供了使用方法cv::reprojectImageTo3D使用立体图像创建体素的可能性。 Another question也已经讨论了转换为相应的PCL数据类型。

如果您只想重新投影图片的某个投资回报率,则应选择cv::perspectiveTransform,如我在第一个链接中指出的文档中所述。

相关问题