Image 调整像素焦距以适应新的图像分辨率

Image 调整像素焦距以适应新的图像分辨率,image,opencv,parameters,resolution,Image,Opencv,Parameters,Resolution,我使用立体相机处理图像,以便处理点云。我正在使用一种适合PCL库的方法来创建这些点云(真丢脸),但无论如何,这是我的问题:相机传感器分辨率为1/3.2“752x480,它的基线为12厘米,焦距为2.17毫米 我成功地将焦距转换为像素,并将其和其他参数传递给我用于创建点云的函数。如果降低初始图像分辨率,速度可能会更快:我希望从752x480传递到263x168(初始分辨率的35%)为了更快地处理云层。我目前正在研究这个问题:如何转换以前的参数以使其适应新的分辨率。我查看了OpenCV相机校准文档,

我使用立体相机处理图像,以便处理点云。我正在使用一种适合PCL库的方法来创建这些点云(真丢脸),但无论如何,这是我的问题:相机传感器分辨率为1/3.2“752x480,它的基线为12厘米,焦距为2.17毫米

我成功地将焦距转换为像素,并将其和其他参数传递给我用于创建点云的函数。如果降低初始图像分辨率,速度可能会更快:我希望从752x480传递到263x168(初始分辨率的35%)为了更快地处理云层。我目前正在研究这个问题:如何转换以前的参数以使其适应新的分辨率。我查看了OpenCV相机校准文档,但没有找到我要找的内容(可能我没有正确查看)

你能帮我吗

先谢谢你

编辑: 我想做的是:

float focal_pixel = (FOCAL_METERS / SENSOR_WIDTH_METERS)*img.cols;// times 0.35 ?
//coordinates of the principal points
float hori_c_pp = (img.cols - 1) / 2;
float vert_c_pp = (img.rows - 1) / 2;
以米为单位的焦距以及以米为单位的传感器宽度都是常量变量。我需要这些参数来创建点云。就我而言,我认为问题来自以像素为单位的焦距, 因为我错过了很多点,如果我只是像这样应用它,我的点云结果只是在几行点根本不相关

使用的功能

virtual void 
      compute (unsigned char* ref_img, unsigned char* trg_img, int width, int height);

      /** \brief stereo processing, it computes a disparity map stored internally by the class
        *
        * \param[in] ref point cloud of pcl::RGB type containing the pixels of the reference image (left image)
        * the pcl::RGB triplets are automatically converted to grayscale upon call of the method
        * \param[in] trg point cloud of pcl::RGB type containing the pixels of the target image (right image)
        * the pcl::RGB triplets are automatically converted to grayscale upon call of the method
        */




getPointCloud (float u_c, float v_c, float focal, float baseline, pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud,  pcl::PointCloud<pcl::RGB>::Ptr texture);

      /** \brief computation of a pcl::RGB cloud with scaled disparity values
        * it can be used to display a rescaled version of the disparity map by means of the pcl::ImageViewer
        * invalid disparity values are shown in green
        * Note: the "compute" method must have been previously called at least once in order for this function
        * to have any effect
        * \param[out] vMap output cloud
        */
virtualvoid
计算(无符号字符*ref\u img,无符号字符*trg\u img,整数宽度,整数高度);
/**\简短的立体处理,它计算类内部存储的视差图
*
*\param[in]包含参考图像(左图)像素的pcl::RGB类型的参考点云
*调用该方法后,pcl::RGB三元组将自动转换为灰度
*\param[in]包含目标图像(右图)像素的pcl::RGB类型的trg点云
*调用该方法后,pcl::RGB三元组将自动转换为灰度
*/
getPointCloud(浮点u_c、浮点v_c、浮点焦点、浮点基线、pcl::PointCloud::Ptr cloud、pcl::PointCloud::Ptr纹理);
/**\使用缩放视差值简要计算pcl::RGB云
*它可以通过pcl::ImageViewer显示视差图的重新缩放版本
*无效的视差值显示为绿色
*注意:“compute”方法以前必须至少调用过一次才能用于此函数
*有任何影响
*\param[out]vMap输出云
*/

您说您管理全分辨率的输入参数。这意味着您知道这些公式。是什么阻止您在降低分辨率的情况下应用它们?因为到目前为止,我一直在使用以下公式来计算全分辨率焦像素:焦像素=(焦度计/传感器宽度计)*分辨率\宽度。我试图将这个公式调整到我的新分辨率的新宽度,但它似乎不起作用。新旧值是什么?第二个值应该是第一个值的35%。什么告诉你“它似乎不起作用”?我编辑了我的帖子,向你展示我迄今为止所做的尝试。如何使用PCL让你感到羞耻?