《课程作业2--计算内定向参数(共7页).doc》由会员分享,可在线阅读,更多相关《课程作业2--计算内定向参数(共7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上数字摄影测量作业报告计算内定向参数2010 年 12 月 10 日1 作业任务 -32 作业思想 -33 已知条件及数据-34 作业过程 -35 源程序 - 46 作业成果 - 177心得体会与建议- 171 作业任务根据仿射变换公式,由已知数据(像点的像素坐标和像平面直角坐标)编程解算出仿射变换参数。2作业思想内定向确定像素坐标(I , J)与像平面坐标(x , y)的转换关系,可以运用仿射变换公式。设框标的像素坐标为,以像主点为原点的像平面直角坐标为(x , y)则它们之间的关系可用仿射变换公式表示,即式中:、为6个仿射变换参数,其中包含像素坐标与像平面直角坐标之
2、间的平移、旋转关系以及数字影像的部分系统误差(如底片变形误差、物镜畸变差和扫描仪误差等)。在实际编程作业中,根据上式,可列出矩阵式:编写代码,可求出仿射变换参数、。3作业条件及数据像点的像素坐标及直角坐标由上机实习所得数据给出,见下表:表1点号像素坐标像平面坐标x(mm)y(mm)x(m)y(m)1128.2202.-103.947-103.95222184.102.103.945103.9243105.124.-103.937103.92742206.2179.103.958-103.952526.1164.-112.966-0.00562285.1140.112.99-0.01571143
3、.22.0.003113.00181168.2281.0.026-112.9714 源程序#include #include #include #include#includeconst int N=8;int i,j;double zjzbNN,xszbNN,csNN,zjzbTNN,xszbTNN;/求转置矩阵templatevoid Transpose(T1*mat1,T2*mat2,int a,int b)for(i=0;ia;i+)for(j=0;jb;j+)mat2ji=mat1ij;return;/求矩阵的乘积templatevoid Array_mul(T1*mat1,T2 *
4、 mat2,T2 * result,int a,int b,int c) int i,j,k;for(i=0;ia;i+)for(j=0;jc;j+)resultij=0;for(k=0;kb;k+)resultij+=mat1ik*mat2kj;return;/求逆矩阵inverse(double ANN,int m)int i=0,j=0,k=0;double C2020,B2020;for(i=0;i2*m;i+) for(j=0;j2*m;j+) if(i=j) Cij=1.0; else Cij=0.0;for(i=0;im;i+) for(j=0;jm;j+)Bij=Aij;for
5、(i=0;im;i+) for(j=m;j2*m;j+)Bij=Cij-m;cout.precision(5);for(k=0;km;k+)for(i=k;i=0;j-)if(Bik!=0)Bij=Bij/Bik; for(i=m-1;ik;i-)if(Bik=0)continue; for(j=0;j2*m;j+) Bij=Bij-Bkj; for(k=1;km;k+) for(i=0;i=i;j-) Bij=Bij-Bik*Bkj;for(i=0;im;i+) for(j=0;jm;j+)Aji=Bjm+i; return 1; /原始数据导入void Input()ifstream in
6、file; infile.open(原始坐标数据.txt); if(infile.is_open() while(!infile.eof ()for(int i=0;ixszbi0;infile.ignore(1); infilexszbi1;infile.ignore(1); infilexszbi2;infile.ignore(1); infilezjzbi0;infile.ignore(1); infilezjzbi1;infile.ignore(1); infile.close(); void main()Input();Transpose(zjzb,zjzbT,8,8);Transp
7、ose(xszb,xszbT,8,8); inverse(xszbT,8);Array_mul(zjzbT,xszbT,cs,8,8,8); cout计算得仿射变换参数:endl;for(i=0;i2;i+)for(j=0;j3;j+)if(j%3=0)coutendl;coutcsij ;coutendl;/输出结果ofstream outfile;outfile.open(结果数据(仿射变换参数).txt);if(outfile.is_open () for(i=0;i2;i+) for(j=0;j3;j+) if(j%3=0) outfileendl; outfilecsij ; outfileendl; outfile.close();6 计算结果即7 心得体会与建议 这次作业说实话很惭愧,一开始根本不知道有这样一个作业,可能上机课那天走神了。后来知道的时候已经是离作业布置很久之后,才又翻开前面学习的这部分内容,又看了一遍,发现这个作业完成起来应该不难,就是很简单的矩阵运算。随后变找同学要来了上机时得到的像素坐标数据和像平面坐标数据,开始编程。在文件输入和输出的时候出现一点小问题,后来修改程序之后也纠正过来。时隔上学期的编程作业这么久,初下手时感觉是有点手生,看来自己需要多“学而时习之”。专心-专注-专业
限制150内