摄影测量编程

发布 2022-09-06 03:48:28 阅读 3572

#include

#include

#include

#include

#include

using namespace std;

template void input (t*mat,int a,int b)

ifstream infile;

e:")while(!

for (int i=0;ifor(int j=0;jinfile>>mat[i][j];

return;

templatevoid output(t*mat,char*s,int a,int b)

cout

return;

/矩阵的乘法。

void mult(double *m1,double *m2,double *result,int m,int p,int n)

int i,j,k;

for(i=0;ifor(j=0;j;

while(b2==1)

cout<<"请输入你要进行操作的选项:"

if(num==1)

cout<<"各项参数为: "m;

cout<<"像主点坐标(x,y)为:";

cin>>x0>>y0;

cout<<"相片主距 f为: "

cin>>f;

input (b,6,5); 从文件中读入坐标,存入数组b[4][5]

if(num==2)

exit(-1);

for(i=0;i<6;ixs=xs+b[i][2];

ys=ys+b[i][3];

zs=zs+b[i][4];

xs=xs/4;

ys=ys/4;

zs=zs/4+m*f; /循环改正。

xs1=xs2=xs;

ys1=ys2=ys;

zs1=zs2=zs;

q1=q2=q=0.0;

w1=w2=w=0.0;

k1=k2=k=0.0;

while(x[6][0]>=6.0/206265.0||x[7][0]>=6.

0/206265.0||x[8][0]>=6.0/206265.

0||x[12][0]>=6.0/206265.0||x[13][0]>=6.

0/206265.0||x[14][0]>=6.0/206265.

0判断精度六秒a1=r[0][0]=cos(q)*cos(k)-sin(q)*sin(w)*sin(k);

a2=r[0][1]=-cos(q)*sin(k)-sin(q)*sin(w)*cos(k);

a3=r[0][2]=-sin(q)*cos(w);

b1=r[1][0]=cos(w)*sin(k);

b2=r[1][1]=cos(w)*cos(k);

b3=r[1][2]=-sin(w);

c1=r[2][0]=sin(q)*cos(k+cos(q)*sin(w)*sin(k));

c2=r[2][1]=-sin(q)*sin(k)+cos(q)*sin(w)*cos(k);

c3=r[2][2]=cos(q)*cos(w);

for(int i=0,k=0,j=0;i<6;i++,k++,j++)

x01=r[0][0]*(b[i][2]-xs1)+r[1][0]*(b[i][3]-ys1)+r[2][0]*(b[i][4]-zs1);

y01=r[0][1]*(b[i][2]-xs1)+r[1][1]*(b[i][3]-ys1)+r[2][1]*(b[i][4]-zs1);

z01=r[0][2]*(b[i][2]-xs1)+r[1][2]*(b[i][3]-ys1)+r[2][2]*(b[i][4]-zs1);

l[j][0]=b[i][0]-(x0-f*x01/z01);

l[j+1][0]=b[i][1]-(y0-f*y01/z01);

x02=r[0][0]*(b[i][2]-xs2)+r[1][0]*(b[i][3]-ys2)+r[2][0]*(b[i][4]-zs2);

y02=r[0][1]*(b[i][2]-xs2)+r[1][1]*(b[i][3]-ys2)+r[2][1]*(b[i][4]-zs2);

z02=r[0][2]*(b[i][2]-xs2)+r[1][2]*(b[i][3]-ys2)+r[2][2]*(b[i][4]-zs2);

l[j+2][0]=b[i][0]-(x0-f*x02/z02);

l[j+3][0]=b[i][1]-(y0-f*y02/z02);

j++;for(i=0;i<6;i++)

if(i%2==0)

a[k][0]=1; a[k][1]=0;

a[k+1][0]=1;a[k+1][1]=0;

a[k+2][0]=1;a[k+2][1]=0;

a[k+3][0]=1;a[k+3][1]=0;

elsea[k][0]=0; a[k][1]=1;

a[k+1][0]=0;a[k+1][1]=1;

a[k+2][0]=0;a[k+2][1]=1;

a[k+3][0]=0;a[k+3][1]=1;

a[k][2]=-x01/z01;

a[k][3]=(r[0][0]*f+r[0][2]*(b[i][0]-x0))/z01;

a[k][4]=(r[1][0]*f+r[1][2]*(b[i][0]-x0))/z01;

a[k][5]=(r[2][0]*f+r[2][2]*(b[i][0]-x0))/z01;

a[k][6]=(b[i][1]-y0)*sin(w1)-(b[i][0]-x0)*(b[i][0]-x0)*cos(k1)-(b[i][1]-y0)*sin(k1))/f+f*cos(k1))*cos(w1);

a[k][7]=-f*sin(k1)-(b[i][0]-x0)*(b[i][0]-x0)*sin(k1)+(b[i][1]-y0)*cos(k1))/f;

a[k][8]=b[i][1]-y0;

a[k][9]=a[k][10]=a[k][11]=a[k][12]=a[k][13]=a[k][14]=0.0;

a[k+1][2]=-y01/z01;

a[k+1][3]=(r[0][1]*f+r[0][2]*(b[i][1]-y0))/z01;

a[k+1][4]=(r[1][1]*f+r[1][2]*(b[i][1]-y0))/z01;

a[k+1][5]=(r[2][1]*f+r[2][2]*(b[i][1]-y0))/z01;

a[k+1][6]=-b[i][0]-x0)*sin(w1)-(b[i][1]-y0)*(b[i][0]-x0)*cos(k

k1)-(b[i][1]-y0)*sin(k1))/f-f*sin(k1))*cos(w1);

a[k+1][7]=-f*cos(k1)-(b[i][1]-y0)*(b[i][0]-x0)*sin(k1)+(b[i][1]-y0)*cos(k1))/f;

a[k+1][8]=-b[i][0]-x0);

a[k+1][9]=a[k+1][10]=a[k+1][11]=a[k+1][12]=a[k+1][13]=a[k+1][14]=0.0;

a[k+2][2]=-x02/z02;

a[k+2][3]=a[k+2][4]=a[k+2][5]=a[k+2][6]=a[k+2][7]=a[k+2][8]=0.0;

a[k+2][3]=(r[0][0]*f+r[0][2]*(b[i][0]-x0))/z02;

a[k+2][4]=(r[1][0]*f+r[1][2]*(b[i][0]-x0))/z02;

a[k+2][5]=(r[2][0]*f+r[2][2]*(b[i][0]-x0))/z02;

a[k+2][6]=(b[i][1]-y0)*sin(w2)-(b[i][0]-x0)*(b[i][0]-x0)*cos(k2)-(b[i][1]-y0)*sin(k2))/f+f*cos(k2))*cos(w2);

a[k+2][7]=-f*sin(k2)-(b[i][0]-x0)*(b[i][0]-x0)*sin(k2)+(b[i][1]-y0)*cos(k2))/f;

a[k+2][8]=b[i][1]-y0;

a[k+3][2]=-y02/z02;

a[k+3][3]=a[k+3][4]=a[k+3][5]=a[k+3][6]=a[k+3][7]=a[k+3][8]=0.0;

a[k+3][9]=(r[0][1]*f+r[0][2]*(b[i][1]-y0))/z02;

a[k+3][10]=(r[1][1]*f+r[1][2]*(b[i][1]-y0))/z02;

a[k+3][11]=(r[2][1]*f+r[2][2]*(b[i][1]-y0))/z02;

a[k+3][12]=-b[i][0]-x0)*sin(w2)-(b[i][1]-y0)*(b[i][0]-x0)*cos(k2)-(b[i][1]-y0)*sin(k2))/f-f*sin(k2))*cos(w2);

a[k+3][13]=-f*cos(k2)-(b[i][1]-y0)*(b[i][0]-x0)*sin(k2)+(b[i][1]-y0)*cos(k2))/f;

a[k+3][14]=-b[i][0]-x0);

k转置运算。

for(int i=0;i<24;i++)

for(int j=0;j<15;j++)

at[j][i]=a[i][jmult(*at,*a,*ai,15,24,15);

if(invers_matrix(*ai,15)==null)

exit(-1);

mult(*ai,*at, *ait,15,15,24);

mult( *ait, *l, *x,15,24,1);

mult(*a,*x,*v,8,6,1);

x0+=x[0][0];

y0+=x[1][0];

f+=x[2][0];

xs1+=x[3][0];

ys1+=x[4][0];

zs1+=x[5][0];

q1+=x[6][0];

w1+=x[7][0];

k1+=x[8][0];

xs2+=x[9][0];

ys2+=x[10][0];

zs2+=x[11][0];

q2+=x[12][0];

w2+=x[13][0];

k2+=x[14][0];

c++;记录迭带的次数。

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

v[i][0]-=l[i][0];

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

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

b[i][j]+=v[k][0];

kfor(i=0;i<24;i++)

v+=(v[i][0]*v[i][0]);

m=sqrt(v/(2*4-6));未知数中误差。

cout《单片空间后方交会结果<;

cout<<"左片:xs1= "b2;

cout《谢谢使用<

摄影测量与遥感测量

摄影测量与遥感测量 课程标准。课程名称 摄影测量与遥感。适用专业 工程测量 矿山测量。总学时数 96 理论课学时数 68 实践课学时数 28 一 课程的性质。摄影测量 是一门高职工程测量 矿山测量专业基础课程,也是一门专业必修课。二 课程定位。该课程以摄影测量的基本理论为基础,以像片影响信息获取到解...

数字摄影测量

未通过课程查询。未通过课程成绩?课程号课程名称课序号总评学分学分绩点备注考试性质选课属性学年学期 建筑制图320.03.00.0正常正常考试必修2009春110101288 高等数学 下 814.05.50.0正常正常考试必修2009春110114164 大学物理 上 842.04.00.0正常正常...

摄影测量重点

摄影测量是影像信息获取 处理 析取和成果表达的一门信息科学。摄影测量按技术方法经历了模拟 解析,数字摄影测量。摄影测量对空中摄影的基本要求为摄影质量和飞行质量。摄影质量的要求 航空相片的质量主要指影像的构想质量,几何质量和表观质量。具体表现在底片的影像密度 不均匀变形 压平质量以及航摄机内方位元素检...