利用Matlab实现单像空间后方交会

空间后方交会的定义为:根据影像覆盖范围内一定数量的分布合理的地面控制点(已知其像点和地面点的坐标),利用共线条件方程,求解影像外方位元素。

  • 其原理可以简单地解释为:以单幅影像为基础,从该影像所覆盖地面范围内的若干控制点的已知地面坐标和相应点的像坐标量测值出发,根据共线条件方程,运用最小二乘间接平差方法,求解该影像在航空摄影时刻的外方位元素。

- 已知的四对影像点及其对应的地面点

点号 像点坐标x(mm) 像点坐标y(mm) 地面点坐标X(m) 地面点坐标Y(m) 地面点坐标Z(m)
1 -86.15 -68.99 36589.41 25273.32 2195.17
2 -53.40 82.21 37631.08 31324.51 728.69
3 -14.78 -76.63 39100.97 24934.98 2386.50
4 10.46 64.43 40426.54 30319.81 757.31

由于可以将摄影瞬间近似看作垂直摄影情况,可以假设内方位元素已知:

摄影机主距fK=153.24mm;

相片比例尺分母m=50000;

像主点坐标x0=y0=0。

未知数的初始值可以表示为:



p=4;
q=5;
%定义cell矩阵,存储文件内容
BasicData=cell(p,q);
%以只读方式打开文件
fid=fopen('C:\Users\Desktop\BasicData.txt','r');
for i=1:pfor j=1:q%以字符方式读取每个值,遇空格完成每个值的读取BasicData{i,j}=fscanf(fid,'%s',[1,1]);end
end
fclose(fid);for i=1:pfor j=1:q%将文本格式转为数字格式BasicData{i,j}=str2double(BasicData{i,j});end
end
for i=1:4for j=1:2BasicData{i,j}=0.001*BasicData{i,j};end
end
BasicData=cell2mat(BasicData);%已知的内方位元素%
f=153.24*10^-3;
m=50000;
x0=0;
y0=0;%确定未知数的近似值
Xs=(BasicData(1,3)+BasicData(2,3)+BasicData(3,3)+BasicData(4,3))/p;
Ys=(BasicData(1,4)+BasicData(2,4)+BasicData(3,4)+BasicData(4,4))/p;
Zs=m*f;
phi=0;
omega=0;
kappa=0;while(1)%计算旋转矩阵R={cos(phi)*cos(kappa)-sin(phi)*sin(omega)*sin(kappa),-cos(phi)*sin(kappa)-sin(phi)*sin(omega)*cos(kappa),-sin(phi)*cos(omega);cos(omega)*sin(kappa),cos(omega)*cos(kappa),-sin(omega);sin(phi)*cos(kappa)+cos(phi)*sin(omega)*sin(kappa),-sin(phi)*sin(kappa)+cos(phi)*sin(omega)*cos(kappa),cos(phi)*cos(omega)};R=cell2mat(R);%计算像点坐标的近似值x1(1) = x0-f*(R(1,1)*(BasicData(1,3)-Xs)+ R(2,1)*(BasicData(1,4)-Ys)+ R(3,1)*(BasicData(1,5)-Zs))/(R(1,3)*(BasicData(1,3)-Xs)+ R(2,3)*(BasicData(1,4)-Ys)+ R(3,3)*(BasicData(1,5)-Zs));y1(1) = y0-f*(R(1,2)*(BasicData(1,3)-Xs)+ R(2,2)*(BasicData(1,4)-Ys)+ R(3,2)*(BasicData(1,5)-Zs))/(R(1,3)*(BasicData(1,3)-Xs)+ R(2,3)*(BasicData(1,4)-Ys)+ R(3,3)*(BasicData(1,5)-Zs));x1(2) = x0-f*(R(1,1)*(BasicData(2,3)-Xs)+ R(2,1)*(BasicData(2,4)-Ys)+ R(3,1)*(BasicData(2,5)-Zs))/(R(1,3)*(BasicData(2,3)-Xs)+ R(2,3)*(BasicData(2,4)-Ys)+ R(3,3)*(BasicData(2,5)-Zs));y1(2) = y0-f*(R(1,2)*(BasicData(2,3)-Xs)+ R(2,2)*(BasicData(2,4)-Ys)+ R(3,2)*(BasicData(2,5)-Zs))/(R(1,3)*(BasicData(2,3)-Xs)+ R(2,3)*(BasicData(2,4)-Ys)+ R(3,3)*(BasicData(2,5)-Zs));x1(3) = x0-f*(R(1,1)*(BasicData(3,3)-Xs)+ R(2,1)*(BasicData(3,4)-Ys)+ R(3,1)*(BasicData(3,5)-Zs))/(R(1,3)*(BasicData(3,3)-Xs)+ R(2,3)*(BasicData(3,4)-Ys)+ R(3,3)*(BasicData(3,5)-Zs));y1(3) = y0-f*(R(1,2)*(BasicData(3,3)-Xs)+ R(2,2)*(BasicData(3,4)-Ys)+ R(3,2)*(BasicData(3,5)-Zs))/(R(1,3)*(BasicData(3,3)-Xs)+ R(2,3)*(BasicData(3,4)-Ys)+ R(3,3)*(BasicData(3,5)-Zs));x1(4) = x0-f*(R(1,1)*(BasicData(4,3)-Xs)+ R(2,1)*(BasicData(4,4)-Ys)+ R(3,1)*(BasicData(4,5)-Zs))/(R(1,3)*(BasicData(4,3)-Xs)+ R(2,3)*(BasicData(4,4)-Ys)+ R(3,3)*(BasicData(4,5)-Zs));y1(4) = y0-f*(R(1,2)*(BasicData(4,3)-Xs)+ R(2,2)*(BasicData(4,4)-Ys)+ R(3,2)*(BasicData(4,5)-Zs))/(R(1,3)*(BasicData(4,3)-Xs)+ R(2,3)*(BasicData(4,4)-Ys)+ R(3,3)*(BasicData(4,5)-Zs));%计算常数项for i=1:4L(2*i-1,1)= BasicData(i,1)-x1(i);L(2*i,1)=BasicData(i,2)-y1(i);end%计算系数矩阵for i=1:4A(2*i-1,1)=(R(1,1)*f+R(1,3)*(BasicData(i,1)-x0))/(R(1,3)*(BasicData(i,3)-Xs)+R(2,3)*(BasicData(i,4)-Ys)+R(3,3)*(BasicData(i,5)-Zs));A(2*i-1,2)=(R(2,1)*f+R(2,3)*(BasicData(i,1)-x0))/(R(1,3)*(BasicData(i,3)-Xs)+R(2,3)*(BasicData(i,4)-Ys)+R(3,3)*(BasicData(i,5)-Zs));A(2*i-1,3)=(R(3,1)*f+R(3,3)*(BasicData(i,1)-x0))/(R(1,3)*(BasicData(i,3)-Xs)+R(2,3)*(BasicData(i,4)-Ys)+R(3,3)*(BasicData(i,5)-Zs));A(2*i-1,4)=(BasicData(i,2)-y0)*sin(omega)-cos(omega)*((BasicData(i,1)-x0)*((BasicData(i,1)-x0)*cos(kappa)-(BasicData(i,2)-y0)*sin(kappa))/f+f*cos(kappa));A(2*i-1,5)=-f*sin(kappa)-(BasicData(i,1)-x0)*((BasicData(i,1)-x0)*sin(kappa)+(BasicData(i,2)-y0)*cos(kappa))/f;A(2*i-1,6)=(BasicData(i,2)-y0);A(2*i,1)=(R(1,2)*f+R(1,3)*(BasicData(i,2)-y0))/(R(1,3)*(BasicData(i,3)-Xs)+R(2,3)*(BasicData(i,4)-Ys)+R(3,3)*(BasicData(i,5)-Zs));A(2*i,2)=(R(2,2)*f+R(2,3)*(BasicData(i,2)-y0))/(R(1,3)*(BasicData(i,3)-Xs)+R(2,3)*(BasicData(i,4)-Ys)+R(3,3)*(BasicData(i,5)-Zs));A(2*i,3)=(R(3,2)*f+R(3,3)*(BasicData(i,2)-y0))/(R(1,3)*(BasicData(i,3)-Xs)+R(2,3)*(BasicData(i,4)-Ys)+R(3,3)*(BasicData(i,5)-Zs));A(2*i,4)=-(BasicData(i,1)-x0)*sin(omega)-cos(omega)*((BasicData(i,2)-y0)*((BasicData(i,1)-x0)*cos(kappa)-(BasicData(i,2)-y0)*sin(kappa))/f-f*sin(kappa));A(2*i,5)=-f*cos(kappa)-(BasicData(i,2)-y0)*((BasicData(i,1)-x0)*sin(kappa)+(BasicData(i,2)-y0)*cos(kappa))/f;A(2*i,6)=-(BasicData(i,1)-x0);end%计算法方程XX=inv(A'*A)*A'*L;XN=[Xs;Ys;Zs;phi;omega;kappa]+XX;Xs=XN(1,1);Ys=XN(2,1);Zs=XN(3,1);phi=XN(4,1);omega=XN(5,1);kappa=XN(6,1);if(abs(XX(4,1))<0.1*pi/10800 && abs(XX(5,1))<0.1*pi/10800 && abs(XX(6,1))<0.1*pi/10800 )break;end
endXs=vpa(XN(1,1),7)
Ys=vpa(XN(2,1),7)
Zs=vpa(XN(3,1),6)
phi=vpa(degrees2dms(rad2deg(XN(4,1))),2)
omega=vpa(degrees2dms(rad2deg(XN(5,1))),2)
kappa=vpa(degrees2dms(rad2deg(XN(6,1))),2)
R

原始数据,BasicData.txt文件内容

利用Matlab实现单像空间后方交会相关推荐

  1. 单像空间后方交会(C语言)

    单像空间后方交会(C语言) 1 原理介绍 1.1 定义 1.2 基本思想 1.3 详细计算 1.4 精度评定 2 问题求解 2.1 问题重述 2.2 问题解读与说明 2.3 c语言求解实现代码 2.4 ...

  2. 双象空间前方交会代码_单像空间后方交会和双像解析空间后方-前方交会的算法程序实现...

    单像空间后方交会和双像解析空间后方 - 前 方交会的算法程序实现 遥感科学与技术 摘要:如果已知每张像片的 6 个外方位元素,就能确定被摄物体与航摄像片的关系.因此, 利用单像空间后方交会的方法,可以 ...

  3. 解析摄影测量之单像空间后方交会(MATLAB)

    目录 一.题目 二.理论基础 三.MATLAB代码 一.题目 二.理论基础 三.MATLAB代码 clc;clear; %输入初值 %像点坐标,单位统一化,以米为单位 imgPt_X=[-86.15, ...

  4. matlab 信号生成,如何利用Matlab产生单音信号

    单音信号,既单一频率的信号,在测试IFFT/FFT正确性时,我们常常用到单音信号,一般需要的单音信号时是复数形式: fm = 2e6 ;  %信号频率 fs = 122.88e6; %采样速率 w = ...

  5. Matlab解算空间后方交会外方位元素

    目录 1 问题描述 2 实现部分 参考文献   本问题为武汉大学摄影测量学教材课后习题,现在用MATLAB实现,供大家学习参考. 1 问题描述   已知摄像机主距f=153.24mm,四对点的像点坐标 ...

  6. 单闭环调速仿真matlab,利用Matlab仿真平台设计单闭环直流调速系统

    内容简介: 毕业论文 利用Matlab仿真平台设计单闭环直流调速系统 共21页,3989字. 目 录 一.摘要 --------------------------2 二.总体方案设计 ------- ...

  7. 利用MATLAB读取.nc文件单像元数值并转为Excel格式(以中国日降雨量月均数据为例)

    以中国日降雨量月均数据(nc文件包含12月)为例,提取某经纬度下的多月份像元值. ([数据分享]1960-2020年中国1公里分辨率月降水数据集) 一.确定经纬度所在行列号 以92.18E,30.47 ...

  8. idft重建图像 matlab_利用 MATLAB 编程,打开一幅图像,对其进行 DFT 变换,并置其不同区域内的系数为零,进行 IDFT ,观察其输出效果。_学小易找答案...

    [连线题]请对正确的快键键连线 [判断题]板书是指教师在课堂黑板或白板上书写,将教学内容形象.直观.简洁地传授给学生.清晰.流畅.快速的粉笔书写是课堂板书的基本功. [其它]利用 MATLAB 编程, ...

  9. 单像后方交会、pnp问题迭代计算的数学原理

    先提出几个问题: 1.为什么后方交会要迭代法? 2.这个求"改正数"的迭代法怎么保证收敛? 3.这个迭代法的精度分析? 4.单像后方交会与PNP问题有什么联系? 参考<数值分 ...

  10. 利用Matlab进行相机标定并使用openCV进行简单三维重建

    注:本文主要针对Matlab和OpenCV跨平台进行相机标定.单相机三维重建工作的实现,因为我发现网上竟然没有一篇博客径直指出这两者在进行图像处理时的巨大差异(坐标系完全不同),不然我也不会走了很多弯 ...

最新文章

  1. 用gulp构建你的前端项目
  2. 默认路由、静态路由、动态路由
  3. rfid1-stc11f32x
  4. 深入理解gradle中的task
  5. 『数学』你确定你学会了勾股弦定理!真的吗?看完这个篇文章再回答我!
  6. 在eclipse中安装jadclipse的反编译插件
  7. 树与森林的概念与性质
  8. python12_Python 12 基础知识
  9. JQuery的Ajax标准写法
  10. 学习Linux-4.12内核网路协议栈(1.1)——系统的初始化(do_initcalls)
  11. 新西兰留学再移民,哪些专业好就业?
  12. GA002-186-11
  13. 易语言简单易学,为何无人问津,国产编译语言究竟怎么样?小编带你看
  14. 帝国模板本地安装测试时显示“不支持mysql数据”
  15. PostgreSQL 数据库赋权命令
  16. “动感”新春:香港高铁首次加入春运 车票抢手
  17. html5 桌面时钟,超级实用的html5制作15种数字时钟样式代码
  18. ERROR_SXS_CANT_GEN_ACTCTX
  19. 为什么硬件钱包比你想象的更重要?
  20. python读取pdf文档书签 bookmark_pdf根据目录生成书签

热门文章

  1. 中小学计算机创新教育措施,小学信息技术教学论文计算机教学中的创新教育.docx...
  2. Readiris Pro 17 for Mac(光学识别OCR软件)
  3. 伪原创内容来源的八个渠道
  4. 计算机无法进行磁盘碎片整理,无法运行磁盘碎片整理
  5. 怎么把mov格式的视频转换成mp4?
  6. 如何安装浏览器插件,一篇文章全搞定
  7. 安全防御(四)--- 恶意软件及其特征、分类、免杀技术,反病毒技术,反病毒网关工作过程及其配置
  8. 计算机美术教学应用,浅谈计算机在美术教学中的应用
  9. 宏与VBA的关系与概念
  10. 深度精简版XP如何安装IIS