【基于VC++6.0编程对像片的内外方位元素的研究计算】 相片的外方位元素

作者&投稿:祢洋 (若有异议请与网页底部的电邮联系)
~   摘 要:本文根据实地测量结果和所拍航摄照片,以单像对空间后方交会方法,根据共线方程,通过VC++6.0编程实现对该像片的内外方位元素研究计算。  关键词:单像对空间后方交会 共线方程 VC++6.0
  中图分类号:P23 文献标识码:A 文章编号:1672-3791(2012)05(b)-0033-01航空摄影测量中在对像片的内外方位元素计算的过程中,我们应做好实地测量和航拍摄影工作,根据其结果参照摄影测量学中单像对空间后方交会方法和共线方程的计算原理,通过一定的编程软件技术的开发来完成对像片的内外方位元素最终计算确定过程。
  1 计算原理
  利用一定数量的地面控制点及对应图上点的坐标,我们可以求得方位元素。
  它的基本思想是:以单幅影像为基础,根据共线方程,解求该影像在航空摄影时刻的方位元素。由于空间后方交会所采用的数学模型共线方程是非线性函数,我们将其线性化。共线方程为:
  线性化后有:
  x=(x)+a11dXs+a12dYs+a13dZs+a14dφ+a15dω+a16dκ+a17x+a18y+a19f
  y=(y)+a21dXs+a22dYs+a23dZs+a24dφ+a25dω+a26dκ+a27x+a28y+a29f
  当我们用四个或更多的地面控制点和对应的像点坐标,采用最小二乘平差方法解算,加入偶然误差Vx、Vy,
  Vx=a11dXs+a12dYs+a13dZs+a14dφ+a15dω+a16dκ+a17dx+a18dy+a19df-Lx
  Vy=a21dXs+a22dYs+a23dZs+a24dφ+a25dω+a26dκ+a27dx+a28dy+a29df-Ly
  通过求偏导可以求得各项的系数,其中:
  a17=(x-x0)/f;a27=(y-y0)/f;a18=1;a28=0;a19=0;a29=1;
  然后我们可以得到误差方程式:
  V=AX-L
  列出法方程式则有:(A-T?PA)X=A-T?PL;由此得到法方程的解为:X=(A-TA)-1ATL。
  从而解出九个方位元素。
  2 算法流程图
  右片计算结果如图1所示。
  记事本内容导出如下。
  (1)像片的外方位元素为:
  Xs=-1038.485358;Ys=-612.3039098Zs=533.895357。
  (2)像片的内方位元素为:
  f=1.129641785;x0=-4.414426649;y0=-5.51459306。
  航向倾角为:0.02116558532;旁向倾角为:-0.02851629385;像片旋角为:0.02552969144。
  (3)旋转矩阵R为:
  0.9994657309 -0.0241878564
  -0.02114962887
  0.02551734651 0.9992674772
  0.02851971209
  0.02115172777 -0.0290441573
  0.9993694608
  (4)精度评定结果为:
  单位权中误差为(单位:微米):
  3.3878e+005。
  左片计算结果如图2所示。
  记事本内容导出如下。
  (1)像片的外方位元素为:
  Xs=-1038.430617;Ys=-612.276523 Zs=533.6477522。
  (2)像片的内方位元素为:
  f=-0.7559497103;x0=1.904926053; y0=-5.55779041。
  航向倾角为:0.02698046379;旁向倾角为:-0.01600371623;像片旋角为:0.008307972536。
  (3)旋转矩阵R为:
  0.999605192 -0.007871353955
  -0.02697224397
  0.008304493335 0.9998377524
  0.01598449904
  0.02697478945 -0.01620217905
  0.9995083761
  (4)精度评定结果为:
  单位权中误差为(单位:微米):
  5.4711e+005
  3 结语
  根据像点坐标分析,是以像片中点为原点,竖向为y轴,横向为x轴的,计算结果和实际差距很大,尤其是f出现了负值。后采用标准数据验算程序,尽管外方位元素有些差距,尤其是XS,YS,但是f值是差不多的。用自己的数据进行计算,偏差太大,成为了错误。试着将输入的控制点坐标数据进行了各种变化,有一定问题,会出现迭代次数为1或者29这样大小差异过大的情况。因而数据精度或者是数据坐标系差异出现的问题往往会给后期工作带来错误的后果。


vc6.0是干什么用的
Microsoft Visual C++ Redistributable Package是Visual C++的运行时组件和库,很多软件,尤其是游戏所必须的 Microsoft VC++ 的环境软件,这些游戏就是用VC+编写的,所以安装很多大型游戏的时候,它也会帮你安装这些软件。如果要卸载的话可以选择9.0.0之前版本的Visual C++,因为此版本之前的库绝大多数是...

基于VC6.0的MFC写MediaPlayer控制窗口程序,向串口发送数据时,程序界 ...
原因:在同一线程下,串口的连续操作阻挡了消息响应。建议了解“VC 多线程”的概念,并将串口操作放在线程中完成。

vc6.0怎么运行程序?
1、打开VC++6.0,选择“文件”→“新建”。2、然后选择“文件”项,选择“C++ Source File”项,并在“文件名”项目下输入自定义的文件名,单击“确定”。3、出现以下的界面,在界面中输入你要运行的源代码。4、然后在工具栏点击编译按钮"Build",调试程序,查看有无错误。5、然后在...

【基于VC++6.0编程对像片的内外方位元素的研究计算】 相片的外方位元素...
摘 要:本文根据实地测量结果和所拍航摄照片,以单像对空间后方交会方法,根据共线方程,通过VC++6.0编程实现对该像片的内外方位元素研究计算。关键词:单像对空间后方交会 共线方程 VC++6.0 中图分类号:P23 文献标识码:A 文章编号:1672-3791(2012)05(b)-0033-01航空摄影测量中在对像片的内外方位...

请问,用vc6.0做编程平台,用c语言如何开发软件
通常来讲,你可以使用一个集成开发环境,现在有很多,如VC和TC等等 新建一个文件,输入代码,编译通过,链接程序中所调用的库函数的头文件 最终生成一个扩展名为exe的可执行文件 这只能说是一个可执行程序 一般来讲,如果是你说的“软件”的话,应该有些实用的功能,通常不是一个文件,这样,你可以...

如何使用vc6.0进行程序开发?
通过键盘向计算机输入程序,最后将此源程序以文件形式存放在文件夹内,文件用.c作为后缀,生成源程序文件。对源程序进行编译,先用c编译系统提供的“预处理器”对程序中的预处理指令进行编译预处理。例如,对于#include指令来说,就是将stdio.h头文件的内容读进来,取代#include行。由预处理得到的信息与...

怎么才可以在VC++6.0中运行?
1、进入vc++6.0 后,在菜单栏里找到"文件"并点击它,出现以下界面。然后点击新建。2、接下来,先点击"文件",然后点击"c++ Source File",然后输入文件名和确定文件位置,最后点击"确定",如图所示。3、出现以下的界面,在界面中输入你要运行的源代码,如图所示。4、然后在工具栏点击"Build"按钮,如图...

如何在VC6.0下创建一个C语言程序?
1.启动 Visual Studio 2.选择菜单 File(文件)--> New(新建) --> Project(项目),进入 New Project(新建项目)对话框 3.在Project Types(项目类型)中,选择Visual C++ 4.在Templates(模板)中选择 Win32 Project(Win32项目)5.在 Name(名称)文本框中,写Project(项目)的名字,比如...

使用VC++6.0创建工程
首先,打开VC++6.0软件,点击菜单栏上的“File(文件)”--"new(新建)",如下图所示:弹出一个“new (新建)”窗口,点击“project(工程)”选项卡,然后选中“Win32 Console Application”,再填写一个工程名,如下图所示:工程默认存放的位置在安装目录下,如果要更改存放的位置,可以点击...

如何使用vc6.0调试程序
步骤:1、写一个有bug的简单程序;2、运行程序,产生错误,直接按快捷键F10进行debug调试;3、凭借直觉,设置断点;4、观察变量的变化,是否在要求的范围内,或者运行时程序是否产生内存溢出,最终发现在a等于1时产生错误,改正后再运行;5、修改程序后重新编译,若无错误,即完成,若有错误,继续进行第...

井陉矿区17012982628: 如何用vc++6.0实现数字图像处理 -
市忠施普: 呵呵,刚好我最近做过一个这样的程序,应该可以帮到你.其实没那么难的,和普通的编程差不多,也是建立一个MFC工程即 文件--新建--MFCAppWizard(exe),第一步的时候选择多文档;还有有个地方要注意,因为一般要处理的图像可能比较大,所以在最后一步,你在选择view的种类时最好选择CScorllView.然后至于怎么编写,要实现什么样的功能,就要看你这个程序的设计方案了.但是有一点是必须要做的就是打开图像,其实这个和其它的是一样的,也是在OnDraw()函数中写出来.希望能够帮助你,如果还有什么疑问请追问.

井陉矿区17012982628: VC++6.0怎么进行3D编程? -
市忠施普: vc++6.0开发3D软件,环境配置如下: 1.安装DIRECTX 9.0 SDK开发包 2.设置VC++编译环境 中文版示例: 工具->选项->目录->include files 点加号添加新路径,选择你的DIRECTX SDK的安装路径下的 include目录 之后选择->Library files 点加号...

井陉矿区17012982628: 如何用VC++6.0建立一个C语言文件以及建立一个C++文件 -
市忠施普: 打开VC++6.0,在上面的菜单选择“file(文件)”——“new(新建文件)”——在弹出的对话框中选择最左边的“File(文件)”,选择“C/C++ Source file”,然后就新建一个文件就可以了.如果后缀名是.c,就是C语言文件;如果后缀名是.cpp,就建了一个C++文件

井陉矿区17012982628: 怎么用vc++6.0编写程序 -
市忠施普: 方法/步骤1 打开VC++6.0,界面如下,2 按左上角菜单栏的“文件”-->“新建”,打开如下界面3 在 左边的列表中选择“Win32 Console Application”,即win32控制台工程,控制台就类似windows中的cmd窗口,刚开始编程,选择创建这个工...

井陉矿区17012982628: 用VC++6.0编写一程序 -
市忠施普: #include int main() { int sum=0; for(int i=1; i

井陉矿区17012982628: 如何用VC6.0对图像进行处理 -
市忠施普: 处理特定格式的图像要知道图像的具体格式,读取文件然后按特定的要求用特定的算法处理数据,这方面的东西网上资料很多,可以搜索“VC++ 数字图像处理”有很多你想要的结果,这方面的书也可以容易找到,根据书上的做就行了~~ 如果你是入门:一开始不建议用MFC编程,因为这个MFC会很复杂,变成了学习MFC编程而不是图像处理.你可以基于api编程,opencv是个不错的选择,只是很多算法已经封装好,可以很快上手.VC++版本不要选择太高,建议6.0就可以. 一开始不要目标太高,就把图像当成矩阵,也不要去追究算法的数学证明,比如说,图像平滑,你只要知道就是把周围像素的值来组合求的中心点的值就行

井陉矿区17012982628: 求编程高手,告诉我怎么在vc++6.0中加载图片,请给出完整的代码,如果给出相关书籍,可加分. -
市忠施普: void CHelloDialog::OnPaint() {// TODO: Add your message handler code here//////////////以下三种情况任选一种会是不同效果(只能一种存在)/////////// //CPaintDC dc(this); //若用此句,得到的是对话框的DC,图片将被绘制在对话框上. ...

井陉矿区17012982628: 我用VC++6.0编的程序 -
市忠施普: #include void main(){ float sum,deno,sign,term; sum=1; deno=2;//你的程序里写的是demo sign=1; while(deno<=100) { sign=(-1)*sign...

井陉矿区17012982628: 怎么用VC++6.0编写程序啊~我菜鸟.
市忠施普: 理解你的处境,我也是多来人,我教教你吧, 1,打开vc6.0,在file栏选择new,出现界面为: 2,选择workspaces,输入工作空间名就可以了 3,重复步骤1,选择project,选择工程类型,依你目前的状况,你还是选择win32 console application,输入工程名就可以了 4,重复步骤1,选择file,选择file的类型,选择加到的工程 5,编辑新建的文件就可以了 6,ctrl+F7可以编译新建的源文件,ctrl+F5可以运行编译成功的exe程序

井陉矿区17012982628: vc++ 6.0 如何显示部分图像 -
市忠施普: CRect rect;((CStatic*)GetDlgItem(IDC_imgSrc))->GetClientRect(&rect);//获取图片控件的尺寸 LoadImage里面的0,0 改为rect.right-rect.left,rect.bottom-rect.top就行了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网