单像空间后方交会实验报告(c++版)

合集下载

单像空间后方交会实习报告

单像空间后方交会实习报告

摄影测量学单像空间后方交会实习报告一、实习目的1.掌握空间后方交会的定义和实现算法(1)定义:空间后方交会是以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素Xs,Ys,Zs,φ,ω,κ。

(2)算法:由于每一对像方和物方共轭点可列出2个方程,因此若有3个已知地面坐标的控制点,则可列出6个方程,解求6个外方位元素的改正数△Xs,△Ys,△Zs,△φ,△ω,△κ。

实际应用中为了提高解算精度,常有多余观测方程,通常是在影像的四个角上选取4个或均匀地选择更多的地面控制点,因而要用最小二乘平差方法进行计算。

2.了解摄影测量平差的基本过程(1)获取已知数据。

从摄影资料中查取影像比例尺1/m,平均摄影距离(航空摄影的航高)、内方位元素x0,y0,f;获取控制点的空间坐标X,Y,Z。

(2)量测控制点的像点坐标并进行必要的影像坐标系统误差改正,得到像点坐标。

(3)确定未知数的初始值。

单像空间后方交会必须给出待定参数的初始值,在竖直航空摄影且地面控制点大体对称分布的情况下,Xs0和Ys0为均值,Zs0为航高,φ、ω、κ的初值都设为0。

或者κ的初值可在航迹图上找出或根据控制点坐标通过坐标正反变换求出。

(4)计算旋转矩阵R。

利用角元素近似值计算方向余弦值,组成R阵。

(5)逐点计算像点坐标的近似值。

利用未知数的近似值按共线条件式计算控制点像点坐标的近似值(x),(y)。

(6)逐点计算误差方程式的系数和常数项,组成误差方程式。

(7)计算法方程的系数矩阵ATA与常数项ATL,组成法方程式。

(8)解求外方位元素。

根据法方程,解求外方位元素改正数,并与相应的近似值求和,得到外方位元素新的近似值。

(9)检查计算是否收敛。

将所求得的外方位元素的改正数与规定的限差比较,通常对φ,ω,κ的改正数△φ,△ω,△κ给予限差,通常为0.000001弧度,当3个改正数均小于0.000001弧度时,迭代结束。

摄影测量学单像空间后方交会编程实习报告(精品资料).doc

摄影测量学单像空间后方交会编程实习报告(精品资料).doc

【最新整理,下载后即可编辑】摄影测量学单像空间后方交会编程实习报告班级:130x姓名:xx学号:2013302590xxx指导老师:李欣一、实习目的通过对提供的数据进行计算,输出像片的外方位元素并评定精度。

深入理解单像空间后方交会的思想,体会在有多余观测情况下,用最小二乘平差方法编程实现解求影像外方位元素的过程。

通过尝试编程实现加强编程处理问题的能力和对实习内容的理解,通过对实验结果的分析,增强综合运用所学知识解决实际问题的能力。

了解摄影测量平差的基本过程,掌握空间后方交会的定义和实现算法。

二、实习内容根据学习的单像空间后方交会的知识,用程序设计语言(C++或C语言)编写一个完整的单像空间后方交会程序,通过对提供的数据进行计算,输出像片的外方位元素并评定精度。

三、实习数据已知航摄仪的内方位元素:fk =153.24mm,x=y=0,摄影比例尺为1:15000;4个地面控制点的地面坐标及其对应像点的像片坐标:四、实习原理如果我们知道每幅影像的6个外方位元素,就能确定被摄物体与航摄影像的关系。

因此,如何获取影像的外方位元素,一直是摄影测量工作者所探讨的问题。

可采取的方法有:利用雷达、全球定位系统(GPS)、惯性导航系统(INS)以及星相摄影机来获取影像的外方位元素;也可以利用影像覆盖范围内一定数量的控制点的空间坐标与摄影坐标,根据共线条件方程,反求该影像的外方位元素,这种方法称为单幅影像的空间后方交会。

单像空间后方交会的基本思想是:以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素Xs,Ys,Zs,ϕ,ω,κ。

五、 实习流程1. 获取已知数据。

从摄影资料中查取影像比例尺1/m ,平均摄影距离(航空摄影的航高、内方位元素x 0,y 0,f ;获取控制点的空间坐标X t ,Y t ,Z t 。

2. 量测控制点的像点坐标并进行必要的影像坐标系统误差改正,得到像点坐标。

单像空间后方交会实习报告

单像空间后方交会实习报告

单像空间后方交会实习报告摘要本报告旨在总结并评估笔者在单像空间后方交会实习中的经验和收获。

首先,报告介绍了单像空间后方交会实习的目的和背景。

接着,报告详细描述了实习期间所进行的实验和操作步骤。

在实习过程中,笔者遇到了一些挑战,但通过团队合作和专业指导取得了成功。

最后,报告总结了实习对于个人职业发展的重要性,并提出了改进实习体验的建议。

1. 引言单像空间后方交会是测量和分析地球或其他星球上的点的空间坐标的方法之一。

该方法通过将来自不同位置的图像投影到一个共同的平面上,并在该平面上对图像进行测量和分析,以确定点的坐标。

本实习旨在将现实生活中的实地测量和图像处理技术相结合,通过实际操作了解和掌握单像空间后方交会的原理和应用。

2. 实习过程本次实习分为三个步骤:图像获取、图像处理和空间坐标计算。

2.1 图像获取首先,为了进行后续的图像处理和分析,我们需要获取一组具有不同视角的图像。

为了实现这个目标,我们选择了一片公共景区进行实地测量。

在测量过程中,我们使用了专业的测量设备和相机,并按照一定的间隔和角度拍摄了一组图像。

这些图像将被用于后续的图像处理和分析。

2.2 图像处理在图像处理阶段,我们使用了专业的图像处理软件对获取到的图像进行处理。

首先,我们使用了相机标定算法对相机内外参数进行校准,以保证后续测量的精度和准确度。

然后,我们对每张图像进行了特征点提取和匹配,以建立图像之间的对应关系。

最后,根据所获得的对应关系,我们重建了图像场景的三维模型,并将其用于后续的空间坐标计算。

2.3 空间坐标计算在空间坐标计算阶段,我们使用了单像空间后方交会的原理,计算了每个图像特征点的空间坐标。

首先,我们将图像场景的三维模型与图像上的特征点进行对应,以确定特征点在三维空间中的位置。

然后,我们利用三角测量原理计算出特征点的三维坐标。

最后,通过对所有图像特征点的计算,我们可以得到目标点的空间坐标。

3. 实习挑战与解决在实习过程中,我们遇到了一些挑战,如图像质量、算法调优和测量误差等。

单像空间后方交会实习报告

单像空间后方交会实习报告

单像空间后方交会实习报告本文是一份单像空间后方交会实习报告,旨在总结和分享本人在这个领域进行实习的经验和所得。

一、实习背景和目的在开始正文之前,首先介绍一下实习的背景和目的。

本次实习是为了深入了解单像空间后方交会的原理和应用,并提升我的实践能力。

通过与团队合作,完成一系列的实习任务和项目,我期望能够在这个领域不断成长和进步。

二、实习内容和方法2.1 实习内容本次实习主要涉及单像空间后方交会的方法和技术。

我通过参与实际项目,了解和学习了从数据采集到数据处理的整个流程,并深入研究了相关的算法和工具。

2.2 实习方法为了能够全面了解单像空间后方交会的知识和技术,我采用了多种实习方法。

首先,我积极参与了团队的讨论和会议,与同事们交流和分享我们的学习和经验。

其次,我通过独立完成一些小型项目和任务,提升了自己的实践能力。

此外,我还阅读了大量的相关文献和资料,深入研究了该领域的理论知识。

三、实习成果和收获3.1 实习成果在实习期间,我完成了几个实践项目任务,并取得了一些成果。

首先,我成功实现了单像空间后方交会的基本原理和方法,并在实际项目中应用。

其次,我编写了一份详尽的实习报告,总结了整个实习过程和所得的经验。

3.2 实习收获通过这次实习,我获得了很多宝贵的经验和收获。

首先,我深入了解并掌握了单像空间后方交会的原理和方法,提升了自己的实践能力。

其次,我学会了如何与团队合作,并通过与他人的交流和合作进一步提升自己。

此外,我还学会了如何独立思考和解决问题,在实践中培养了自己的创新思维能力。

四、实习感悟和建议4.1 实习感悟通过实习,我深刻体会到了理论与实践的结合的重要性。

只有将所学的理论知识应用到实践项目中,才能真正理解和掌握。

在实践中遇到各种困难和挑战,我也学会了如何从失败中总结经验,再次进行尝试。

4.2 实习建议对于即将进行单像空间后方交会实习的同学们,我有几点建议。

首先,要注重理论知识的学习和积累,打好基础。

摄影测量后方交会VC实现代码及实习报告

摄影测量后方交会VC实现代码及实习报告

摄影测量课间实习单片空间后方交会班级:09031姓名:吴煜晖学号:20093025901232011-10-8一、实习原理单像空间后方交会的基本思想是:以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素XS ,YS,ZS,ψ,ω,κ。

由于空间后方交会所采用的数学模型共线方程是非线性函数,为了便于外方位元素的解求,须首先对共线方程进行线性化,然后进行后方交会,最后在精度评定。

二、实习过程1、实习所用数据本次实习数据采用课本P.44 27题所给数据。

如下图:2、程序流程图及界面设计本程序程序框图如下:本人采用Visual C++6.0编此程序,利用MFC来设计程序。

主程序页面设计如下:子窗口(即进行计算后所得结果页面)设计如下:3、程序代码本程序代码较多,在此讲部分重要代码列出,其余代码参见程序源代码。

对话框类头文件内声明的类成员及函数(后来增加的):public:void houfangjiaohui();double fi,w,k; //影像外方位角double Xs0,Ys0,Zs0; //后方交会所求解double a[3],b[3],c[3];double mx[6],m0;void inv(double *a,int n); /*正定矩阵求逆*/void transpose(double *m1, double *m2, int m, int n); //矩阵转置void mult(double *m1, double *m2, double *result, int i_1, int j_12, int j_2); //矩阵相乘部分核心代码,在此讲后方交会计算代码给出:void CFinalworkDlg::houfangjiaohui(){double t_fk;fi=w=k=0.0;int i; //中间变量double t_x[4],t_y[4],t_X[4],t_Y[4],t_Z[4];//将单位换成米t_x[0]=m_x1/1000.0; t_x[1]=m_x2/1000.0; t_x[2]=m_x3/1000.0;t_x[3]=m_x4/1000.0;t_y[0]=m_y1/1000.0; t_y[1]=m_y2/1000.0; t_y[2]=m_y3/1000.0;t_y[3]=m_y4/1000.0;t_X[0]=m_X1; t_X[1]=m_X2; t_X[2]=m_X3; t_X[3]=m_X4;t_Y[0]=m_Y1; t_Y[1]=m_Y2; t_Y[2]=m_Y3; t_Y[3]=m_Y4;t_Z[0]=m_Z1; t_Z[1]=m_Z2; t_Z[2]=m_Z3; t_Z[3]=m_Z4;Xs0=Ys0=Zs0=0.0;for(i=0;i<4;i++){Xs0+=t_X[i];Ys0+=t_Y[i];}//确定未知数初始值Xs0/=4;Ys0/=4;t_fk=m_fk/1000.0;Zs0=t_fk*m_mk;double x00=m_x00;double y00=m_y00;double A[8*6];double AT[6*8];double ATA[6*6];double L[8];double ATL[6*1];double Xo[4],Yo[4],Zo[4],Xom,Yom,Zom;double Delta[6];while(1){a[0]=cos(fi)*cos(k)-sin(fi)*sin(w)*sin(k);a[1]=-cos(fi)*sin(k)-sin(fi)*sin(w)*cos(k);a[2]=-sin(fi)*cos(w);b[0]=cos(w)*sin(k);b[1]=cos(w)*cos(k);b[2]=-sin(w);c[0]=sin(fi)*cos(k)+cos(fi)*sin(w)*sin(k);c[1]=-sin(fi)*sin(k)+cos(fi)*sin(w)*cos(k);c[2]=cos(fi)*cos(w);for(i=0;i<4;i++){Xom=a[0]*(t_X[i]-Xs0)+b[0]*(t_Y[i]-Ys0)+c[0]*(t_Z[i]-Zs0);Yom=a[1]*(t_X[i]-Xs0)+b[1]*(t_Y[i]-Ys0)+c[1]*(t_Z[i]-Zs0);Zom=a[2]*(t_X[i]-Xs0)+b[2]*(t_Y[i]-Ys0)+c[2]*(t_Z[i]-Zs0);Xo[i]=-t_fk*Xom/Zom;Yo[i]=-t_fk*Yom/Zom;Zo[i]=Zom;A[i*12+0]=(a[0]*t_fk+a[2]*(t_x[i]-x00))/Zo[i];A[i*12+1]=(b[0]*t_fk+b[2]*(t_x[i]-x00))/Zo[i];A[i*12+2]=(c[0]*t_fk+c[2]*(t_x[i]-x00))/Zo[i];A[i*12+3]=(t_y[i]-y00)*sin(w)-cos(w)*(t_fk*cos(k)+((t_x[i]-x00)*cos(k)-(t _y[i]-y00)*sin(k))*(t_x[i]-x00)/t_fk);A[i*12+4]=-t_fk*sin(k)-(t_x[i]-x00)*((t_x[i]-x00)*sin(k)+(t_y[i]-y00)*cos(k ))/t_fk;A[i*12+5]=t_y[i]-y00;A[i*12+6]=(a[1]*t_fk+a[2]*(t_y[i]-y00))/Zo[i];A[i*12+7]=(b[1]*t_fk+b[2]*(t_y[i]-y00))/Zo[i];A[i*12+8]=(c[1]*t_fk+c[2]*(t_y[i]-y00))/Zo[i];A[i*12+9]=-(t_x[i]-x00)*sin(w)-((t_y[i]-y00)*((t_x[i]-x00)*cos(k)-(t_y[i]-y0 0)*sin(k))/t_fk-t_fk*sin(k))*cos(w);A[i*12+10]=-t_fk*cos(k)-(t_y[i]-y00)*((t_x[i]-x00)*sin(k)+(t_y[i]-y00)*cos(k))/t_fk;A[i*12+11]=-(t_x[i]-x00);L[i*2+0]=(t_x[i]-x00-Xo[i]);L[i*2+1]=(t_y[i]-y00-Yo[i]);}transpose(A,AT,8,6);mult(AT,A,ATA,6,8,6);mult(AT,L,ATL,6,8,1);inv(ATA,6);mult(ATA,ATL,Delta,6,6,1);Xs0+=Delta[0];Ys0+=Delta[1];Zs0+=Delta[2];fi+=Delta[3];w+=Delta[4];k+=Delta[5];if((fabs(Delta[0])>0.00001||fabs(Delta[1])>0.00001||fabs(Delta[2])>0.00001|| fabs(Delta[3])>0.00001||fabs(Delta[4])>0.00001||fabs(Delta[5])>0.00001)==0) {double V[8];double s=0.0;mult(A,Delta,V,8,6,1);for(i=0;i<8;i++){V[i]-=L[i];s+=V[i]*V[i];}m0=sqrt(s/2.0); //单位权中误差for(i=0;i<6;i++) //精度评定{mx[i]=sqrt(ATA[7*i])*m0;}break;}}}三、实习结果程序主界面如下:在该界面中,我们可以手动输入各项数据,也可以清空所有数据以及将所有空恢复默认数据(即题目所给数据)。

摄影测量学空间后方交会实验报告

摄影测量学空间后方交会实验报告

摄影测量学实验报告实验一、单像空间后方交会学院:建测学院班级:测绘082姓名:肖澎学号: 15一.实验目的1.深入了解单像空间后方交会的计算过程;2.加强空间后方交会基本公式和误差方程式,法线方程式的记忆;3.通过上机调试程序加强动手能力的培养。

二.实验原理以单幅影像为基础,从该影像所覆盖地面范围内若干控制点和相应点的像坐标量测值出发,根据共线条件方程,求解该影像在航空摄影时刻的相片外方位元素。

三.实验内容1.程序图框图2.实验数据(1)已知航摄仪内方位元素f=153.24mm,Xo=Yo=0。

限差0.1秒(2)已知4对点的影像坐标和地面坐标:3.实验程序using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication3{class Program{static void Main(){//输入比例尺,主距,参与平参点的个数Console.WriteLine("请输入比例尺分母m:\r");string m1 = Console.ReadLine();double m = (double)Convert.ToSingle(m1);Console.WriteLine("请输入主距f:\r");string f1 = Console.ReadLine();double f = (double)Convert.ToSingle(f1);Console.WriteLine("请输入参与平差控制点的个数n:\r");string n1 = Console.ReadLine();int n = (int)Convert.ToSingle(n1);//像点坐标的输入代码double[] arr1 = new double[2 * n];//1.像点x坐标的输入for (int i = 0; i < n; i++){Console.WriteLine("请输入已进行系统误差改正的像点坐标的x{0}值:\r", i+1);string u = Console.ReadLine();for (int j = 0; j < n; j += 2){arr1[j] = (double)Convert.ToSingle(u);}}//2.像点y坐标的输入for (int i = 0; i < n; i++){Console.WriteLine("请输入已进行系统误差改正的像点坐标的y{0}值:\r", i+1);string v = Console.ReadLine();for (int j = 1; j < n; j += 2){arr1[j] = (double)Convert.ToSingle(v);}}//控制点的坐标输入代码double[,] arr2 = new double[n, 3];//1.控制点X坐标的输入for (int j = 0; j < n; j++){Console.WriteLine("请输入控制点在地面摄影测量坐标系的坐标的X{0}值:\r", j+1);string u = Console.ReadLine();arr2[j , 0] = (double)Convert.ToSingle(u);}//2.控制点Y坐标的输入for (int k = 0; k < n; k++){Console.WriteLine("请输入控制点在地面摄影测量坐标系的坐标的Y{0}值:\r", k+1);string v = Console.ReadLine();arr2[k , 1] = (double)Convert.ToSingle(v);}//3.控制点Z坐标的输入for (int p =0; p < n; p++){Console.WriteLine("请输入控制点在地面摄影测量坐标系的坐标的Z{0}值:\r", p+1);string w = Console.ReadLine();arr2[p , 2] = (double)Convert.ToSingle(w);}//确定外方位元素的初始值//1.确定Xs的初始值:double Xs0 = 0;double sumx = 0;for (int j = 0; j < n; j++){double h = arr2[j, 0];sumx += h;}Xs0 = sumx / n;//2.确定Ys的初始值:double Ys0 = 0;double sumy = 0;for (int j = 0; j < n; j++){double h = arr2[j, 1];sumy += h;}Ys0 = sumy / n;//3.确定Zs的初始值:double Zs0 = 0;double sumz = 0;for (int j = 0; j <= n - 1; j++){double h = arr2[j, 2];sumz += h;}Zs0 = sumz / n;doubleΦ0 = 0;doubleΨ0 = 0;double K0 = 0;Console.WriteLine("Xs0,Ys0,Zs0,Φ0,Ψ0,K0的值分别是:{0},{1},{2},{3},{4},{5}", Xs0, Ys0, Zs0, 0, 0, 0);//用三个角元素的初始值按(3-4-5)计算各方向余弦值,组成旋转矩阵,此时的旋转矩阵为单位矩阵I:double[,] arr3 = new double[3, 3];for (int i = 0; i < 3; i++)arr3[i, i] = 1;}double a1 = arr3[0, 0]; double a2 = arr3[0, 1]; double a3 = arr3[0, 2];double b1 = arr3[1, 0]; double b2 = arr3[1, 1]; double b3 = arr3[1, 2];double c1 = arr3[2, 0]; double c2 = arr3[2, 1]; double c3 = arr3[2, 2];/*利用线元素的初始值和控制点的地面坐标,代入共线方程(3-5-2),* 逐点计算像点坐标的近似值*///1.定义存放像点近似值的数组double[] arr4 = new double[2 * n];//----------近似值矩阵//2.逐点像点坐标计算近似值//a.计算像点的x坐标近似值(x)for (int i = 0; i < 2 * n; i += 2){for (int j = 0; j < n; j++){arr4[i] = -f * (a1 * (arr2[j, 0] - Xs0) + b1 * (arr2[j, 1] - Ys0) + c1 * (arr2[j, 2] - Zs0)) / (a3 * (arr2[j, 0] - Xs0) + b3 * (arr2[j, 1] - Ys0) + c3 * (arr2[j, 2] - Zs0)); }}//b.计算像点的y坐标近似值(y)for (int i = 1; i < 2 * n; i += 2){for (int j = 0; j < n; j++){arr4[i] = -f * (a2 * (arr2[j, 0] - Xs0) + b2 * (arr2[j, 1] - Ys0) + c2 * (arr2[j, 2] - Zs0)) / (a3 * (arr2[j, 0] - Xs0) + b3 * (arr2[j, 1] - Ys0) + c3 * (arr2[j, 2] - Zs0)); }}//逐点计算误差方程式的系数和常数项,组成误差方程:double[,] arr5 = new double[2 * n, 6]; //------------系数矩阵(A)//1.计算dXs的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 0] = -1 / m; //-f/H == -1/m}//2.计算dYs的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 1] = -1 / m; //-f/H == -1/m}//3.a.计算误差方程式Vx中dZs的系数for (int i = 0; i < 2 * n; i += 2)arr5[i, 2] = -arr1[i] / m * f;}//3.b.计算误差方程式Vy中dZs的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 2] = -arr1[i] / m * f;}//4.a.计算误差方程式Vx中dΦ的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 3] = -f * (1 + arr1[i] * arr1[i] / f * f);}//4.a.计算误差方程式Vy中dΦ的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 3] = -arr1[i - 1] * arr1[i] / f;}//5.a.计算误差方程式Vx中dΨ的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 4] = -arr1[i] * arr1[i + 1] / f;}//5.b.计算误差方程式Vy中dΨ的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 4] = -f * (1 + arr1[i] * arr1[i] / f * f);}//6.a.计算误差方程式Vx中dk的系数for (int i = 0; i < 2 * n; i += 2){arr5[i, 5] = arr1[i + 1];}//6.b.计算误差方程式Vy中dk的系数for (int i = 1; i < 2 * n; i += 2){arr5[i, 5] = -arr1[i - 1];}//定义外方位元素组成的数组double[] arr6 = new double[6];//--------------------外方位元素改正数矩阵(X)//定义常数项元素组成的数组double[] arr7 = new double[2 * n];//-----------------常数矩阵(L)//计算lx的值for (int i = 0; i < 2 * n; i += 2)arr7[i] = arr1[i] - arr4[i]; //将近似值矩阵的元素代入}//计算ly的值for (int i = 1; i <= 2 * (n - 1); i += 2){arr7[i] = arr1[i] - arr4[i]; //将近似值矩阵的元素代入}/* 对于所有像点的坐标观测值,一般认为是等精度量测,所以权阵P为单位阵.所以X=(ATA)-1ATL *///1.计算ATdouble[,] arr5T = new double[6, 2 * n];for (int i = 0; i < 6; i++){for (int j = 0; j < 2 * n; j++){arr5T[i, j] = arr5[j, i];}}//A的转置与A的乘积,存放在arr5AA中double[,] arr5AA = new double[6, 6];for (int i = 0; i < 6; i++){for (int j = 0; j < 6; j++){arr5AA[i, j] = 0;for (int l = 0; l < 2 * n; l++){arr5AA[i, j] += arr5T[i, l] * arr5[l, j];}}}nijuzhen(arr5AA);//arr5AA经过求逆后变成原矩阵的逆矩阵//arr5AA * arr5T存在arr5AARATdouble[,] arr5AARAT = new double[6, 2 * n];for (int i = 0; i < 6; i++){for (int j = 0; j < 2 * n; j++){arr5AARAT[i, j] = 0;for (int p = 0; p < 6; p++){arr5AARAT[i, j] += arr5AA[i, p] * arr5T[p, j];}}}//计算arr5AARAT x L,存在arrX中double[] arrX = new double[6];for (int i = 0; i < 6; i++){for (int j = 0; j < 1; j++){arrX[i] = 0;for (int vv = 0; vv < 6; vv++){arrX[i] += arr5AARAT[i, vv] * arr7[vv];}}}//计算外方位元素值double Xs, Ys, Zs, Φ, Ψ, K;Xs = Xs0 + arrX[0];Ys = Ys0 + arrX[1];Zs = Zs0 + arrX[2];Φ = Φ0 + arrX[3];Ψ = Ψ0 + arrX[4];K = K0 + arrX[5];for (int i = 0; i <= 2; i++){Xs += arrX[0];Ys += arrX[1];Zs += arrX[2];Φ += arrX[3];Ψ += arrX[4];K += arrX[5];}Console.WriteLine("Xs,Ys,Zs,Φ,Ψ,K的值分别是:{0},{1},{2},{3},{4},{5}", Xs0, Ys0, Zs0, Φ, Ψ, K);Console.Read();}//求arr5AA的逆矩public static double[,] nijuzhen(double[,] a) {double[,] B = new double[6, 6];int i, j, k;int row = 0;int col = 0;double max, temp;int[] p = new int[6];for (i = 0; i < 6; i++){p[i] = i;B[i, i] = 1;}for (k = 0; k < 6; k++){//找主元max = 0; row = col = i;for (i = k; i < 6; i++){for (j = k; j < 6; j++){temp = Math.Abs(a[i, j]);if (max < temp){max = temp;row = i;col = j;}}}//交换行列,将主元调整到k行k列上if (row != k){for (j = 0; j < 6; j++){temp = a[row, j];a[row, j] = a[k, j];a[k, j] = temp;temp = B[row, j];B[row, j] = B[k, j];B[k, j] = temp;i = p[row]; p[row] = p[k]; p[k] = i; }if (col != k){for (i = 0; i < 6; i++){temp = a[i, col];a[i, col] = a[i, k];a[i, k] = temp;}}//处理for (j = k + 1; j < 6; j++){a[k, j] /= a[k, k];}for (j = 0; j < 6; j++){B[k, j] /= a[k, k];a[k, k] = 1;}for (j = k + 1; j < 6; j++){for (i = 0; j < k; i++){a[i, j] -= a[i, k] * a[k, j];}for (i = k + 1; i < 6; i++){a[i, j] -= a[i, k] * a[k, j];}}for (j = 0; j < 6; j++){for (i = 0; i < k; i++){B[i, j] -= a[i, k] * B[k, j];}for (i = k + 1; i < 6; i++){B[i, j] -= a[i, k] * B[k, j];}for (i = 0; i < 6; i++) {a[i, k] = 0;a[k, k] = 1;}}//恢复行列次序for (j = 0; j < 6; j++){for (i = 0; i < 6; i++) {a[p[i], j] = B[i, j]; }}for (i = 0; i < 6; i++){for (j = 0; j < 6; j++) {a[i, j] = a[i, j];}}return a;}4.实验结果四.实验总结此次实验让我深入了解单像空间后方交会的计算过程,加强了对空间后方交会基本公式和误差方程式,法线方程式的记忆。

摄影测量学单像空间后方交会编程实习报告

摄影测量学单像空间后方交会编程实习报告

摄影测量学单像空间后方交会编程实习报告实习背景在本次实习中,我们学习了摄影测量学单像空间后方交会的编程实现。

这是一种通过计算影像中各点的坐标来确定被摄物的三维坐标的方法,应用广泛于测绘、地理信息、建筑等领域。

本次实习采用 MATLAB 软件进行编程,目的是将理论知识应用到实际操作中,让我们更深入理解摄影测量学单像空间后方交会的原理和应用。

实习内容理论部分首先,我们在工作室进行了理论部分的学习。

老师讲解了单像空间后方交会的原理,以及如何通过影像坐标、相机外方位元素、像点坐标和像平面坐标等参数来计算被摄物的三维坐标。

在理论部分的学习过程中,我们通过公式的推导和实例分析,更加深入地理解了单像空间后方交会的原理。

实践部分实践部分是本次实习的重头戏。

我们利用 MATLAB 软件进行了单像空间后方交会的编程实现,具体步骤如下:1.输入相机外方位元素通过读取文本文件,将相机外方位元素(相机在拍摄时的姿态、位置等参数)输入到 MATLAB 中。

2.输入影像坐标通过读取文本文件,将影像中的像点坐标输入到 MATLAB 中。

3.计算像平面坐标利用相机内定标参数,将像点坐标转化为像平面坐标。

4.计算被摄物三维坐标根据单像空间后方交会的原理,利用相机外方位元素、像平面坐标和像点坐标等参数,计算被摄物的三维坐标。

5.输出结果将计算结果输出到文本文件中,以便后续的数据处理和分析。

在实际操作中,我们首先编写了 MATLAB 脚本文件,根据上述步骤逐步实现了单像空间后方交会的计算过程。

然后,我们利用自己拍摄的实际照片进行实验,将相机外方位元素和像点坐标输入到程序中,最终得到了被摄物的三维坐标结果。

实习收获通过本次实习,我从理论到实践,更深入地理解了摄影测量学单像空间后方交会的原理和应用,同时也掌握了 MATLAB 的编程技能。

在实践中,我遇到了许多问题,包括数据的输入输出、代码的调试和结果的分析等等。

通过和同学的讨论和老师的指导,我不仅解决了这些问题,还对摄影测量学的应用有了更深入的认识。

(样本)空间后方交会实验报告

(样本)空间后方交会实验报告

空间后方交会实验报告
1 实习目的:
用Visual C++编写一个完整的单片空间后方交会程序,通过对提供的试验数据进行计算,输出像片的外方位元素并评定精度。

深入理解单片空间后方交会的原理,体会在有多余观测情况下,用最小二乘平差方法编程实现解求影像外方位元素的过程。

通过上机调试程序加强动手能力的培养,通过对实验结果的分析,增强综合运用所学知识解决实际问题的能力。

2实习环境:
2.1硬件环境:window操作系统
2.2软件环境:vc++6.0

3实习内容:
利用一定数量的地面控制点,根据共线条件方程求解像片外方位元素:

4 数据准备:
4.1 已知航摄仪内方位元素f=153.24mm,Xo=Yo=0。

5实习过程:
5.1学习单张像片空间后方交会的基本理论,掌握其基本思想。


5.2在纸上绘出空间后方交会的计算机程序框图。

为了能够在宏观上指导我们编写程序,我们需要在草稿纸上绘出程序框图。

框图如下:










小↓完

限↓

否否↓
否︱↓是

输出中间结果和出错信息↓

非正常结束
6. 按照程序框图编写程序。

程序代码如下:必须有注释
7 程序结果显示
(略)
8 实习心得与总结:
略。

单像空间后方交会实习报告

单像空间后方交会实习报告
2
框图。
3
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,通力根1保过据护管生高线产中敷工资设艺料技高试术中卷0资不配料仅置试可技卷以术要解是求决指,吊机对顶组电层在气配进设置行备不继进规电行范保空高护载中高与资中带料资负试料荷卷试下问卷高题总中2体2资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况1卷中下安,与全要过,加度并强工且看作尽护下可1都关能可于地以管缩正路小常高故工中障作资高;料中对试资于卷料继连试电接卷保管破护口坏进处范行理围整高,核中或对资者定料对值试某,卷些审弯异核扁常与度高校固中对定资图盒料纸位试,置卷编.工保写况护复进层杂行防设自腐备动跨与处接装理地置,线高尤弯中其曲资要半料避径试免标卷错高调误等试高,方中要案资求,料技编试术写5、卷交重电保底要气护。设设装管备备置线4高、调动敷中电试作设资气高,技料课中并3术试、件资且中卷管中料拒包试路调试绝含验敷试卷动线方设技作槽案技术,、以术来管及避架系免等统不多启必项动要方高式案中,;资为对料解整试决套卷高启突中动然语过停文程机电中。气高因课中此件资,中料电管试力壁卷高薄电中、气资接设料口备试不进卷严行保等调护问试装题工置,作调合并试理且技利进术用行,管过要线关求敷运电设行力技高保术中护。资装线料置缆试做敷卷到设技准原术确则指灵:导活在。。分对对线于于盒调差处试动,过保当程护不中装同高置电中高压资中回料资路试料交卷试叉技卷时术调,问试应题技采,术用作是金为指属调发隔试电板人机进员一行,变隔需压开要器处在组理事在;前发同掌生一握内线图部槽 纸故内资障,料时强、,电设需回备要路制进须造行同厂外时家部切出电断具源习高高题中中电资资源料料,试试线卷卷缆试切敷验除设报从完告而毕与采,相用要关高进技中行术资检资料查料试和,卷检并主测且要处了保理解护。现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

摄影测量学空间后方交会实验报告测绘101徐斌

摄影测量学空间后方交会实验报告测绘101徐斌

摄影测量学空间后方交会实验报告测绘101徐斌摄影测量学实验报告实验一、单像空间后方交会学院: 建测学院班级: 测绘101姓名: 徐斌学号: 26一( 实验目的1.深入了解单像空间后方交会的计算过程;2.加强空间后方交会基本公式和误差方程式,法线方程式的记忆;3.通过上机调试程序加强动手能力的培养。

二(实验原理以单幅影像为基础,从该影像所覆盖地面范围内若干控制点和相应点的像坐标量测值出发,根据共线条件方程,求解该影像在航空摄影时刻的相片外方位元素。

三(实验内容1.程序图框图2.实验数据(1)已知航摄仪内方位元素f,153.24mm,Xo,Yo,0。

限差0.1秒(2)已知4对点的影像坐标和地面坐标:影像坐标地面坐标x(mm) y(mm) X(m) Y(m) Z(m) 1 -86.15 -68.99 36589.41 25273.32 2195.17 2 -53.40 82.21 37631.08 31324.51 728.69 3 -14.78 -76.63 39100.97 24934.98 2386.50 4 10.46 64.43 40426.54 30319.81 757.313.实验程序Form1.cs 程序using System;using System.Collections.Generic; using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.IO;namespace 后方交会1{public partial class Form1 : Form {public Form1(){InitializeComponent();}public doublef,m,Xs, Ys, Zs,a1, a2, a3, b1, b2, b3, c1, c2, c3, q, w, k;public static int N,s;public double[] x = new double[4];public double[] y = new double[4];public double[] X = new double[4];public double[] Y = new double[4];public double[] Z = new double[4];public double[,] L = new double[N*2, 1];string output="外方位元素\t\n";Matrix XX;string[] a =File.ReadAllLines("d:\\控制点.txt");public void 计算N(){int cnt;using (StreamReader sr = new StreamReader(@"d:\控制点.txt")) {cnt = 0;while (sr.ReadLine() != null){cnt++;}// 这个cnt就是行数}N = cnt/5;}public void 计算初始值(){double temp=0;for (int i = 0; i <N; i++){temp+=X[i];}Xs =temp/ N;double tmp = 0;for (int i = 0; i < N; i++){tmp += Y[i];}Ys =tmp/ N;Zs = m*f;}public void 求改正数(){a1 = Math.Cos(q) * Math.Cos(k) - Math.Sin(q) * Math.Sin(w) * Math.Sin(k);a2 = -Math.Cos(q) * Math.Sin(k) - Math.Sin(q) * Math.Sin(w) * Math.Cos(k);a3 = -Math.Sin(q) * Math.Cos(w);b1 = Math.Cos(w) * Math.Sin(k);b2 = Math.Cos(w) * Math.Cos(k);b3 = -Math.Sin(w);c1 = Math.Sin(q) * Math.Cos(k) + Math.Cos(q) * Math.Sin(w) * Math.Sin(k);c2 = -Math.Sin(q) * Math.Sin(k) + Math.Cos(q) * Math.Sin(w) * Math.Cos(k);c3 = Math.Cos(q) * Math.Cos(w);int p = 0;int j = p;for (p = 0; p < a.Length; p += 5){x[j] = double.Parse(a[p])/1000;y[j] = double.Parse(a[p + 1])/1000;X[j] = double.Parse(a[p + 2]);Y[j] = double.Parse(a[p + 3]);Z[j] = double.Parse(a[p+ 4]);j++;}Matrix A = new Matrix(N*2, 6);int i = 0;int b = i;for (i = 0; i < N; i++){A.m_data[b, 0] = (a1 * f + a3 * x[i]) / (a3 * (X[i] - Xs) + b3 * (Y[i] - Ys) + c3 * (Z[i] - Zs));A.m_data[b, 1] = (b1 * f + b3 * x[i]) / (a3 * (X[i] - Xs) + b3 *(Y[i] - Ys) + c3 * (Z[i] - Zs));A.m_data[b, 2] = (c1 * f + c3 * x[i]) / (a3 * (X[i] - Xs) + b3 *(Y[i] - Ys) + c3 * (Z[i] - Zs));A.m_data[b, 3] = y[i] * Math.Sin(w) - (x[i] / f * (x[i] * Math.Cos(k) - y[i] * Math.Sin(k)) + f * Math.Cos(k)) * Math.Cos(w);A.m_data[b, 4] = -f * Math.Sin(k) - x[i] / f * (x[i] * Math.Sin(k) + y[i] * Math.Cos(k));A.m_data[b, 5] = y[i];A.m_data[b + 1, 0] = (a2 * f + a3 * y[i]) / (a3 * (X[i] - Xs) + b3 * (Y[i] - Ys) + c3 * (Z[i] - Zs));A.m_data[b + 1, 1] = (b2 * f + b3 * y[i]) / (a3 * (X[i] - Xs) + b3 * (Y[i] - Ys) + c3 * (Z[i] - Zs));A.m_data[b + 1, 2] = (c2 * f + c3 * y[i]) / (a3 * (X[i] - Xs) + b3 * (Y[i] - Ys) + c3 * (Z[i] - Zs));A.m_data[b + 1, 3] = -x[i] * Math.Sin(w) - (y[i] / f * (x[i] *Math.Cos(k) - y[i] * Math.Sin(k)) - f * Math.Sin(k)) * Math.Cos(w);A.m_data[b + 1, 4] = -f * Math.Cos(k) - y[i] / f * (x[i] *Math.Sin(k) + y[i] * Math.Cos(k));A.m_data[b + 1, 5] = -x[i];b += 2;}Matrix T = new Matrix(6, N*2);T = A.Transpose();Matrix AT = T * A;Matrix AA = AT.Inverse();Matrix P = AA * T;Matrix L = new Matrix(N*2, 1);int v = 0;int m = v;for (v = 0; v < N; v++){L.m_data[m, 0] = x[v] + f * (a1 * (X[v] - Xs) + b1 * (Y[v] - Ys) + c1 * (Z[v]- Zs)) / (a3 * (X[v] - Xs) + b3 * (Y[v] - Ys) + c3 * (Z[v] - Zs));L.m_data[m + 1, 0] = y[v] + f * (a2 * (X[v] - Xs) + b2 * (Y[v] - Ys) + c2 * (Z[v]- Zs)) / (a3 * (X[v] - Xs) + b3 * (Y[v] - Ys) + c3 * (Z[v] - Zs));m += 2;}XX = P * L;//计算外方位元素Xs += XX[0, 0];Ys += XX[1, 0];Zs += XX[2, 0];q += XX[3, 0];w += XX[4, 0];k += XX[5, 0];}public void 迭代(){求改正数();for (int i = 0; i < 6; i++){for (int j = 0; j < 1; j++){output += XX[i, j] + "\t\n";}}if (Math.Abs(XX[3, 0]) >= 0.000029 && Math.Abs(XX[4, 0]) >= 0.000029 && Math.Abs(XX[5,0]) >= 0.000029){for (int d = 1; d < s; d++){求改正数();for (int i = 0; i < 6; i++){for (int j = 0; j < 1; j++){output += XX[i, j]+ "\t\n";}}if (Math.Abs(XX[3, 0]) <= 0.000029 && Math.Abs(XX[4, 0]) <= 0.000029 &&Math.Abs(XX[5, 0]) <= 0.000029){输出();break;}}if (Math.Abs(XX[3, 0]) >= 0.000029 || Math.Abs(XX[4, 0]) >= 0.000029 ||Math.Abs(XX[5, 0]) >= 0.000029){MessageBox.Show("已达到指定迭代次数,迭代结束!!!");MessageBox.Show(output, "后方交会", MessageBoxButtons.OK,rmation);}}else{输出();}}public void 输出(){_Xs.Text = Xs.ToString();_Ys.Text = Ys.ToString();_Zs.Text = Zs.ToString();_q.Text = q.ToString();_w.Text = w.ToString();_k.Text = k.ToString();}private void button1_Click(object sender, EventArgs e) {try{f = double.Parse(textBox1.Text);}catch{MessageBox.Show("请先输入主距");}s = int.Parse(textBox2.Text);m = int.Parse(textBox3.Text);计算N();int i=0;int j = i;for ( i = 0; i < a.Length; i += 5){x[j] = double.Parse(a[i]);y[j] = double.Parse(a[i + 1]);X[j] = double.Parse(a[i + 2]);Y[j] = double.Parse(a[i + 3]);Z[j] = double.Parse(a[i + 4]);j++;}计算初始值();}private void button2_Click(object sender, EventArgs e){迭代();}private void button3_Click(object sender, EventArgs e){MessageBox.Show("请将点坐标文件保存到d盘根目录并保存为\"控制点 .txt\"\n要求每行一个值,五行表示一个点\n测绘101徐斌");}}}添加Matrix.cs类程序using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 后方交会1{public class Matrix{//构造方阵public Matrix(int row){m_data = new double[row, row]; }public Matrix(int row, int col) {m_data = new double[row, col]; }//复制构造函数public Matrix(Matrix m){int row = m.Row;int col = m.Col;m_data = new double[row, col]; for (int i = 0; i < row; i++) for (int j = 0; j < col; j++) m_data[i, j] = m.m_data[i, j];}//设为单位阵public void SetUnit(){for (int i = 0; i < m_data.GetLength(0); i++) for (int j = 0; j < m_data.GetLength(1); j++) m_data[i, j] = ((i == j) ? 1 : 0);}//设置元素值public void SetValue(double d){for (int i = 0; i < m_data.GetLength(0); i++) for (int j = 0; j < m_data.GetLength(1); j++) m_data[i, j] = d;}//返中行数public int Row{get{return m_data.GetLength(0);}}//返回列数public int Col{get{return m_data.GetLength(1);}}//重载索引 ,存取数据成员public double this[int row, int col] {get{return m_data[row, col];}set{m_data[row, col] = value;}}//初等变换对调两行:ri<-->rjpublic Matrix Exchange(int i, int j) {double temp;for (int k = 0; k < Col; k++){temp = m_data[i, k];m_data[i, k] = m_data[j, k];m_data[j, k] = temp;}return this;}//初等变换第index 行乘以mulMatrix Multiple(int index, double mul){for (int j = 0; j < Col; j++){m_data[index, j] *= mul;}return this;}//初等变换第src行乘以mul加到第index行Matrix MultipleAdd(int index, int src, double mul) {for (int j = 0; j < Col; j++){m_data[index, j] += m_data[src, j] * mul;}return this;}//transpose 转置public Matrix Transpose(){Matrix ret = new Matrix(Col, Row);for (int i = 0; i < Row; i++)for (int j = 0; j < Col; j++){ret[j, i] = m_data[i, j];}return ret;}//矩阵乘public static Matrix operator *(Matrix lhs, Matrix rhs){if (lhs.Col != rhs.Row) //异常{System.Exception e = new Exception("相乘的两个矩阵的行列数不匹配"); throw e;}Matrix ret = new Matrix(lhs.Row, rhs.Col);double temp;for (int i = 0; i < lhs.Row; i++){for (int j = 0; j < rhs.Col; j++){temp = 0;for (int k = 0; k < lhs.Col; k++){temp += lhs[i, k] * rhs[k, j];}ret[i, j] = temp;}}return ret;}//功能:返回列主元素的行号//参数:row为开始查找的行号//说明:在行号[row,Col)范围内查找第row列中绝对值最大的元素,返回所在行号int Pivot(int row){int index = row;for (int i = row + 1; i < Row; i++){if (m_data[i, row] > m_data[index, row])index = i;}return index;}//逆阵:使用矩阵的初等变换,列主元素消去法public Matrix Inverse(){if (Row != Col) //异常,非方阵{System.Exception e = new Exception("求逆的矩阵不是方阵");throw e;}Matrix tmp = new Matrix(this);Matrix ret = new Matrix(Row); //单位阵ret.SetUnit();int maxIndex;double dMul;for (int i = 0; i < Row; i++){maxIndex = tmp.Pivot(i);if (tmp.m_data[maxIndex, i] == 0){System.Exception e = new Exception("求逆的矩阵的行列式的值等于0,"); throw e;}if (maxIndex != i) //下三角阵中此列的最大值不在当前行,交换{tmp.Exchange(i, maxIndex);ret.Exchange(i, maxIndex);}ret.Multiple(i, 1 / tmp[i, i]); tmp.Multiple(i, 1 / tmp[i, i]); for (int j = i + 1; j < Row; j++) {dMul = -tmp[j, i] / tmp[i, i]; tmp.MultipleAdd(j, i, dMul);ret.MultipleAdd(j, i, dMul);}}for (int i = Row - 1; i > 0; i--) {for (int j = i - 1; j >= 0; j--) {dMul = -tmp[j, i] / tmp[i, i]; tmp.MultipleAdd(j, i, dMul);ret.MultipleAdd(j, i, dMul);}}return ret;}//是方阵吗,public bool IsSquare(){return Row == Col;}//是对称阵吗,public bool IsSymmetric(){if (Row != Col)return false;for (int i = 0; i < Row; i++)for (int j = i + 1; j < Col; j++) if (m_data[i, j] != m_data[j, i]) return false;return true;}//公有数据成员public double[,] m_data;}}4(实验结果四(实验总结此次实验让我深入了解单像空间后方交会的计算过程,加强了对空间后方交会基本公式和误差方程式,法线方程式的记忆。

单像空间后方交会实习报告

单像空间后方交会实习报告

单像空间后方交会实习报告单像空间后方交会实习报告一、引言空间后方交会是摄影测量学中的一项重要内容,它能通过对已知控制点的旁边影像进行分析和计算,确定未知控制点的空间坐标,这在地图制作、城市规划、工程测量等领域有着广泛的应用。

本次实习旨在通过实际操作掌握空间后方交会的方法和技巧,进一步加深对摄影测量学的理解,并提升实际操作能力。

二、实习目的1. 学习空间后方交会的理论知识,了解其基本原理和计算方法。

2. 掌握使用数字相机采集控制点及待测控制点影像的技巧。

3. 熟练使用后方交会软件进行影像的处理和计算,得到待测控制点的空间坐标。

4. 分析实际数据的精度和误差,评估后方交会结果的可靠性。

三、实习过程1. 准备工作在实习开始前,我们需要准备好数字相机、相机标定板以及控制点和待测控制点的影像。

同时还需要安装并熟悉后方交会软件,以便后续处理和计算。

2. 影像采集首先,在实地选取控制点和待测控制点,并采用全站仪等测量仪器获取其地面坐标。

接着,通过相机标定板进行相机标定,获取相机内外参数。

然后,使用数字相机对控制点和待测控制点进行影像采集。

为了减小误差,我们要保证相机的光心与全站仪的标尺中心对准,并使用三脚架固定相机。

3. 影像的处理和计算将采集到的影像导入到后方交会软件中,根据相机内外参数和控制点的地面坐标,进行畸变校正和像点坐标的提取。

接下来,通过自动或手动方法选取控制点和待测控制点进行像点匹配。

通过匹配的像点坐标和已知控制点的地面坐标,利用后方交会公式进行计算,得到待测控制点的空间坐标。

4. 结果分析和评估对得到的结果进行精度分析,并评估其可靠性。

通过对比实测控制点的地面坐标与计算得到的空间坐标,计算精度检查,进一步评估后方交会结果的准确性。

同时,还要检查影像的质量和匹配的像点之间的差异,排除控制点标定、像点提取或匹配过程中出现的问题。

四、实习总结通过这次实习,我对空间后方交会的理论知识和实际操作有了更深入的了解。

摄影测量学单像空间后方交会编程实习报告

摄影测量学单像空间后方交会编程实习报告

摄影测量学单像空间后方交会编程实习报告班级:130x姓名:xx学号:2013302590xxx指导老师:李欣一、实习目的通过对提供的数据进行计算,输出像片的外方位元素并评定精度。

深入理解单像空间后方交会的思想,体会在有多余观测情况下,用最小二乘平差方法编程实现解求影像外方位元素的过程。

通过尝试编程实现加强编程处理问题的能力和对实习内容的理解,通过对实验结果的分析,增强综合运用所学知识解决实际问题的能力。

了解摄影测量平差的基本过程,掌握空间后方交会的定义和实现算法。

二、实习内容根据学习的单像空间后方交会的知识,用程序设计语言(C++或C语言)编写一个完整的单像空间后方交会程序,通过对提供的数据进行计算,输出像片的外方位元素并评定精度。

三、实习数据已知航摄仪的内方位元素:fk =153.24mm,x=y=0,摄影比例尺为1:15000;4个地面控制点的地面坐标及其对应像点的像片坐标:四、实习原理如果我们知道每幅影像的6个外方位元素,就能确定被摄物体及航摄影像的关系。

因此,如何获取影像的外方位元素,一直是摄影测量工作者所探讨的问题。

可采取的方法有:利用雷达、全球定位系统(GPS)、惯性导航系统(INS)以及星相摄影机来获取影像的外方位元素;也可以利用影像覆盖范围内一定数量的控制点的空间坐标及摄影坐标,根据共线条件方程,反求该影像的外方位元素,这种方法称为单幅影像的空间后方交会。

单像空间后方交会的基本思想是:以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素Xs,Ys,Zs,ϕ,ω,κ。

五、实习流程1.获取已知数据。

从摄影资料中查取影像比例尺1/m,平均摄影距离(航空摄影的航高、内方位元素x0,y,f;获取控制点的空间坐标Xt,Yt,Zt。

2.量测控制点的像点坐标并进行必要的影像坐标系统误差改正,得到像点坐标。

摄影测量实习报告-单片空间后方交会

摄影测量实习报告-单片空间后方交会

摄影测量实习报告实习内容:单片空间后方交会编程实习者:李友兵学号:**********指导老师:张金平老师实习时间:2011.05.30——2011.06.03一、实习目的与任务此次摄影测量实习主要是要自主编程实现单像空间后方交会,通过已知的内方位元素和控制点像点坐标和地面坐标求解六个外方位元素,在此过程中深入理解单像空间后方交会的原理和对编程的熟悉和理解(我用的是C语言编程),和对时间的合理运用,对知识的综合运用,培养理论的实际运用能力,任务是在一个星期内自主完成。

二、单片空间后方交会理论基础单像空间后方交会:是通过以像点平面坐标为观测值,以控制点坐标为已知值,利用共线条件方程和最小二乘原理,运用间接平差方法,通过迭代求解6个外方位元素。

程序设计的思路与流程三、程序设计的思路与流程(编程框架和步骤)1、根据内方位元素和已知的数据将控制点的框标坐标转换为像平面坐标系坐标:x=x′-x0,y=y′-y02、确定未知数的初始值:角元素初始值κ0=ω0=Φ0=0;线元素初始值Zs0=H=mf,Xs0=(X1+X2+X3+X4)/4,Ys0=(Y1+Y2+Y3+Y4)/43、利用角元素初始值计算方向余弦值组成旋转矩阵Ra1=cosΦ*cosκ-sinΦ*sinω*sinκ,a2=-cosΦ*sinκ-sinΦ*sin ω*cosκ,a3=-sinΦ*cosωb1=cosω*sinκ,b2=cosω*cosκ,b3=-sinωc1=sinΦ*cosκ+cosΦ*sinω*sinκ,c2=-sinΦ*sinκ+cosΦ*sin ω*cosκ,c3=cosΦ*cosω4、逐点计算控制点的像点坐标的近似值,共线方程为:x=(-f*(a1*(X-Xs)+b1*(Y-Ys)+c1*(Z-Zs)))/(a3*(X-Xs)+b3*(Y-Ys) +c3*(Z-Zs))y=(-f*(a2*(X-Xs)+b2*(Y-Ys)+c2*(Z-Zs)))/(a3*(X-Xs)+b3*(Y-Ys) +c3*(Z-Zs))(x)=(-f*(a1*(X-Xs)+b1*(Y-Ys)+c1*(Z-Zs)))/(a3*(X-Xs)+b3*(Y-Y s)+c3*(Z-Zs))(y)=(-f*(a2*(X-Xs)+b2*(Y-Ys)+c2*(Z-Zs)))/(a3*(X-Xs)+b3*(Y-Y s)+c3*(Z-Zs))5、组成误差方程:Vx=a11*dXs+a12*dYs+a13*dZs+a14*dΦ+a15*dω+a16*dκ+(x)-xVy=a21*dXs+a22*dYs+a23*dZs+a24*dΦ+a25*dω+a26*dκ+(y)-y系数求解(是共线方程分别外方位元素求导,是共线方程线性化的系数):变量代换A= a1*(X-Xs)+b1*(Y-Ys)+c1*(Z-Zs)B= a2*(X-Xs)+b2*(Y-Ys)+c2*(Z-Zs)C= a3*(X-Xs)+b3*(Y-Ys)+c3*(Z-Zs)a11=(a1*f+a3*x)/C,a12=(b1*f+b3*x)/C,a13=(c1*f+c3*f)/C,a14=y *sinω-((x*(x*cosκ-y*sinκ))/f+f*cosκ)cosω,a15=-f*sin κ-(x*(x*sinκ+y*cosκ)/f),a16=ya21=(a2*f+a3*x)/C,a22=(b2*f+b3*x)/C,a23=(c2*f+c3*x)/C,a24=-xsinω-((x*(x*cosκ-y*sinκ))/f-f*sinκ)cos ω,a25=-f*cosκ-(y*(x*sinκ+y*cosκ)/f),a26 =-x 误差方程的常系数(是像点坐标观测值与计算的近似值的差值):lx=x-(x) ,ly=y-(y)6、组成法方程,解求外方位元素改正数X=(A T A)-1A T L(A为误差方程的系数矩阵,L为误差方程的常系数矩阵,通过步骤5求得,此处先求A T A再求矩阵的逆矩阵,解得的改正数加上相应的近似值得到外方位元素新的近似值)7、检查计算是否收敛:将求得的外方位元素改正数与规定的限差比较,大于限差继续迭代,小于限差则终止。

【免费下载】单像空间后方交会实习报告

【免费下载】单像空间后方交会实习报告
3. 通过对提供的试验数据进行计算,输出像片的外方位元素并评定精度。深入理解 单片空间后方交会的原理,体会在有多余观测情况下,用最小二乘平差方法编程 实现解求影像外方位元素的过程。通过上机调试程序加强动手能力的培养,通过 对实验结果的分析,增强综合运用所学知识解决实际问题的能力。
4. 实习过程:4.1 学习单张像片空间后方交会的基本理论,掌握其基本思想。如果我 们知道每幅影像的 6 个外方位元素,就能确定被摄物体与航摄影像的关系。而单 像空间后方交会就是用于测定像片的外方位元素的,它的基本思想是:以单幅影 像为基础,从影像所覆盖的地面范围内若干控制点的已知地面坐标和相应点的像 坐标量测值出发,根据共线方程,解求该影像在航空摄影时刻的外方位元素 Xs,Ys,Zs,p,w,k.由于空间后方交会所采用的数学模型共线方程是非线性函数,为了 便于外方位元素的解求,首先将其线性化。4.2 在纸上绘出空间后方交会的计算机 程序框图。为了能够在宏观上指导我们编写程序,我们需要在草稿纸上绘出程序
一、实习目的 1. 掌握空间后方交会的定义和实现算法 (1)定义:空间后方交会是以单幅影像为基础,从该影像所覆盖地面范围内若干控 制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,解求该影像 在航空摄影时刻的外方位元素 Xs,Ys,Zs,φ,ω,κ。 (2)算法:由于每一对像方和物方共轭点可列出 2 个方程,因此若有 3 个已知地面 坐标的控制点,则可列出 6 个方程,解求 6 个外方位元素的改正数△Xs,△Ys,△ Zs,△φ,△ω,△κ。实际应用中为了提高解算精度,常有多余观测方程,通常是 在影像的四个角上选取 4 个或均匀地选择更多的地面控制点,因而要用最小二乘平差 方法进行计算。
摄影测量学 单像空间后方交会实习报告
1

单向后方交会实验报告

单向后方交会实验报告

实验报告班级:测绘一班学号:日期:目录一、计算原理 (3)二、算法流程 (4)三、源程序 (5)四、计算结果 (13)五、结果分析 (13)六、心得体会 (13)一、计算原理已知条件摄影机主距f=,x0=,y0=, 像片比例尺为1:40000,有四对点的像点坐标与相应的地面坐标如下表。

以单像空间后方交会方法,求解该像片的外方位元素。

二、算法流程(1)获取已知数据。

从航摄资料中差取平均航高与摄影机主距;获取控制点的地面测量坐标并转换为地面摄影坐标。

(2)量测控制点的像点坐标并作系统误差改正。

(3)确定未知数的初始值。

在竖直摄影且地面控制点大体对称分布的情况下,按如下方法确定初始值,即nX XS∑=0,nY YS∑=,∑+=Z nmf Z S10000===κωϕ(4)用三个角元素的初始值按下式,计算各个方向余弦值,组成旋转矩阵Rωϕκωϕκϕκωϕκϕωκωκωωϕκωϕκϕκωϕκϕcos cos cos sin cos sin sin sin sin cos cos sin sin cos cos sin cos cos sin cos sin sin sin cos sin sin sin cos cos 321321321=+-=+=-===-=--=-=c c c b b b a a a(5)逐点计算像点坐标的近似值。

利用未知数的近似值和控制点的地面坐标;带入共线方程式,逐点近似像点坐标的近似值(x )、(y )。

(6)逐点计算误差方程式的系数和常数项,组成误差方程式。

(7)计算法方程的系数矩阵A A T 和常数项L A L ,组成法方程式。

(8) 解法方程,求得外方位元素的改正数κωϕd d d d d d 、、、、、S S S Z Y X 。

(9)用前次迭代取得的近似值,加本次迭代的改正数,计算外方位元素的新值。

KS K S K S K S K S K S K S K S K S dZ Z Z dY Y Y dX X X +=+=+=---111,,K K K K K K K K K d d d κκκωωωϕϕϕ+=+=+=---111,,(10)将求得的外方位元素改正数与规定的限差比较,若小于限差,则迭代结束。

2019年摄影测量学单像空间后方交会编程实习报告-范文word版 (13页)

2019年摄影测量学单像空间后方交会编程实习报告-范文word版 (13页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! == 摄影测量学单像空间后方交会编程实习报告篇一:摄影测量学单像空间后方交会编程实习报告摄影测量学单像空间后方交会编程实习报告班级:姓名:学号:201X302590xxx指导老师:李欣一、实习目的通过对提供的数据进行计算,输出像片的外方位元素并评定精度。

深入理解单像空间后方交会的思想,体会在有多余观测情况下,用最小二乘平差方法编程实现解求影像外方位元素的过程。

通过尝试编程实现加强编程处理问题的能力和对实习内容的理解,通过对实验结果的分析,增强综合运用所学知识解决实际问题的能力。

了解摄影测量平差的基本过程,掌握空间后方交会的定义和实现算法。

二、实习内容根据学习的单像空间后方交会的知识,用程序设计语言(C++或C语言)编写一个完整的单像空间后方交会程序,通过对提供的数据进行计算,输出像片的外方位元素并评定精度。

三、实习数据已知航摄仪的内方位元素:fk=153.24mm,x0=y0=0,摄影比例尺为1:15000;4个地面控制点的地面坐标及其对应像点的像片坐标:四、实习原理如果我们知道每幅影像的6个外方位元素,就能确定被摄物体与航摄影像的关系。

因此,如何获取影像的外方位元素,一直是摄影测量工作者所探讨的问题。

可采取的方法有:利用雷达、全球定位系统(GPS)、惯性导航系统(INS)以及星相摄影机来获取影像的外方位元素;也可以利用影像覆盖范围内一定数量的控制点的空间坐标与摄影坐标,根据共线条件方程,反求该影像的外方位元素,这种方法称为单幅影像的空间后方交会。

单像空间后方交会的基本思想是:以单幅影像为基础,从该影像所覆盖地面范围内若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,解求该影像在航空摄影时刻的外方位元素Xs,Ys,Zs,?,ω,κ。

五、实习流程1. 获取已知数据。

后方交会实验报告

后方交会实验报告

一、实验目的1. 理解后方交会的原理和计算方法。

2. 掌握后方交会实验的操作步骤。

3. 通过实验验证后方交会计算结果的准确性。

二、实验原理后方交会是一种常用的测量定位方法,其基本原理是在待定点(P点)上对三个已知控制点(A、B、C)观测三个方向间的水平角,然后根据这些观测数据计算待定点P的坐标。

三、实验仪器与材料1. 全站仪一台2. 棱镜三个3. 标准尺一套4. 计算器一台5. 后方交会计算软件四、实验步骤1. 准备阶段- 在实验场地选择合适的位置作为待定点P。

- 在已知控制点A、B、C处分别架设棱镜。

- 确保全站仪、棱镜和标准尺都处于水平状态。

2. 观测阶段- 将全站仪对准待定点P,进行整平。

- 依次瞄准A、B、C三个控制点,分别测量它们与待定点P之间的水平夹角。

- 同时,使用标准尺测量A、B、C三个控制点到待定点P的水平距离。

3. 数据记录- 记录观测到的水平夹角和水平距离数据。

4. 计算阶段- 使用后方交会计算软件,输入观测数据,进行坐标计算。

- 计算出待定点P的坐标(X、Y)。

5. 结果分析- 将计算得到的坐标与实际坐标进行比较,分析计算结果的准确性。

五、实验结果与分析1. 实验数据- 水平夹角a:30°- 水平夹角b:45°- 水平夹角c:60°- 水平距离PA:100m- 水平距离PB:150m- 水平距离PC:200m2. 计算结果- 待定点P的坐标(X、Y):X = 123.456m,Y = 789.012m3. 结果分析- 计算得到的坐标与实际坐标存在一定误差,但误差在可接受范围内。

- 通过实验验证了后方交会原理的正确性和计算方法的准确性。

六、实验结论1. 后方交会是一种有效的测量定位方法,适用于实际工程测量。

2. 通过实验掌握了后方交会实验的操作步骤和计算方法。

3. 后方交会计算结果具有一定的准确性,可用于实际工程测量。

七、实验总结本次实验使我们对后方交会原理和计算方法有了更深入的了解,同时提高了实际操作能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单像空间后方交会姓名:学号:时间:目录一、作业任务 ............................................................................................................... - 3 -二、计算原理 ............................................................................................................... - 3 -三、算法流程 ............................................................................................................... - 7 -四、源程序 ................................................................................................................... - 8 -五、计算结果 ............................................................................................................... - 8 -六、结果分析 ............................................................................................................... - 8 -七、心得与体会 ........................................................................................................... - 8 -八、附页 ....................................................................................................................... - 8 -1.c++程序 ........................................................................................................... - 8 -2.C++程序截图.................................................................................................. - 15 -3.matlb程序..................................................................................................... - 16 -一、 作业任务 已知条件:摄影机主距f=153.24mm ,x0=0,y0=0, 像片比例尺为1:40000,有四对点的像点坐标与相应的地面坐标如下表。

以单像空间后方交会方法,求解该像片的外方位元素。

二、 计算原理1. 获取已知数据。

从航摄资料中查取平均航高与摄影机主距;获取控制点的地面测量坐标并转换为地面摄测坐标。

2. 测量控制点的像点坐标并作系统误差改正。

3. 确定未知数的初始值。

在竖直摄影且地面控制点大体对称分布的情况下,按如下方法确定初始值,即01,,S SSX Y X YZmf Z nnn===+∑∑∑ 0000ϕωκ===式中:m 为摄影比例尺分母;n 为控制点个数4. 用三个角元素的初始值按下式计算各方向余弦值,组成旋转矩阵R123123123a a a R b b b c c c ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦矩阵中各元素的计算公式如下:123123123cos cos sin sin sin cos sin sin sin cos sin cos cos sin cos cos sin sin cos cos sin sin sin sin cos sin cos cos cos a a a b b b c c c ϕκϕωκϕκϕωκϕωωκωκωϕκϕωκϕκϕωκϕω=-⎧⎪=--⎪⎪=-⎪=⎪⎪=⎨⎪=-⎪⎪=+⎪=-+⎪⎪=⎩ 5. 逐点计算像点坐标的近似值。

利用未知数的近似值和控制点的地面坐标,带入以下共线方程式,111333222333()()()()()()()()()()()()A S A S A S A S A S A S A S A S A S A S A S A S a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z -+-+-⎧=-⎪-+-+-⎪⎨-+-+-⎪=-⎪-+-+-⎩逐点计算像点坐标的近似值()x 、()y1111111313131212121131313112121223232322()()()()()()()()()()()()()()()()()()()()()()S S S S S S S S S S S S S S S S S S a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z a X X b Y Y c Z Z x f a X X b Y Y c Z Z y -+-+-=--+-+--+-+-=--+-+--+-+-=--+-+-=2222223232321313133333333232323333333314()()()()()()()()()()()()()()()()()()()()(()S S S S S S S S S S S S S S S S S S a X X b Y Y c Z Z fa X Xb Y Yc Z Z a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z a x f -+-+---+-+--+-+-=--+-+--+-+-=--+-+-=-414143434342424244343434)()()()()()()()()()()()()S S S S S S S S S S S S X X b Y Y c Z Z a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z ⎧⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪-+-+-⎪⎪-+-+-⎪-+-+-⎪=-⎪-+-+-⎩6. 逐点计算误差方程式的系数和常数项,组成误差方程式。

111213141516212223242526313233343536141424344454628651425354555636162636465664717273747576818283848586a a a a a a aa a a a a a a a a a a A a a a a a a A A a a a a a a A a a a a a a A a a a a a a a a a a a a ⨯⎡⎤⎢⎥⎢⎥⎢⎥⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎢⎥⎢⎥⎢⎥⎣⎦ 由常数项计算公式:111333222333()()()()()()()()()()()()(1,2,3,4)i S i S i S ixi i S i S i S i yi i S i S i S ii S i S i S a X X b Y Y c Z Z x f l a X X b Y Y c Z Z L l a X X b Y Y c Z Z y f a X X b Y Y c Z Z i -+-+-⎡⎤+⎢⎥-+-+-⎡⎤⎢⎥==⎢⎥⎢-+-+-⎥⎣⎦+⎢⎥-+-+-⎣⎦=得到常数项矩阵计算式为:1111111313131212121131313112121223232128134()()()()()()()()()()()()()()()()(S S S S S S S S S S S S S S S S a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z a X X b Y Y c Z Z x f a X X b Y Y L L L L L ⨯-+-+-+-+-+--+-+-+-+-+--+-+-+-+-⎡⎤⎢⎥⎢⎥==⎢⎥⎢⎥⎣⎦322222222323232131313333333323232333333334)()()()()()()()()()()()()()()()()()()()S S S S S S S S S S S S S S S S S S S S c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z a X X b Y Y c Z Z x f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z x +--+-+-+-+-+--+-+-+-+-+--+-+-+-+-+-1414143434342424244343434()()()()()()()()()()()()S S S S S S S S S S S S a X X b Y Y c Z Z f a X X b Y Y c Z Z a X X b Y Y c Z Z y f a X X b Y Y c Z Z ⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥-+-+-⎢⎥+-+-+-⎢⎥⎢⎥-+-+-⎢⎥+-+-+-⎢⎥⎣⎦7. 计算法方程的是系数矩阵T A A 和常数项T A L ,组成法方程式。

8. 解法方程,求得外方位元素的改正数,,,,,S S S dX dY dZ d d d ϕωκ。

9. 用前次迭代取得的近似值,加本次迭代的改正数,计算外方位元素的新值。

相关文档
最新文档