概念
内定向就是恢复像片对的内方位元素,目的是确定扫描坐标系与像片坐标系之间的关系,m1、n1、m2、n2、x0、y0分别是内定向的6个参数,像主点o在扫描坐标系(i-cr)中的坐标为(c0,r0),影像的扫描坐标系与像片坐标系的关系为:
然后根据左右倾斜像片的各自四个框标点(数字影像四角的像素坐标就是其扫描坐标)的扫描坐标和框标坐标,求解各自内定向参数。
代码
//内定向参数求解
void Internal_ori(double* scanpos, double* kuangbiaopos, double* np, double delta)
{
//系数矩阵A
Mat A = Mat::zeros(8, 6, CV_64FC1);
for (int i = 0;i < 8;i=i + 2)
{
A.at<double>(i, 0) = 1;
A.at<double>(i, 1) = kuangbiaopos[i] * delta;
A.at<double>(i, 2) = kuangbiaopos[i + 1] * delta;
A.at<double>(i + 1, 3) = A.at<double>(i, 0);
A.at<double>(i + 1, 4) = A.at<double>(i, 1);
A.at<double>(i + 1, 5) = A.at<double>(i, 2);
}
Mat L(8, 1, CV_64FC1, scanpos);
Mat X = (((A.t())*A).inv())*(A.t())*L;
//Mat X = ((A.t()*A).inv())*A.t()*L;
np[0] = X.at<double>(0);
np[1] = X.at<double>(1);
np[2] = X.at<double>(2);
np[3] = X.at<double>(3);
np[4] = X.at<double>(4);
np[5] = X.at<double>(5);
}