桶形/枕形变形的公式
image-processing
5
0

对于桶/枕形失真,无法理解如何获得图像中原始(x,y)的(x',y')。

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

第2节本文介绍了改造。基本上:

在此处输入图片说明

在这里,我以Mathematica为例:

在此处输入图片说明

收藏
评论

您可以在Fitzgibbon, 2001找到多项式径向变形模型的近似值:

在此处输入图片说明

其中rd和ru是距畸变中心的距离。这也可用于滤除广角相机图像中的失真,以用于计算机视觉和图像处理目的。

您可以在此处找到有关原理和着色器代码的更详细说明,以实现无失真过滤(以及正向变换): http : //marcodiiga.github.io/radial-lens-undistortion-filtering

我还发布了论文,如果您想了解我发布的方法的数学细节,应该看看

  • 张忠(1999)。通过从未知方向查看平面来灵活地进行相机校准
  • 安德鲁·菲茨吉本(2001)。多视点几何形状和镜头变形的同时线性估计
收藏
评论

OpenCV C ++中的简单桶形/枕形失真

IplImage* barrel_pincusion_dist(IplImage* img, double Cx,double Cy,double kx,double ky)
{
    IplImage* mapx = cvCreateImage( cvGetSize(img), IPL_DEPTH_32F, 1 );
    IplImage* mapy = cvCreateImage( cvGetSize(img), IPL_DEPTH_32F, 1 );

    int w= img->width;
    int h= img->height;

    float* pbuf = (float*)mapx->imageData;
    for (int y = 0; y < h; y++)
    {
        for (int x = 0; x < w; x++)
        {         
            float u= Cx+(x-Cx)*(1+kx*((x-Cx)*(x-Cx)+(y-Cy)*(y-Cy)));
            *pbuf = u;
            ++pbuf;
        }
    }

    pbuf = (float*)mapy->imageData;
    for (int y = 0;y < h; y++)
    {
        for (int x = 0; x < w; x++) 
        {
            *pbuf = Cy+(y-Cy)*(1+ky*((x-Cx)*(x-Cx)+(y-Cy)*(y-Cy)));
            ++pbuf;
        }
    }

    /*float* pbuf = (float*)mapx->imageData;
    for (int y = 0; y < h; y++)
    {
        int ty= y-Cy;
        for (int x = 0; x < w; x++)
        {
            int tx= x-Cx;
            int rt= tx*tx+ty*ty;

            *pbuf = (float)(tx*(1+kx*rt)+Cx);
            ++pbuf;
        }
    }

    pbuf = (float*)mapy->imageData;
    for (int y = 0;y < h; y++)
    {
        int ty= y-Cy;
        for (int x = 0; x < w; x++) 
        {
            int tx= x-Cx;
            int rt= tx*tx+ty*ty;

            *pbuf = (float)(ty*(1+ky*rt)+Cy);
            ++pbuf;
        }
    }*/

    IplImage* temp = cvCloneImage(img);
    cvRemap( temp, img, mapx, mapy ); 
    cvReleaseImage(&temp);
    cvReleaseImage(&mapx);
    cvReleaseImage(&mapy);

    return img;
}

更复杂的形式http://opencv.willowgarage.com/documentation/camera_calibration_and_3d_reconstruction.html

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号