近景单张像片空间后方交会

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

实验一近景单张像片空间后方交会

一、实验目的

通过单张像片空间后方交会算法编程,掌握空间后方交会的基本原理和基本步骤,为近景摄影测量解析处理方法打下理论基础。

二、实验内容

利用C++编程平台,通过给定的单片像点的像点坐标、内方位元素和控制点物方空间坐标,计算出像片的外方位元素。

三、实验步骤:

1、编程流程图:

2、编程代码:

#include "iostream"

#include"stdio.h"

#include "stdlib.h"

#include

#define N 10

using namespace std;

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

for(j=0;j

{

result[i*j_2+j]=0.0;

for(k=0;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

max_v=0.0;

for(i=k;i

for(j=k;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

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

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

if(j!=k){

u=k*n+j;

m1[u]*=m1[l];

}

for(i=0;i

if(i!=k)

for(j=0;j

if(j!=k){

u=i*n+j;

m1[u]-=m1[i*n+k]*m1[k*n+j];

}

for(i=0;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

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

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

for(j=0;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];

相关文档
最新文档