创建最速下降算法以确定3D仿射变形

时间:2018-01-14 10:21:44

标签: c++ image algorithm opencv 3d

我想实现2.5D逆成分图像对齐。为此,我需要创建一个最陡的下降图像。我按照Code Project的实现进行2D图像对齐。但我正在寻找3D扭曲信息,因此也是3D最陡下降图像。

对于我的项目,我有一个3D模型解释,使用光线投射我正在创建一个rgbd-image。现在我想搜索3D扭曲,它将此模板图像与给定的实时图像对齐以估计摄像机位置。

我目前只有X和Y方向的渐变

cv::Sobel(grayImg_T, Grad_TX, CV_32F, 1, 0, 3);
cv::Sobel(grayImg_T, Grad_TY, CV_32F, 0, 1, 3);

我估计最陡的下降如下:

       float* p_sd_pixel = &p_sd[cols*j * 3 + i * 3];
       p_sd_pixel[0] = (float) (-cols*Tx + rows*Ty);
       p_sd_pixel[1] = (float) Tx;
       p_sd_pixel[2] = (float) Ty;

       for(int l = 0; l < 3; l++){
           for(int m = 0; m < 3; m++){
               float* p_h = (float*)(H.data);
               p_h[3*l+m] += p_sd_pixel[l]*p_sd_pixel[m];
           }
       }

两者都来自2D逆成分图像对齐代码,我来自我之前发布的链接的网站。我想我还需要Z方向的渐变。但我不知道如何为2.5D对齐创建最陡的下降图像以及如何确定仿射扭曲。我如何处理数学或找到更好的方法来实现它?

0 个答案:

没有答案