摄影测量实习报告

摄影测量实习报告

                

内外业实习

一.实习的目标

外业实习包括像片控制点的布测和相片的调绘两部分,内业实习有基于数字摄影测量系统生产数字产品和自动空中三角测量。实习的目标就是要让每位同学熟练掌握摄影测量外业的基本技能和内业处理的方法。包括掌握像控点布设的基本原理;熟悉室内选点和野外验证的一般要求;了解像控点测量的方法掌握航空像片调绘的基本原理和方法;掌握航空像片判读中判读标志的建立方法;掌握航空像片调绘的步骤。基于Map Matrix数字摄影测量系统生产数字测绘产品实习的目的是深入掌握摄影测量学的基础理论以及全数字摄影测图过程。包括掌握Map Matrix数字摄影测量系统的主要模块的功能、数字高程模型(DEM)、数字正射影像(DOM)、和数字线画地图(DLG)的制作工艺与流程。

二.实习的具体安排

        这次实习共有5天,前三天为外业实习,后两天为内业实习。其中像控点布测一天,像片调绘两天,数字线划图生产一天半,自动空中三角测量内业处理半天。自动空中三角测量内业处理主要是由老师演示,了解就可。像控点布测和相片调绘由小组根据的组的像片在野外共同完成,数字线划图个人在实验独自是完成。

三.所做的工作概况

1.每组布设一定数量合理分布得像控点(一般为4个),完成选点工作和测量工作;

2.每组完成一定区域的外业调绘,根据像片内容认真判读,完成像片勾绘工作;

3. 进行全数字摄影测量生产作业,每人完成1个像对的定向、数字产品生产工作;

4. 根据指导教师安排,按组进行自动空中三角测量内业处理;

四.实习过程

分为外业实习过程和内业实习过程

外业实习过程:

像片控制点的布测

(1)  室内布点

根据室内布点原则,在像片的重叠区,布置四个像控点。并对其进行编号。在室外选择像控点应十分注意避免尴尬位置,所谓尴尬位置就是高差很大的位置如房顶、塘梗等地,因其侧面在照片上很有可能与平面混淆,造成内业困难;此外野外选点应在像片重叠区内选择影像清晰的点。

(2)   像控点的施测

根据室内布点方案,在实地上找到像控点的位置,根据影像的特点和形状绘制草图,草图绘制完成后应由另一人现场校核,刺点后,做好点之记。对于施测未进行。但是可用此方法:根据野外控制点布点位置,在googleearth中找出控制点的经纬度,用软件release将经纬度转换为大地坐标,结果如图示。

e1 3395280.252000000 18417120.070000000 500.000000000

e2 3395860.166000000 18417123.739000000 500.000000000

e3 3395374.631000000 18417744.795000002 500.000000000

e4 3395793.340000000 18417563.785999998 500.000000000

相片的调绘:

(1)     准备工作

包括工具准备和资料准备。准备的工具包括放大镜、透明纸和绘图工具等。

(2)     室内判读与描图

在室内首先应建立航片判读的标志,即根据已经对研究区域的了解,识别像片上目标的位置、形状、大小及其性质,依据主要是独立地物、居民地、道路、水系和植被等判读的内容,进行判读标志的建立,建立判读标志的基础上,利在用目视和放大镜镜进行室内判读。在室内判读时,将透明纸固定在像片上,按照室内判读结果,判读地物类型,勾绘地物边界,形成调查底图(注意标注室内判读难点和疑点),并拟定野外核查的路线

(3)     野外核查

对比实地,核查室内判读正误,尤其注意室内判读中难点和疑点的实地核对

(4)     室内清图和整理

在室内按照制图规范(字体、大小、线型、图例等),完成调查底图的绘工作,整理野外调查资料和图件等工作。

成果见本组上交成果资料。

内业实习过程:

(1)     数据准备

准备好一个像对,根据大地坐标采用记事本按格式编写控制点文件。

(2)     打开全数字摄影测量软件MapMatrix,进行数据生产

1.新建工程,添加控制点参数文件,并在测区参数中,确定工程中测区类型是非量测相机;

2.在影像节点点击右健,添加影像(确保左右片关系正确);

3.创建立体相对,在立体像对节点,点击右键,进行影像相对定向,进入相对定向界面后,点击全自动相对定向功能,进行全自动相对定向;

4.在相对定向界面下,人工添加控制点

5.控制点添加完毕后(一般一个像对4个像控点),定义核线范围,进行绝对定向;

由于软件原因,绝对定向反复失败。核线影像重采样,核线影像匹配,新建DEM,生成后,新建DOM,并生成等步骤都没有进行。

6.生成质量报告

影像 ID:2班1

影像路径:E:\200901060218\2班1.jpg

内定向参数

投影中心:708.275146  392.125000

旋转矩阵:0.098668  0.002433  -0.000156  0.100128

逆矩阵:10.134580  -0.246259  0.015815  9.986880

_____内定向误差_____

  ID           DX           DY

   0     3.637682    -0.346657

   1    -3.637682     0.346657

   2     3.637682    -0.346657

   3    -3.637682     0.346657

RMS:    X=3.637682   Y=0.346657   XY=3.654162

RMS too large!,should be less than 1 pixel.

绝对定向参数

线元素:0.000000  0.000000  0.000000

角元素:0.000000  0.000000  0.000000

_____绝对定向误差_____

-------------------------------------

影像 ID:2班2

影像路径:E:\200901060218\2班2.jpg

内定向参数

投影中心:719.562500  391.187500

旋转矩阵:0.099941  0.000016  0.000026  0.099920

逆矩阵:10.005919  -0.001599  -0.002608  10.008009

_____内定向误差_____

  ID           DX           DY

   0     0.022051     0.066194

   1    -0.022051    -0.066194

   2     0.022051     0.066194

   3    -0.022051    -0.066194

RMS:    X=0.022051   Y=0.066194   XY=0.069771

RMS too large!,should be less than 1 pixel.

绝对定向参数

线元素:0.000000  0.000000  0.000000

角元素:0.000000  0.000000  0.000000

_____绝对定向误差_____

立体模型ID:2班1_2班2

相对定向

   POINT       LX       LY       RX       RY

       0  192.408 -122.606   23.751 -114.191

      

相对定向上下视差的中误差

RMS: 0.0042150

_____绝对定向误差_____

-------------------------------------

内定向检查,限差0.020000 (mm)

2班1 超限

   0     3.637682    -0.346657

   1    -3.637682     0.346657

   2     3.637682    -0.346657

   3    -3.637682     0.346657

RMS:    X=3.637682   Y=0.346657   XY=3.654162

2班2 超限

   0     0.022051     0.066194

   1    -0.022051    -0.066194

   2     0.022051     0.066194

   3    -0.022051    -0.066194

RMS:    X=0.022051   Y=0.066194   XY=0.069771

-------------------------------------

绝对定向检查,限差0.020000 (mm)

五 个人认识

 随着摄影测量和遥感技术的蓬勃发展,摄影测量越来越显得重要。摄影测量在实际生产中也逐步占据了重要位置。我更加认识到摄影测量学不仅要有扎实的理论基础,还要有熟练的软件操作能力。内业操作其实很简单,只要输入指令,计算机就会帮我们完成相应的操作。但是,如果没有扎实的理论基础,我们无法正确并顺利的让计算机操作我们输入的指令。当我们再次遇到同样的问题,就不会轻松的解决了。对于我们来说,如果只有理论知识,而实践操作为零,那也只是纸上谈兵。只知道操作,不懂理论知识,那也不能独立完成工作。所以,我们要好好学习理论知识,这样才能指导实践,并加强自己的动手操作能力。将来毕业了,才会是一个合格的测绘工作人员。

 时间飞逝,五天的实习就这样结束了。虽然只有五天的实习,但我也学到了很多课堂上无法学到的知识,理解了许多课堂上无法理解的知识。很珍惜这五天的实习,让我更加清晰的认识了摄影测量学这门学科,进一步熟悉并了解了相关软件的操作和使用,锻炼了我的动手能力。在这次实习过程中,我们小组团结合作,充分发挥了一个小组的潜力。对于实习中的各项工作能顺利并快速的完成。让我认识到一个人的力量的有限性,团体力量的无限性。

在这次实习中,唯一不足的是由于软件的缺陷,我们的内业生产有很多没有完成。但这可以理解。最后,我要感谢我们小组的各个成员和老师,在这次实习中对我的帮助。希望在以后的学习生活中,我们能相互帮助,共同进步。

 

第二篇:摄影测量实习报告翟智佳

摄影测量实习报告

——单张影像空间后方交会程序设计

实习时间 2013.5.20-2013.5.24

学生班级 学生姓名

学生学号所在院系 矿业工程学院

指导教师

一、实习目的

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

2.利用Visual C++或者Matlab(或其他熟悉的计算机语言)编写一个完整的单片空间后方交会程序,通过对提供的试验数据进行计算,输出像片的外方位元素并进行评定精度。

3.通过编写程序实现单张影像空间后方交会计算,掌握非线性方程线性化的过程、相应数据读入与存储的方法以及迭代计算的特点,巩固各类基础课程及计算机课程的学习内容,培养上机调试程序的动手能力,通过对实验结果的分析,增强综合运用所学知识解决专业实际问题的能力。

二、实习环境

1.硬件环境:Window操作系统

2.软件环境:VC++或Matlab或其他计算机语言

三、实习内容

利用一定数量的地面控制点,根据共线条件方程求解像片外方位元素并进行精度评定。

四、实习原理

1.共线方程

x??fa1(X?Xs)?b1(Y?Ys)?c1(Z?Zs)

a3(X?Xs)?b3(Y?Ys)?c3(Z?Zs)

a(X?Xs)?b2(Y?Ys)?c2(Z?Zs)y??f2

a3(X?Xs)?b3(Y?Ys)?c3(Z?Zs)

2.精度评定

mi?m0?ii 其中m0?? VV2n?6

五、实习数据

1.模拟像片一对:左片号23 右片号24

2.像片比例尺: 1/30000

3.航摄机主距:f=150mm

4.每张像片有4个控制点

5.点位略图

摄影测量实习报告翟智佳

摄影测量实习报告翟智佳

摄影测量实习报告翟智佳

摄影测量实习报告翟智佳

6.各片像点坐标及其地面坐标

六、验证数据

1.已知航摄仪内方位元素f=153.24mm,Xo=Yo=0。 2.已知4对点的影像坐标和地面坐标

3.解算结果

?0.997710.067530.00399??? YS?27476.46m R??-0.067530.99772-0.00221??ZS?7572.69m?-0.004120.001840.9999??0XS?39795.45m

七、程序过程框图:

摄影测量实习报告翟智佳

八.实现程序

#include "iostream.h"

#include"stdio.h"

#include "stdlib.h"

#include<math.h>

#define N 4

void mult(double *m1,double *m2,double *result,int i_1,int j_12,int j_2)//矩阵相乘

{

int i,j,k;

for(i=0;i<i_1;i++)

for(j=0;j<j_2;j++)

{

result[i*j_2+j]=0.0;

for(k=0;k<j_12;k++)

result[i*j_2+j]+=m1[i*j_12+k]*m2[j+k*j_2]; }

return;

}

int invers_matrix(double *m1,int n)//矩阵求逆

{

int *is,*js;

int i,j,k,l,u,v;

double temp,max_v;

is=(int *)malloc(n*sizeof(int));

js=(int *)malloc(n*sizeof(int));

if(is==NULL||js==NULL){

printf("out of memory!\n");

return(0);

}

for(k=0;k<n;k++){

max_v=0.0;

for(i=k;i<n;i++)

for(j=k;j<n;j++){

temp=fabs(m1[i*n+j]);

if(temp>max_v){

max_v=temp; is[k]=i; js[k]=j;

}

}

if(max_v==0.0){ free(is); free(js); printf("invers is not availble!\n"); return(0); } if(is[k]!=k) for(j=0;j<n;j++){ u=k*n+j; v=is[k]*n+j; temp=m1[u]; m1[u]=m1[v]; m1[v]=temp; } if(js[k]!=k) for(i=0;i<n;i++){ u=i*n+k; v=i*n+js[k]; temp=m1[u]; m1[u]=m1[v]; m1[v]=temp; } l=k*n+k; m1[l]=1.0/m1[l]; for(j=0;j<n;j++) if(j!=k){ u=k*n+j; m1[u]*=m1[l]; } for(i=0;i<n;i++) if(i!=k) for(j=0;j<n;j++) if(j!=k){ u=i*n+j; m1[u]-=m1[i*n+k]*m1[k*n+j]; } for(i=0;i<n;i++) if(i!=k){ u=i*n+k; m1[u]*=-m1[l]; } } for(k=n-1;k>=0;k--){ if(js[k]!=k) for(j=0;j<n;j++){ u=k*n+j; v=js[k]*n+j; temp=m1[u]; m1[u]=m1[v]; m1[v]=temp; } if(is[k]!=k) for(i=0;i<n;i++){ u=i*n+k; v=i*n+is[k];

temp=m1[u]; m1[u]=m1[v]; m1[v]=temp;

}

}

free(is); free(js);

return(1);

}

void transpose(double *m1,double *m2,int m,int n) //矩阵转置 {

int i,j;

for(i=0;i<m;i++)

for(j=0;j<n;j++)

m2[j*m+i]=m1[i*n+j];

return;

}

void main()

{

double Xs,Ys,Zs,q,w,k;

double a[3],b[3],c[3];

double x0,y0,f;

double x[N],y[N];

double X[N],Y[N],Z[N];

double x1[N],y1[N];

double m;

double L[2*N];

double XX[6];

double A[2*N][6];

double X0[N],Y0[N],Z0[N],At[6][2*N],result1[6][6],result2[6][1]; int i,n=0;

double sum=0,m0;

/*---------------输入点地面坐标---------------------*/

for(i=0;i<N;i++)

{

printf("请输入第%d个点的地面坐标:",i+1);

scanf("%lf%lf%lf",&X[i],&Y[i],&Z[i]);

}

/*---------------输入点像片坐标---------------------*/

for(i=0;i<N;i++)

{

printf("请输入第%d个点的像片坐标:",i+1);

scanf("%lf%lf",&x[i],&y[i]); } cout<<endl; /*-----------------设定外方位元素初始值--------------*/ x0=0;y0=0;f=150;m=30000; Xs=0;Ys=0;Zs=f*m/1000; q=0;w=0;k=0; XX[3]=1; /*------------------迭代计算--------------------------*/ while((XX[3]>0.00001 || XX[4]>0.00001 || XX[5]>0.00001)&&n<100) { /*----------------旋转矩阵R-----------------------*/ a[0]=cos(q)*cos(k)-sin(q)*sin(w)*sin(k); a[1]=-cos(q)*sin(k)-sin(q)*sin(w)*cos(k); a[2]=-sin(q)*cos(w); b[0]=cos(w)*sin(k); b[1]=cos(w)*cos(k); b[2]=-sin(w); c[0]=sin(q)*cos(k)+cos(q)*sin(w)*sin(k); c[1]=-sin(q)*sin(k)+cos(q)*sin(w)*cos(k); c[2]=cos(q)*cos(w); /*-----------------像点坐标计算值------------------*/ for(i=0;i<N;i++) { X0[i]=a[0]*(X[i]-Xs)+b[0]*(Y[i]-Ys)+c[0]*(Z[i]-Zs); Y0[i]=a[1]*(X[i]-Xs)+b[1]*(Y[i]-Ys)+c[1]*(Z[i]-Zs); Z0[i]=a[2]*(X[i]-Xs)+b[2]*(Y[i]-Ys)+c[2]*(Z[i]-Zs); x1[i]=x0-f*X0[i]/Z0[i]; y1[i]=y0-f*Y0[i]/Z0[i]; } /*-------------误差方程中各偏导数的值--------------*/ for(i=0;i<N;i++) { A[2*i][0]=((a[0]*f+a[2]*(x[i]-x0)))/Z0[i]; A[2*i][1]=((b[0]*f+b[2]*(x[i]-x0)))/Z0[i]; A[2*i][2]=((c[0]*f+c[2]*(x[i]-x0)))/Z0[i]; A[2*i][3]=(y[i]-y0)*sin(w)-((x[i]-x0)*((x[i]-x0)*cos(k)-y[i]*sin(k))/f+f*cos(k))

*cos(w);

A[2*i][4]=-f*sin(k)-(x[i]-x0)*((x[i]-x0)*sin(k)+(y[i]-y0)*cos(k))/f; A[2*i][5]=y[i]-y0;

L[2*i]=x[i]-x1[i];

A[1+2*i][0]=((a[1]*f+a[2]*(y[i]-y0)))/Z0[i];

A[1+2*i][1]=((b[1]*f+b[2]*(y[i]-y0)))/Z0[i];

A[1+2*i][2]=((c[1]*f+c[2]*(y[i]-y0)))/Z0[i];

A[1+2*i][3]=-(x[i]-x0)*sin(w)-((y[i]-y0)*((x[i]-x0)*cos(k)-(y[i]-y0)*sin(k))/f-f*sin(k))

*cos(w);

A[1+2*i][4]=-f*cos(k)-(y[i]-y0)*((x[i]-x0)*sin(k)+(y[i]-y0)*cos(k))/f;

A[1+2*i][5]=-x[i]+x0;

L[1+2*i]=y[i]-y1[i];

}

/*-------------------解法方程--------------------*/

transpose(&A[0][0],&At[0][0],2*N,6);

mult(&At[0][0],&A[0][0],&result1[0][0],6,2*N,6);

invers_matrix(&result1[0][0],6);

mult(&At[0][0],L,&result2[0][0],6,2*N,1);

mult(&result1[0][0],&result2[0][0],&XX[0],6,6,1);

Xs+=XX[0];

Ys+=XX[1];

Zs+=XX[2];

q+=XX[3];

w+=XX[4];

k+=XX[5];

n++;

}

/*----------------旋转矩阵R-----------------------*/

a[0]=cos(q)*cos(k)-sin(q)*sin(w)*sin(k);

a[1]=-cos(q)*sin(k)-sin(q)*sin(w)*cos(k);

a[2]=-sin(q)*cos(w);

b[0]=cos(w)*sin(k);

b[1]=cos(w)*cos(k);

b[2]=-sin(w);

c[0]=sin(q)*cos(k)+cos(q)*sin(w)*sin(k);

c[1]=-sin(q)*sin(k)+cos(q)*sin(w)*cos(k);

c[2]=cos(q)*cos(w);

cout<<"迭代次数为:"<<n<<endl;

printf("\n像片外方位元素的解\n");

} cout<<"航向顷角q:"<<q<<endl; cout<<"旁向倾角w:"<<w<<endl; cout<<"像片旋角k:"<<k<<endl; printf("Xs=%lf\t\tYs=%lf\t\tZs=%lf\n",Xs,Ys,Zs); cout<<endl; printf("旋转矩阵R:\n"); for(i=0;i<3;i++) printf("%lf\t",a[i]); printf("\n"); for(i=0;i<3;i++) printf("%lf\t",b[i]); printf("\n"); for(i=0;i<3;i++) printf("%lf\t",c[i]); printf("\n"); /*-------------------计算单位权中误差---------------*/ for(i=0;i<2*N;i++) sum+=L[i]*L[i]; m0=sqrt(sum/(2*N-6)); cout<<"单位权中误差m0="<<m0<<endl; cout<<"测量精度:"<<endl; cout<<"Xs的精度为:"<<m0*sqrt(result1[0][0])<<endl; cout<<"Ys的精度为:"<<m0*sqrt(result1[1][1])<<endl; cout<<"Zs的精度为:"<<m0*sqrt(result1[2][2])<<endl; cout<<"q的精度为:"<<m0*sqrt(result1[3][3])<<endl; cout<<"w的精度为:"<<m0*sqrt(result1[4][4])<<endl; cout<<"k的精度为:"<<m0*sqrt(result1[5][5])<<endl;

九、程序运行结果 23像片运行结果

摄影测量实习报告翟智佳

24号像片运行结果

摄影测量实习报告翟智佳

10.实习心得

通过一周的实习,让我感觉得到了自己摄影测量知识的欠缺

和编程方面的无措。不过最后在同学们的帮助下中雨完成了这次实习 而在编程里也学习了好多以前没见过的函数,mult是矩阵相乘的函数、invers_矩阵求逆函数、transpose矩阵转换函数。这对以后的学习是大有裨益的。

通过此次实习,才知道书到用时方恨少,同时下定决心好好学习,非常感谢老师给我们提供此次实习。

相关推荐