前方后方空間交會實驗報告.docx_第1頁
前方后方空間交會實驗報告.docx_第2頁
前方后方空間交會實驗報告.docx_第3頁
前方后方空間交會實驗報告.docx_第4頁
前方后方空間交會實驗報告.docx_第5頁
已閱讀5頁,還剩17頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、中南大學本科生課程設計 (實踐 )任務書、設計報告( 攝影測量與遙感概論 )題目空間后方 - 前方交會學生姓名指導教師鄒崢嶸學院地球科學與信息物理學院專業班級測繪 0902 班學生學號一、實驗目的通過對數字影像空間后交前交的程序設計實驗,要求我們進一步理解和掌握影像外方位元素的有關理論、原理和方法。利用計算機程序設計語言編寫攝影測量空間交會軟件進行快速確定影像的外方位元素及其精度,然后通過求得的外方位元素求解未知點的地面攝影測量坐標,達到通過攝影測量量測地面地理數據的目的。二、實驗要求? 用 C、VB 或者 Matlab 編寫空間后方交會 - 前方交會計算機程序。? 提交實驗報告:程序框圖,程

2、序源代碼、計算結果及體會。? 計算結果:地面點坐標、外方位元素及精度。? 完成時間: 2011 年 11 月 17 日。三、實驗數據左片右片地面攝影測量坐標點號xyxyXYZGCP116.01279.963-73.9378.7065083.2055852.099527.925GCP288.5681.134-5.25278.1845780.025906.365571.549GCP313.362-79.37-79.122-78.8795210.8794258.446461.81GCP482.24-80.027-9.887-80.0895909.2644314.283455.484151.75880

3、.555-39.95378.463214.618-0.231-76.0060.036349.88-0.782-42.201-1.022486.14-1.346-7.706-2.112548.035-79.962-44.438-79.736f=150.000mm,x 0 =0 ,y 0=0四、實驗思路? 利用后方交會得出兩張像片各自的外方位元素1) 獲取已知數據:從攝影資料中插曲像片比例尺、平均航高、內方位元素以及控制點的地面攝影測量坐標及對應的像點坐標。2) 確定未知數的初始值: 在豎直攝影的情況下, 膠原素的初始值為 0,線元素其中 Zs=m*f+,Xs=,Ys=。3) 計算旋轉矩陣 R。4

4、) 逐點計算像點坐標的近似值:利用共線方程。5) 組成誤差方程并法化。6) 解求外方位元素。7) 檢查計算是否收斂。? 利用解求出的外方位元素進行前方交會1) 用各自像片的角元素計算出左右像片的旋轉矩陣R1 和 R2。2) 根據左右像片的外方位元素計算攝影基線分量 Bx,By ,Bz。3) 逐點計算像點的空間輔助坐標。4) 計算投影系數。5) 計算未知點的地面攝影測量坐標。6) 重復以上步驟完成所有點的地面坐標的計算。五、實驗過程? 程序流程框圖后方交會函數確定 已知數據比例尺 m確定各 外方位元素初始值計算旋轉矩陣逐點計算像點坐標不近似值滿足限逐點計算誤差方程系差數項,組成誤差系數則矩陣 A

5、重復利用矩陣運算求解外計方位元素算檢查是否滿足限差若滿足則輸出外方位元素將整個過程作為一個函數繼續進行右片的外方位元素求解求解各外方位元素精度空間前方交會利用已求得的角元素計算2 張像片各自的旋轉矩陣利用已求得的線元素Xs1, Ys1, Zs1,p0,,w01,k01;Xs2 ,Ys2,Zs2,p02,w02, k02,計算基線分量:Bx=Xs2-Xs1 ;By=Ys2-Ys1 ;Bz=Zs2-Zs1 ;輸入像片坐標,利用旋轉矩陣求解想空間輔助坐標計算點投影系數:N1=(Bx*Z2-Bz*X2)/(X1*Z2-X2*Z1);N2=(Bx*Z1-Bz*X1)/(X1*Z2-X2*Z1);計算地面

6、攝影測量坐標Xt=(N1*X1+Xs1)+(N2*X2+Xs2)/2;Yt=(N1*Y1+Ys1)+(N2*Y2+Ys2)/2;Zt=(N1*Z1+Zs1)+(N2*Z2+Zs2) /2;結束程序? 程序中的主要函數設計子函數(矩陣求積multiply,計算函數Resection ,矩陣轉置transpose ,矩陣求逆 inMerse1 ,輸出函數 shuchu ,左片的外方位元素求解函數 zuobian 。右片的外方位元素求解函數 youbian 。)? 程序源代碼#include stdio.h#include math.hdouble Xs1,Xs2,Ys1,Ys2,Zs1,Zs2,p

7、01,p02,w01,w02,k01,k02;/求矩陣 a 的轉置矩陣b, a 為 m 行、 n 列void transpose(double *a, double *b, int m, int n);/矩陣 a 乘以矩陣 b,結果存儲在 c 中, a 為 m n 大小, b 為 n l 大小 void multiply(double *a, double *b, double *c, int m, int n, int l);/求矩陣 a 的逆int inMerse1(double *a, int n);/輸出 m 行、 n 列的矩陣avoid shuchu(double *a, int m

8、, int n);/計算并輸出左片的外方位元素void zuobian();/計算并輸出右片的外方位元素void youbian();void zuobian()FILE *fp = NULL;FILE *fp1 = NULL;if(fp=fopen(F:image.txt,r) = NULL)printf(Open file error!);return;if(fp1=fopen(F:ground.txt,r) = NULL)printf(Open file error!);return;/像點坐標和地面點坐標double imagecontrol42=0.0;double groundco

9、ntrol43=0.0;/攝影比例尺分母double m = 9943;double f=0.15;long i,j,k;for(i=0; i4; i+)for(j=0; j2; j+)fscanf(fp, %lf, &imagecontrolij);imagecontrolij /= 1000.0;for(k=0; k3; k+)fscanf(fp1, %lf, &groundcontrolik);fclose(fp);fclose(fp1);/計算外方位元素初始值for( i=0;i4;i+)Xs1+=groundcontroli0;Ys1+=groundcontroli1;Zs1+=gr

10、oundcontroli2;Xs1/=4.0;Ys1/=4.0;Zs1/=4.0;Zs1+=m*f;double R33=0.0;double L3=0.0,L1=0.0,L2=0.0;double L81=0.0,x=0.0,y=0.0;double A86=0.0,AT68=0.0,ATA66=0.0,B68=0.0;double V61=0.0;int n=0;do/計算旋轉矩陣R00=cos(p01)*cos(k01)-sin(p01)*sin(w01)*sin(k01);R01=(-1)*cos(p01)*sin(k01)-sin(p01)*sin(w01)*cos(k01);R02

11、=(-1)*sin(p01)*cos(w01);R10=cos(w01)*sin(k01);R11=cos(w01)*cos(k01);R12=(-1)*sin(w01);R20=sin(p01)*cos(k01)+cos(p01)*sin(w01)*sin(k01);R21=(-1)*sin(p01)*sin(k01)+cos(p01)*sin(w01)*cos(k01);R22=cos(p01)*cos(w01);for(i=0,j=0;j=0.00001|fabs(V40)=0.00001|fabs(V50)=0.00001);R00=cos(p01)*cos(k01)-sin(p01)

12、*sin(w01)*sin(k01);R01=(-1)*cos(p01)*sin(k01)-sin(p01)*sin(w01)*cos(k01);R02=(-1)*sin(p01)*cos(w01);R10=cos(w01)*sin(k01);R11=cos(w01)*cos(k01);R12=(-1)*sin(w01);R20=sin(p01)*cos(k01)+cos(p01)*sin(w01)*sin(k01);R21=(-1)*sin(p01)*sin(k01)+cos(p01)*sin(w01)*cos(k01);R22=cos(p01)*cos(w01);/進行未知數的精度評定do

13、uble AV81,X81,XT18,XTX11,mo,D66,mi6;multiply(&A00,&V00,&AV00,8,6,1);for(i=0;i8;i+)Xi0=A Vi0-Li0;transpose(&X00,&XT00,8,1);multiply(&XT00,&X00,&XTX00,1,8,1);mo=XTX00/2;for(i=0;i6;i+)for(j=0;j6;j+)Dij=mo*ATAij;for(i=0;i6;i+)mii=sqrt(Dii);printf( 左片結果為:nn);printf( 旋轉矩陣R 為: n);shuchu(&R00,3,3);printf( 外

14、方為元素為:n);printf(Xs1=%lfn,Xs1);printf(Ys1=%lfn,Ys1);printf(Zs1=%lfn,Zs1);printf(p01=%lfn,p01);printf(w01=%lfn,w01);printf(k01=%lfn,k01);printf( 各外方位元素精度為:n);printf(m1=%lfnm2=%lfnm3=%lfnm4=%lfnm5=%lfnm6=%lfn,mi0,mi1,mi2,mi3,mi 4,mi5);printf( 迭代次數為:%dnnnn,n);fclose(fp);void youbian()FILE *fp = NULL;FIL

15、E *fp1 = NULL;if(fp=fopen(F:image2.txt,r) = NULL)printf(Open file error!);return;if(fp1=fopen(F:ground.txt,r) = NULL)printf(Open file error!);return;/像點坐標和地面點坐標double imagecontrol42=0.0;double groundcontrol43=0.0;/攝影比例尺分母double m = 10177;double f=0.15;long i,j,k;for(i=0; i4; i+)for(j=0; j2; j+)fscan

16、f(fp, %lf, &imagecontrolij);imagecontrolij /= 1000.0;for(k=0; k3; k+)fscanf(fp1, %lf, &groundcontrolik);fclose(fp);fclose(fp1);/計算外方位元素初始值for( i=0;i4;i+)Xs2+=groundcontroli0;Ys2+=groundcontroli1;Zs2+=groundcontroli2;Xs2/=4.0;Ys2/=4.0;Zs2/=4.0;Zs2+=m*f;double R33=0.0;double L3=0.0,L1=0.0,L2=0.0;doubl

17、e L81=0.0,x=0.0,y=0.0;double A86=0.0,AT68=0.0,ATA66=0.0,B68=0.0;double V61=0.0;int n=0;doR00=cos(p02)*cos(k02)-sin(p02)*sin(w02)*sin(k02);R01=(-1)*cos(p02)*sin(k02)-sin(p02)*sin(w02)*cos(k02);R02=(-1)*sin(p02)*cos(w02);R10=cos(w02)*sin(k02);R11=cos(w02)*cos(k02);R12=(-1)*sin(w02);R20=sin(p02)*cos(k0

18、2)+cos(p02)*sin(w02)*sin(k02);R21=(-1)*sin(p02)*sin(k02)+cos(p02)*sin(w02)*cos(k02);R22=cos(p02)*cos(w02);for(i=0,j=0;j=0.00001|fabs(V40)=0.00001|fabs(V50)=0.00001);R00=cos(p02)*cos(k02)-sin(p02)*sin(w02)*sin(k02);R01=(-1)*cos(p02)*sin(k02)-sin(p02)*sin(w02)*cos(k02);R02=(-1)*sin(p02)*cos(w02);R10=c

19、os(w02)*sin(k02);R11=cos(w02)*cos(k02);R12=(-1)*sin(w02);R20=sin(p02)*cos(k02)+cos(p02)*sin(w02)*sin(k02);R21=(-1)*sin(p02)*sin(k02)+cos(p02)*sin(w02)*cos(k02);R22=cos(p02)*cos(w02);/進行未知數的精度評定double AV81,X81,XT18,XTX11,mo,D66,mi6;multiply(&A00,&V00,&AV00,8,6,1);for(i=0;i8;i+)Xi0=A Vi0-Li0;transpose

20、(&X00,&XT00,8,1);multiply(&XT00,&X00,&XTX00,1,8,1);mo=XTX00/2;for(i=0;i6;i+)for(j=0;j6;j+)Dij=mo*ATAij;for(i=0;i6;i+)mii=sqrt(Dii);printf( 右片結果為:nn);printf( 旋轉矩陣R 為: n);shuchu(&R00,3,3);printf( 外方為元素為:n);printf(Xs2=%lfn,Xs2);printf(Ys2=%lfn,Ys2);printf(Zs2=%lfn,Zs2);printf(p02=%lfn,p02);printf(w02=%

21、lfn,w02);printf(k02=%lfn,k02);printf( 各外方位元素精度為:n);printf(m1=%lfnm2=%lfnm3=%lfnm4=%lfnm5=%lfnm6=%lfn,mi0,mi1,mi2,mi3,mi 4,mi5);printf( 迭代次數為:%dn,n);fclose(fp);/求矩陣 a 的轉置矩陣b, a 為 m 行、 n 列void transpose(double *a, double *b, int m, int n)int i,j;for(i=0;im;i+)for(j=0;jn;j+)bj*m+i = ai*n+j;/矩陣 a 乘以矩陣 b

22、,結果存儲在 c 中, a 為 m n 大小, b 為 n l 大小 void multiply(double *a, double *b, double *c, int m, int n, int l) int i,j,k;double t;for(i=0;im;i+)for(j=0;jl;j+)t=0;for(k=0;kn;k+)t += ai*n+k*bk*l+j;ci*l+j=t;/求矩陣 a 的逆int inMerse1(double *a, int n)int *is, *js, i, j, k, l, u, M;double d,p;is = new intn;js = new

23、intn;for(k=0; k=n-1; k+)d=0.0;for(i=k; i=n-1; i+)for(j=k; jd) d=p; isk=i; jsk=j;if(d+1.0=1.0)delete is;delete js;printf(Error, not inMerse!n);return 0;if(isk != k)for(j=0; j=n-1; j+)u=k*n+j;M=isk*n+j;p=au;au=aM;aM=p;if(jsk!=k)for(i=0; i=n-1; i+)u=i*n+k;M=i*n+jsk;p=au;au=aM;aM=p;l=k*n+k;al=1.0/al;for

24、(j=0; j=n-1; j+)if(j!=k)u=k*n+j; au=au*al;for(i=0; i=n-1; i+)if(i!=k)for(j=0; j=n-1; j+)if(j!=k)u=i*n+j;au=au-ai*n+k*ak*n+j;for(i=0; i=0; k-)if (jsk!=k)for(j=0; j=n-1; j+)u=k*n+j; M=jsk*n+j;p=au; au=aM; aM=p;if(isk!=k)for(i=0; i=n-1; i+)u=i*n+k; M=i*n+isk;p=au; au=aM; aM=p;delete is;delete js;return

25、 1;/輸出 m 行、 n 列的矩陣avoid shuchu(double *a, int m, int n)int i,j;for(i=0;im;i+)for(j=0;jn;j+)printf(%9lf ,ai*n+j);printf(n);void main()zuobian();youbian();double a11,a12,a13,a21,a22,a23,b11,b12,b13,b21,b22,b23,c11,c12,c13,c21,c22,c23; double x1,y1,x2,y2,X1,Y1,Z1,X2,Y2,Z2,N1,N2,Xt,Yt,Zt,Bx,By,Bz; doubl

26、e f=0.15;scanf(x1=%lf,y1=%lf,x2=%lf,y2=%lf,&x1,&y1,&x2,&y2);/scanf(y1=%lf,&y1);/printf(x2=);/scanf(x2=%lf,&x2);/旋轉矩陣a11=cos(p01)*cos(k01)-sin(p01)*sin(w01)*sin(k01);a12=(-1)*cos(p01)*sin(k01)-sin(p01)*sin(w01)*cos(k01);a13=(-1)*sin(p01)*cos(w01);a21=cos(p02)*cos(k02)-sin(p02)*sin(w02)*sin(k02);a22=(

27、-1)*cos(p02)*sin(k02)-sin(p02)*sin(w02)*cos(k02);a23=(-1)*sin(p02)*cos(w02);b11=cos(w01)*sin(k01);b12=cos(w01)*cos(k01);b13=(-1)*sin(w01);b21=cos(w02)*sin(k02);b22=cos(w02)*cos(k02);b23=(-1)*sin(w02);c11=sin(p01)*cos(k01)+cos(p01)*sin(w01)*sin(k01);c12=(-1)*sin(p01)*sin(k01)+cos(p01)*sin(w01)*cos(k0

28、1);c13=cos(p01)*cos(w01);c21=sin(p02)*cos(k02)+cos(p02)*sin(w02)*sin(k02);c22=(-1)*sin(p02)*sin(k02)+cos(p02)*sin(w02)*cos(k02);c23=cos(p02)*cos(w02);/計算各待定點的像空間輔助坐標X1=a11*x1/1000+a12*y1/1000-a13*f;Y1=b11*x1/1000+b12*y1/1000-b13*f;Z1=c11*x1/1000+c12*y1/1000-c13*f;X2=a21*x2/1000+a22*y2/1000-a23*f;Y2=b21*x2/1000+b22*y2/1000-b23*f;Z2=c21*x2/1000+c22*y2/1000-c23*f;/計算攝影基線分量Bx=Xs2-Xs1;By=Ys2-Ys1;Bz=Zs2-Zs1;/計算點投影系數N1=(Bx*Z2-Bz*X2)/(X1*Z2-X2*Z1);N2=(Bx*Z1-Bz*X1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論