ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:47.95KB ,
资源ID:3726453      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3726453.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(摄影测量实习报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

摄影测量实习报告.docx

1、摄影测量实习报告摄影测量实习报告单张影像空间后方交会程序设计一、 实习目的深入理解单张影像空间后方交会呃原理,体会再有多余观测情况下,用最小二乘平差方法编程实现解求影像外方为元素的过程。利用Visual C+或者Matlab(或其他熟悉的计算机语言)边学一个完整的单张影像空间后方交会程序,通过对提供的试验数据进行计算,输出相片的外方为元素并进行评定精度。通过编写程序实现单张影像空间后方交会计算,掌握非线性方程线性化的过程、相应数据读入与存储的方法以及迭代计算的特点,巩固各类基础课程及计算机课程的学习内容,培养上机调试程序的主动能力,通过对实验结果的分析,增强综合运用所学知识解决专业实际问题的能

2、力。二、 实习环境1、 硬件环境:Windows 操作系统;2、 软件环境:VC+活Matlab 或其他计算机语言。三、 实习内容利用一定数量的地面控制点,根据共线条件方程求解相片外方为元素并进行精度评定。四、 实习原理1共线方程2精度评定 其中五、实习数据2 模拟像片一对:左片号23 右片号242像片比例尺: 1/300003航摄机主距:f=150mm4每张像片有4个控制点5点位略图3 6 124 5 5 86 7 4 108 3 99 10 5 811 12 1 76各片像点坐标及其地面坐标片号点号 像点坐标(mm) 地面坐标(m) x y X Y Z23 1 -91.596 -74.85

3、9100000.00137500.0011.00 3 -94.230 81.446100000.00142500.0036.00 7 95.207 -75.521106000.00137500.0042.00 9 96.797 83.077106000.00142500.0056.0024 4-102.695 -79.618103000.00137500.0090.00 6 -99.904 81.754103000.00142500.0031.0010 86.890 -77.540109000.00137500.00 7.0012 88.904 76.257109000.00142500.00

4、 5.00七、验证数据1已知航摄仪内方位元素f153.24mm,XoYo0。2已知4对点的影像坐标和地面坐标 影像坐标地面坐标x(mm)y(mm)X(m)Y(m)Z(m)1-86.15-68.9936589.4125273.322195.172-53.4082.2137631.0831324.51728.693-14.78-76.6339100.9724934.982386.50410.4664.4340426.5430319.81757.31八、程序设计如下using System;using System.Collections.Generic;using System.Component

5、Model;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.IO;using System.Data.OleDb;namespace 单像空间后方交会 public partial class 后方交会 : Form public 后方交会() InitializeComponent(); /定义已知数据,x、y存储像点坐标,X、Y、Z存储地面点坐标 double x = new double4, y = new double4,X = new do

6、uble4, Y = new double4, Z = new double4; double f, d;/f为主距,d为迭代精度 private void openDataToolStripMenuItem_Click(object sender, EventArgs e) /打开*.txt文件数据 if (ofdOpenFile.ShowDialog() = DialogResult.OK) StreamReader mystreamreader = new StreamReader(ofdOpenFile.FileName);/将文件载入到mystreamreader string Li

7、ne;/读取的每行信息将记录在该字符串中 double Temp = new double22;/将每一行的信息存放在该一维数组中 int temp = 0; /将*.text文件中的信息读如到Temp一维数组中 while (Line = mystreamreader.ReadLine() != null) Temptemp+ = Convert.ToDouble(Line); mystreamreader.Close(); for (int i = 0; i 4; i+) /根据所读的数据赋值已知数据 xi = Temp5 * i; yi = Temp5 * i + 1; Xi = Tem

8、p5 * i + 2; Yi = Temp5 * i + 3; Zi = Temp5 * i + 4; /将已知数据添加到列表视图中 ListViewItem a; a = lst已知数据.Items.Add(xi.ToString(); a.SubItems.Add(yi.ToString(); a.SubItems.Add(Xi.ToString(); a.SubItems.Add(Yi.ToString(); a.SubItems.Add(Zi.ToString(); /将所读数据赋值给f和d,并显示到文本框中 f =Temp20; d =Temp21; txt主距f.Text = f.

9、ToString() + m; txt限差d.Text = d.ToString() + m; private void btnCalculate_Click(object sender, EventArgs e) /初始计算/ /已知数据 /double x = -0.08615, -0.0534, -0.01478, 0.01046 ; /double y = -0.06899, 0.08221, -0.07663, 0.06443 ; /double X = 36859.41, 37631.08, 39100.97, 40426.54 ; /double Y = 25273.32, 31

10、324.51, 24934.98, 30319.81 ; /double Z = 2195.17, 728.69, 2386.50, 757.31 ; /double f = 0.15324, d = 0.000001; const int c_N = 100;/迭代次数 int n=0;/迭代次数统计变量 double H,m=0;/H为航高,m为比例尺 / 求m的值 int t = 0; double sum; double mid = new double6;/存储比例尺m的值 for (int i = 0; i 4; i+)/求六对线段的长度比 for (int j = i + 1;

11、j 4; j+) midt = (Math.Sqrt(Xi - Xj) * (Xi - Xj) + (Yi - Yj) * (Yi - Yj) / (Math.Sqrt(xi - xj) * (xi - xj) + (yi - yj) * (yi - yj); t+; sum = 0.0; for (int i = 0; i t; i+) sum = sum + midi; m = sum / t;/比例尺为各段长度比的均值 H = f * m;/计算航高 lbl比例尺m.Text = 比例尺m= + m.ToString();/显示比例尺 lblH.Text = 航高H= + H.ToStr

12、ing()+m;/显示航高 /定义外方位元素,并附初值 double Xs , Ys , Zs , = 0, = 0, = 0; Xs = (X0 + X1 + X2 + X3) / 4.0; Ys = (Y0 + Y1 + Y2 + Y3) / 4.0; Zs = (Z0 + Z1 + Z2 + Z3) / 4.0 + m * f; /定义x,y近似值 double _x = new double4; double _y = new double4; /定义共线方程中的分子分母项,便于计算 double _X = new double4; double _Y = new double4; d

13、ouble _Z = new double4; /定义旋转矩阵R double, R = new double3, 3; /定义解方程所用矩阵 double, A = new double8, 6;/A系数阵 double, AT = new double6, 8;/A系数阵转置 double, ATA = new double6, 6;/A的转置与A的乘积 double, temp = new double6, 12;/临时矩阵 double, ATAR = new double6, 6;/A的转置与A的乘积的逆 double, ATARAT = new double6, 8;/A的转置与A

14、的乘积的逆的转置 double, L = new double8, 1;/误差方程中的常数项 double, XX = new double6, 1;/X向量 /开始迭代/ do /计算旋转矩阵 R0, 0 = Math.Cos() * Math.Cos() - Math.Sin() * Math.Sin() * Math.Sin();/a1 R0, 1 = -Math.Cos() * Math.Sin() - Math.Sin() * Math.Sin() * Math.Cos();/a2 R0, 2 = -Math.Sin() * Math.Cos();/a3 R1, 0 = Math.C

15、os() * Math.Sin();/b1 R1, 1 = Math.Cos() * Math.Cos();/b2 R1, 2 = -Math.Sin();/b3 R2, 0 = Math.Sin() * Math.Cos() + Math.Cos() * Math.Sin() * Math.Sin();/c1 R2, 1 = -Math.Sin() * Math.Sin() + Math.Cos() * Math.Sin() * Math.Cos();/c2 R2, 2 = Math.Cos() * Math.Cos();/c3 for (int i = 0; i 4; i+) /用共线方程

16、计算 x,y 的近似值 _Xi = R0, 0 * (Xi - Xs) + R1, 0 * (Yi - Ys) + R2, 0 * (Zi - Zs); _Yi = R0, 1 * (Xi - Xs) + R1, 1 * (Yi - Ys) + R2, 1 * (Zi - Zs); _Zi = R0, 2 * (Xi - Xs) + R1, 2 * (Yi - Ys) + R2, 2 * (Zi - Zs); _xi = -f * _Xi / _Zi; _yi = -f * _Yi / _Zi; for (int i = 0; i 4; i+) /计算系数矩阵 A2 * i, 0 = (R0,

17、 0 * f + R0, 2 * xi) / _Zi; A2 * i, 1 = (R1, 0 * f + R1, 2 * xi) / _Zi; A2 * i, 2 = (R2, 0 * f + R2, 2 * xi) / _Zi; A2 * i, 3 = yi * Math.Sin() - (xi / f) * (xi * Math.Cos() - yi * Math.Sin() + f * Math.Cos() * Math.Cos(); A2 * i, 4 = -f * Math.Sin() - (xi / f) * (xi * Math.Sin() + yi * Math.Cos();

18、A2 * i, 5 = yi; A2 * i + 1, 0 = (R0, 1 * f + R0, 2 * yi) / _Zi; A2 * i + 1, 1 = (R1, 1 * f + R1, 2 * yi) / _Zi; A2 * i + 1, 2 = (R2, 1 * f + R2, 2 * yi) / _Zi; A2 * i + 1, 3 = -xi * Math.Sin() - (xi / f) * (xi * Math.Cos() - yi * Math.Sin() - f * Math.Sin() * Math.Cos(); A2 * i + 1, 4 = -f * Math.Co

19、s() - (yi / f) * (xi * Math.Sin() + yi * Math.Cos(); A2 * i + 1, 5 = -xi; /计算常数项 L2 * i, 0 = xi - _xi; L2 * i + 1, 0 = yi - _yi; /计算A的转置,存在AT中 for (int i = 0; i 6; i+) for (int j = 0; j 8; j+) ATi, j = Aj, i; /计算A的转置与A的乘积,存在ATA中 for (int i = 0; i 6; i+) for (int j = 0; j 6; j+) ATAi, j = 0; for (int

20、 l = 0; l 8; l+) ATAi, j += ATi, l * Al, j; /计算ATA的逆矩阵/ /初始化temp-临时数组 for (int l = 0; l 6; l+) for (int p = 0; p 12; p+) templ, p = 0; /把ATA各值赋给temp for (int i = 0; i 6; i+) for (int j = 0; j 6; j+) tempi, j = ATAi, j; /在temp中加入初等方阵 for (int l = 0; l 6; l+) templ, l + 6 = 1; /初等变换 for (int l = 0; l

21、6; l+) if (templ, l != 1) double bs = templ, l; templ, l = 1; for (int p = l + 1; p 12; p+) templ, p /= bs; for (int q = 0; q 6; q+) if (q != l) double bs = tempq, l; for (int p = l; p 12; p+) tempq, p -= bs * templ, p; else continue; /得到ATA的逆阵后存在ATAR中 for (int i = 0; i 6; i+) for (int j = 0; j 6; j

22、+) ATARi, j = tempi, j + 6; /ATAR * AT存在ATARAT中 for (int i = 0; i 6; i+) for (int j = 0; j 8; j+) ATARATi, j = 0; for (int l = 0; l 6; l+) ATARATi, j += ATARi, l * ATl, j; /计算ATARAT * L,存在XX中 for (int i = 0; i 6; i+) for (int j = 0; j 1; j+) XXi, j = 0; for (int l = 0; l c_N) MessageBox.Show(请检查阈值和迭

23、代次数! + (n - 1), 计算失败, MessageBoxButtons.OK, MessageBoxIcon.Warning); break; /计算外方位元素值 Xs += XX0, 0; Ys += XX1, 0; Zs += XX2, 0; += XX3, 0; += XX4, 0; += XX5, 0; while (Math.Abs(XX0, 0) = d | Math.Abs(XX1, 0) = d | Math.Abs(XX2, 0) = d | Math.Abs(XX3, 0) = 1000*d | Math.Abs(XX4, 0) = 1000*d | Math.Ab

24、s(XX5, 0) = 1000*d); /输出显示结果 if (n c_N) MessageBox.Show(超过迭代精度,此数值下可能不收敛!, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show(计算完成,显示计算结果, 提示, MessageBoxButtons.OK, MessageBoxIcon.Information); txt计算结果.Text = Xs: + Xs.ToString() + m + rn + Ys: + Ys.ToString() + m + rn + Zs:

25、+ Zs.ToString() + m + rnrn + : + .ToString() + rad + rn + : + .ToString() + rad + rn + : + .ToString() + rad + rnrn + dXs: + XX0, 0.ToString() + m + rn + dYs: + XX1, 0.ToString() + m + rn + dZs: + XX2, 0.ToString() + m + rn + d: + XX3, 0.ToString() + rad + rn + d: + XX4, 0.ToString() + rad + rn + d:

26、 + XX5, 0.ToString() + rad + rnrn + 迭代次数: + n.ToString(); /保存结果 if (MessageBox.Show(是否保存结果数据., 提示, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = DialogResult.Yes) if (ofdSaveFile.ShowDialog() = DialogResult.OK) StreamWriter mystreamwriter = new StreamWriter(ofdSaveFile.FileName); mystreamwriter.WriteLine(计算结果为: ); mystreamwriter.WriteLine(m: + m.ToString(); mystreamwriter.WriteLine(H: + H.ToString() + m); mystreamwriter.WriteLine(rn);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1