单像空间后方交会共17页文档

合集下载

第五讲 单片空间后方交会

第五讲 单片空间后方交会

x12 − f (1 + 2 ) f xy − 1 1 f
2 x2 − f (1 + 2 ) f

x1 y1 f
y12 − f (1 + 2 ) f − x2 y2 f
x y − 2 2 f
2 x3 − f (1 + 2 ) f
2 y2 − f (1 + 2 ) f

x3 y3 f
xy − 3 3 f
Y B
A
C X
利用航摄像片上三个以上像点坐标和对应像 点坐标和对应地面点坐标,计算像片外方位元 素的工作,称为单张像片的空间后方交会。 进行空间后方交会运算,常用的一个基本公 式是前面提到的共线方程。式中的未知数,是 六个外方位元素。由于一个已知点可列出两个 方程式,如有三个不在一条直线上的已知点, 就可列出六个独立的方程式,解求六个外方位 元素。由于共线条件方程的严密关系式是非线 性函数,不便于计算机迭代计算。为此,要由 严密公式推导出一次项近似公式,即变为线性 函数。
(5) 用所取未知数的初始值和控制点的地面坐标,代入共线方程式,逐 ) 用所取未知数的初始值和控制点的地面坐标,代入共线方程式, 点计算像点坐标的近似值 ( x), ( y ) 并计算 lx , l y a ( X − X S ) + b1 (Y − YS ) + c1 ( Z − Z S ) x=−f 1 a3 ( X − X S ) + b3 (Y − YS ) + c3 ( Z − Z S ) a ( X − X S ) + b2 (Y − YS ) + c2 ( Z − Z S ) y=−f 2 a3 ( X − X S ) + b3 (Y − YS ) + c3 ( Z − Z S ) (6) 组成误差方程式。 ) 组成误差方程式。 7) 计算法方程式的系数矩阵与常数项,组成法方程式。 (7) 计算法方程式的系数矩阵与常数项,组成法方程式。 (8) 解算法方程,迭代求得未知数的改正数。 ) 解算法方程,迭代求得未知数的改正数。

单像空间后方交会

单像空间后方交会
坐标轴与像平面坐标轴平行。
像空间辅助坐标系(u,v,w)
坐标原点位于S,但坐标轴不一定与像平 面坐标轴平行,按需要定义。
像空坐标系与像空辅助坐标系之关系
物方坐标系
地面测量坐标系(Xt,Yt,Zt)
义。
地面摄影测量坐标系(X,Y,Z,)
原点位于地面某一已知点,坐标轴按需要定
地面测量坐标系与摄影测量坐标系之关系
确定像片相对S 的位置。 --焦距 --像主点 在像平面坐标系中 的坐标 例
外方位元素
1、确定S在物方空 间坐标系中位置的元 素(直线元素)。 Xs,Ys,Zs 例 Xs=1140.2m Ys=2003.5m Zs=1035.7m
பைடு நூலகம்2、确定像片在
物方空间坐标系中 位置的元素(角 元素)。 1) 角元素
像方坐标系与物方 坐标系之关系
共线方程线性化:
前式具体化:
即有
'
2
'
2
(5-9a)具体化:
写成

综合上述推导,有共线方程的线性形式:
式中
二.解算中的具体公式
利用(a)式解求外方位元素时,有6个未知数,须用像 片及地面3个点的3对已知的(X,Y,Z)、(x,y)组6个 方程.实用中为提高精度常取多余点多余观测,为此要按 最小二乘平差计算.则平差算式如下:
分)
单像空间后方交会(第五章部
根据单张航测像片上一定数量的已 知点(像片坐标和地面坐标已知),计算该 像片的外方位元素(摄影中心S的坐标 Xs,Ys,Zs,像片的角元素 ).
知道外方位 元素,可用来恢 复像片在摄影时 的空间位置,重 建像片与被摄地 面之间的相互关 系
内方位元素
( X1 , Y1 , Z1 )

单像空间后方交会

单像空间后方交会

Xs0,Ys0,Zs0, 0,ω0,κ0为未知数的初始近似

(x),(y)为未知数的近似值代入共线条件方程
求出的像点坐标值
第五章 影像解析基础 3、单像空间后方交会误差方程与法方程
根据间接平差的误差方程形式,按泰勒公式展开后 的误差方程为: vx(x )
y y y y y y vy y) -y △ Xs △Ys △Zs △f △w △k ( Xs Ys Zs f w k -x x x x x x x △Ys △f △w △k △ Xs △Zs Xs Ys Zs f w k
X ,Y , Z
x f f y
X Z Y Z
关键推求 X , Y , Z 对角元素的偏导数
X X XS T R T T Y Rk Rw Y YS Z Z ZS
T
X T Rw Rk Rw Rk Y w Z
T
0 0 sin k
0 0 cosk
sin k X cosk Y 0 Z
第五章 影像解析基础
X X XS T Rk T T Rw R Y YS Y k k Z Z Z S X X XS T Rk Rk T T T ( Rk Rk ) Rw R Y YS Rk Y k Z Z Z k S Y X 0
A •计算: T PA •计算: T PL A A •答解法方程: T PAX APL •计算外方位元素的改正数:
dX S , dYS , dZS , d , dw , dk

摄影测量学教案(第10讲后方交会).doc

摄影测量学教案(第10讲后方交会).doc
(9) 式中, k 迭代次数。这是因为所用线性化共线条件方程是近似的,故需 要有一个迭代过程,知道像片外方位元素的改正数都小于规定的限差为止。 2、计算过程 利用空间后方交会求解外方位元素的基本过程如下: (一)读入原始数据 原始数据包括像点的观测坐标、像片的内方位元素、控制点在地辅系中 的坐标。 (二)确定外方位元素的初值 1、确定摄站坐标的初值 取控制点平面坐标的平均值作为摄站平面位置的初值,即:
三、概述
1、 单像空间后方交会 利用地面控制点及其在像片上的像点,确定一张像片外方位元素的方法。 2、单像空间后方交会的基本方法 a. 角锥体法
S
c a b
角锥体法介绍大 体思路
b. 利用共线条件方程解算像片的外方位元素
x f y f
a1 ( X X S ) b1 ( Y YS ) c1 ( Z Z S ) a3 ( X X S ) b3 ( Y YS ) c3 ( Z Z S ) a2 ( X X S ) b2 ( Y YS ) c2 ( Z Z S ) a3 ( X X S ) b3 ( Y YS ) c3 ( Z Z S )
a1 ( X X S ) b1 ( Y YS ) c1 ( Z Z S ) a3 ( X X S ) b3 ( Y YS ) c3 ( Z Z S ) a2 ( X X S ) b2 ( Y YS ) c2 ( Z Z S ) a3 ( X X S ) b3 ( Y YS ) c3 ( Z Z S )
lx x x计
ly y y计
(7)
而 Z 和 x计 , y 计 分别按如下方法计算:
X a1 Y b1 c1 Z

五上、数字摄影测量学单片空间后方交会

五上、数字摄影测量学单片空间后方交会

总误差方程
法方程
V Ax L
x (AT A) 1 (AT L)
X s Ys V1 A1 l1 Z V2 A2 l2 s V , A , L , x , Vn An ln T T li xi ( xi ) yi ( yi ) , Vi v xi v yi a11 a12 a13 a14 a15 a16 Ai a21 a22 a23 a24 a25 a26
已知点必须多余点, 数据处理方法采用 最小二乘法!
这是所有测量的一个统一的基本原则! 摄影测量也不例外。
二、误差方程与法方程



已知值 x0 , y0 , f ,m, X, Y, Z 观测值 x , y 相应改正数 vx,vy 未知数 Xs, Ys, Zs, , , 泰勒级数展开
四、空间后方交会的精度
求解各未知数的精度可以通过法方程系数矩阵 求逆的方法,解出相应的权倒数 Qii
mi m0 Qii 按下式计算第i未知数的中误差:
式中,m0为单位权中误差,计算公式 为: m [VV ] 0 2n 6 ,其中n为控制点的点数。
空间后方交会用到的已知点越多,空间后方交会 的精度越高,此外空点的分布也空间后方交会计算 的精度。空间后方交会使用的控制点应当避免位于 一个圆柱面上,否则,会出现解不唯一的情况。
偏导数 1
x f X Z 2 ( Z X) X s Z X s X s f 2 ( a1Z a3 X ) Z 1 X (a1 f f a3 ) Z Z 1 (a1 f a3 x) Z
偏导数 2
x f X Z 2 ( Z X) Z

单像空间后方交会

单像空间后方交会

(x)、(y)——函数x、y在展开点(未知数近 似值处)的近似值; ——外方位元素(未知数)的改正数。 dX s ......, dκ
返回目录
第三章 单张航摄像片解析
§3-7 单像空间后方交会
• • • • • 每次迭代计算过程中,给定未知数(即外 方位元 素)的近似值后,即可计算得到展开式中未知数的 dX s ......, dκ 偏导系数值,从而组成线性方程组解算 。 偏导系数表达示例: X x = − f Z 设
V = ∂y dX + ∂y dY + ∂y dZ + ∂y dφ + ∂y dω + ∂y dκ −[ y − ( y)] •y s s s ∂Xs ∂Ys ∂Zs ∂φ ∂ω ∂κ
返回目录
第三章 单张航摄像片解析
§3-7 单像空间后方交会
• 也可写成(设有n个控制点) + d dφ + e dω + f dκ −l Vx1 = a11dXs + b11dYs + c11dZs 11 11§3-7 单像空间后方交会
• 一、空间后方交会的基本公式 空间后方交会的基本公式 后方交会
x = − f y = − f a1 ( X − X s ) + b (Y − Ys ) + c1 (Z − ZS ) 1 a3 ( X − X s ) + b3 (Y − Ys ) + c3 (Z − Zs ) a2 ( X − X s ) + b2 (Y − Ys ) + c2 (Z − Zs ) a3 ( X − X s ) + b3 (Y − Ys ) + c3 (Z − Zs )
y = − f Y Z

单像空间后方交会原理

单像空间后方交会原理

单像空间后方交会原理你知道单像空间后方交会吗?这可是摄影测量里一个超有趣的概念呢!咱们先来说说啥是单像空间后方交会。

想象一下,你拿着相机拍了一张照片,这张照片里有好多好多的景物。

那单像空间后方交会呢,就是通过这一张照片里的信息,去算出拍摄这张照片的时候,相机在空间里的位置和姿态。

比如说,照片里有一座山,还有一条河,还有几棵大树。

那咱们怎么通过这些东西来知道相机当时在哪,朝哪个方向呢?这就用到单像空间后方交会啦!这当中有几个关键的东西哦。

一个是控制点,就好像是我们的“小帮手”。

这些控制点是我们事先知道它们在空间里准确位置的点。

比如说,有个特别明显的大石头,我们知道它在地球上的坐标是多少。

然后呢,还有像片的内方位元素。

这就像是相机的“小秘密”,比如说相机的焦距啦等等。

那怎么通过这些来算出相机的位置和姿态呢?这就像是一个解谜的过程!咱们得先把照片上控制点的像点坐标找出来,这就像是在照片里给这些控制点“定位”。

然后呢,根据一些数学公式和算法,把这些坐标啊、内方位元素啊、控制点的空间坐标啊等等都放到一起,就像是把一堆拼图的碎片拼起来。

这个过程可不容易哦,得算好多好多的数学式子。

但是别担心,咱们聪明的科学家们早就想出了办法,有各种软件和工具能帮咱们完成这些复杂的计算。

你可能会想,这有啥用啊?用处可大啦!比如说,我们要做地图,要对一个地方进行测量,单像空间后方交会就能帮我们得到相机的位置和姿态,这样就能更准确地知道照片里的东西在实际空间里的位置啦。

而且哦,现在科技越来越发达,单像空间后方交会的精度也越来越高。

这就像是我们的眼睛越来越厉害,能看得更清楚,更准确!想象一下,如果没有单像空间后方交会,那我们看到的照片就只是一张好看的图片,没办法知道那么多背后的信息。

但是有了它,一张照片就像是一个装满了秘密的宝盒,我们可以一点点地解开,发现更多有趣的东西。

怎么样,是不是觉得单像空间后方交会很神奇很有趣呀?希望我讲得能让你明白这个有点复杂但又超级酷的原理!。

(完整word版)单像空间后方交会程序报告

(完整word版)单像空间后方交会程序报告

单像空间后方交会程序报告指导老师:刘老师班级:测绘 101姓名:尚锋学号:19号1、应用程序的主进口部分的代码:using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;namespace 单像空间后方交会{static class Program{///<summary>///应用程序的主进口点。

///</summary>[ STAThread]static void Main(){Application .EnableVisualStyles();Application .SetCompatibleTextRenderingDefault( false );Application .Run( new Form1());}}}2、方法解算类(通用)部分的代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 单像空间后方交会{class Tongyong{struct image_point // 一个像点结构,包括像点坐标和地面点坐标{public double x;public double y;public double X;public double Y;public double Z; }private private private private private private private private private private private private private publicdouble f;// 主距double u;//u 为外方向元素,下边 5个同样double w;double k;double Xs;double Ys;double Zs;image_point [] p = new image_point [4];// 四个控制点double [] R = new double [9]; // 旋转矩阵double [] a = new double [8];// 像点坐标近似值double [,] A =new double [8, 6];// 偏差方程式系数double [] L = new double [8];// 偏差方程式常数项int count = 0;// 统计代次数Tongyong( double g, double [] q)// 结构函数,初始化各变量 , 单位 m{f = g;for ( int i = 0; i < 4; i++){int j = i * 5;p[i].x = q[j];p[i].y = q[j + 1];p[i].X = q[j + 2];p[i].Y = q[j + 3];p[i].Z = q[j + 4];}double ave = 0, sum = 0;for ( int i = 0; i < 3; i++)// 求比率尺分母{for ( int j = i + 1; j < 4; j++){sum += Math.Pow(p[i].Y - p[j].Y, 2)) / + Math.Pow(p[i].y - p[j].y, 2));} Math.Sqrt(Math.Pow(p[i].X - p[j].X, 2) + Math.Sqrt( Math.Pow(p[i].x - p[j].x, 2)}ave = sum / 6;u = 0;// 给定外方向元素的初始值w = 0;k = 0;Xs = (p[0].X + p[1].X + p[2].X + p[3].X) / 4; , 角度均设置为0//Xs 为四个控制点 X的均匀值,Ys近似Ys = (p[0].Y + p[1].Y + p[2].Y + p[3].Y) / 4;Zs = (p[0].Z + p[1].Z + p[2].Z + p[3].Z) / 4 + ave * f;}private double sin( double m) // 正弦,为简化而写 , 下同{return Math.Sin(m);}private double cos( double m){return Math.Cos(m);}private void calcos()// 计算旋转矩阵{R[0] = cos(u) * cos(k) - sin(u) * sin(w) * sin(k);R[1] = -cos(u) * sin(k) - sin(u) * sin(w) * cos(k);R[2] = -sin(u) * cos(w);R[3] = cos(w) * sin(k);R[4] = cos(w) * cos(k);R[5] = -sin(w);R[6] = sin(u) * cos(k) + cos(u) * sin(w) * sin(k);R[7] = cos(u) * sin(w) * cos(k) - sin(u) * sin(k);R[8] = cos(u) * cos(w);}private void calabout() // 像点坐标的近似值{int i;for (i = 0; i < 4; i++){a[2 * i] = -f * (R[0] * (p[i].X - Xs) + R[3] * (p[i].Y-Ys) + R[6] * (p[i].Z - Zs)) / (R[2] * (p[i].X - Xs) + R[5] * (p[i].Y-Ys) + R[8] * (p[i].Z - Zs));a[2* i + 1] = -f * (R[1] * (p[i].X - Xs) + R[4] * (p[i].Y -Ys) + R[7] * (p[i].Z - Zs)) / (R[2] * (p[i].X - Xs) + R[5] * (p[i].Y-Ys) + R[8] * (p[i].Z - Zs));}}private void calxx() // 偏差方程式的系数和常数项{int for i;(i = 0; i < 4; i++) // 系数{double z = R[2] * (p[i].X - Xs) + R[5] * (p[i].Y - Ys) + R[8] * (p[i].Z - Zs);int n = i * 2;A[n, 0] = (R[0] * f + R[2] * p[i].x) / z;A[n, 1] = (R[3] * f + R[5] * p[i].x) / z;A[n, 2] = (R[6] * f + R[8] * p[i].x) / z;A[n, 3] = p[i].y * sin(w) - f * cos(w) * cos(k) - p[i].x/f * (p[i].x * cos(w) * cos(k) - p[i].y * cos(w) * sin(k)); A[n,4] = -f * sin(k) - p[i].x / f * (p[i].x * sin(k) +p[i].y * cos(k));A[n, 5] = p[i].y;A[n + 1, 0] = (R[1] * f + R[2] * p[i].y) / z;A[n + 1, 1] = (R[4] * f + R[5] * p[i].y) / z;A[n + 1, 2] = (R[7] * f + R[8] * p[i].y) / z;A[n + 1, 3] = -p[i].x * sin(w) + f * cos(w) * sin(k) -p[i].x / f * (p[i].x * cos(w) * cos(k) - p[i].y * sin(k) * cos(w));A[n + 1, 4] = -f * cos(k) - p[i].y / f * (p[i].x * sin(k) + p[i].y * cos(k));A[n + 1, 5] = -p[i].x;}for (i = 0; i < 4; i++)// 常数项{L[2 * i] = p[i].x - a[2 * i];L[2 * i + 1] = p[i].y - a[2 * i + 1];}}private double calAdd(){double [,] temp =new double [6, 6];//A 的转置与 A相乘的积double [,] ANew = new double [6, 8];//A 的转置double [] t =new double [6];//A 的转置与 L相乘的积double [] X = new double [6];// 更正数int i, j, n;for (i = 0; i < 8; i++)// 求A的转置 ANew{for (j = 0; j < 6; j++){ANew[j, i] = A[i, j];}}for (i = 0; i < 6; i++)// 求A的转置与 A相乘的积 temp {for (j = 0; j < 6; j++){temp[i, j] = 0;for (n = 0; n < 8; n++){temp[i, j] += ANew[i, n] * A[n, j];}}}MATINV(temp);//temp for (i = 0; i < 6; i++) 的逆,保留在自己矩阵中// 求A的转置与 L的乘积 t{t[i] = 0;for (j = 0; j < 8; j++){t[i] += ANew[i, j] * L[j];}}for (i = 0; i < 6; i++)// 求更正数 X{X[i] = 0;for (j = 0; j < 6; j++){X[i] += temp[i, j] * t[j];}}Xs += X[0];// 外方向元素初始值加上更正数Ys += X[1];Zs += X[2];u += X[3];w += X[4];k += X[5];return maxone(X);// 返回判断条件 , 最大的更正数的值}public void makeSure() // 计算流程控制函数{calcos();calabout();calxx();double VALUE = calAdd();count++;while (VALUE > 0.00001)// 迭代至最大更正数为止{calcos();calabout();calxx();VALUE = calAdd();count++;}}private void MATINV(double [,] c) // 求6阶矩阵的逆{int i, j, h, m;const int n = 6;double l;double [,] q = new double [n, 12];for (i = 0; i < n; i++) // 结构高斯矩阵{for (j = 0; j < n; j++){q[i, j] = c[i, j];}}for (i = 0; i < n; i++) // 单位矩阵{{for (j = n; j < 12; j++)if (i + 6 == j)q[i, j] = 1;elseq[i, j] = 0;}}for (h = 0, m = 0; m < n - 1; m++, h++)// 消去对角线以下的数据{for (i = m + 1; i < n; i++){if(q[i, h] == 0d)continue ;l = q[m, h] / q[i, h];for (j = 0; j < 12; j++){q[i, j] *= l;q[i, j] -= q[m, j];}}}for (h = n - 1, m = n - 1; m > 0; m--, h--)//消去对角线以上的数据{for (i = m - 1; i >= 0; i--){if(q[i, h] == 0d)continue ;l = q[m, h] / q[i, h];for (j = 0; j < 12; j++){q[i, j] *= l;q[i, j] -= q[m, j];}}}for (i = 0; i < n; i++)// 将对角线上数据化为 1{l = 1.0 / q[i, i];for (j = 0; j < 12; j++){q[i, j] *= l;}}for (i = 0; i < n; i++)// 提取逆矩阵{for (j = 0; j < n; j++){c[i, j] = q[i, j + 6];}}}private double maxone(double [] Arr)// 返回六个元素中的最大值{double [] ARR =new double [6];for ( int i = 0; i < 6; i++){ARR[i] = Arr[i];if (ARR[i] < 0d)// 取正ARR[i] = -ARR[i];}Array .Sort(ARR, 0, 6);return ARR[5];}public int COUNT{get{return count;}}public double U {get{return u;}}public double W {get{return w;}}public double K {get{return k;}}public double XS {get{return Xs;}}public double YS {get{return Ys;}}public double ZS {get{return Zs;}}}3、窗体一部分的代码: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.Diagnostics;using System.Data.OleDb;using System.IO;namespace 单像空间后方交会{public partial class Form1 : Form {private private double [] data= double f = 0;new double [20];// 主距// 保留表中的数据public Form1(){InitializeComponent();}private void Form1_Load( object sender, EventArgs e) {//TODO: 这行代码将数据加载到表“ database1DataSet1.data ”中。

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