利用多项式实现图像几何校正(Matlab实现)

1.原理简述:      

      根据两幅图像中的一些已知对应点(控制点对),建立函数关系式,通过坐标变换,实现失真图像的几何校正。

                                      

      

        设两幅图像坐标系统之间畸变关系能用解析式来描述:

                             

         根据上述的函数关系,可以依次计算畸变图像每个像素的矫正坐标值,保持各像素值不变,这样生成一幅矫正图像。

2.实现过程:     

        (1)因此首先要得到多项式,matlab提供了拟合多项式的函数 Isqcurvefit,

                               格式:lsqcurvefit(f,a,x,y)

                 f:符号函数句柄

                a:最开始预估的值(预拟合的未知参数的估计值)。如上面的问题如果我们预估A为1,B为2,则a=[1 2]

                x:我们已经获知的x的值

                y:我们已经获知的x对应的y的值

               函数的返回值为对应多项式系数组成的一维数组。

示例(二次多项式):建立由校正图像到畸变图像的函数

function [F] = fun(a,b)
x = b(:,1);
y = b(:,2);
F = a(1)+a(2)*x+a(3)*y+a(4)*x.^2+a(5)*x.*y+a(6)*y.^2; 
end


x0 = fixedPoints(:,1);
y0 = fixedPoints(:,2);
x1 = movingPoints(:,1);
y1 = movingPoints(:,2);
data = [x1,y1];
a = [1 1 1 1 1 1];
a1 = lsqcurvefit('fun',a,data,x0);
a2 = lsqcurvefit('fun',a,data,y0);

         (2)根据得到的二项式,由校正图像每个像素坐标(x,y)出发,算出在已知畸变图像上的对应坐标(x',y'),使像元一一对应,赋予校正图像对应畸变图像的像元

的像素值,最终得到校正图像。

示例:

J2 = uint8(zeros(size(J)));
for rgb = 1:3
    for i = 1:m
        for j = 1:n
            if round(fun(a1,[i,j]))>=1 && round(fun(a1,[i,j]))<=c && round(fun(a2,[i,j]))>&
  • 6
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值