立体像对空间前方交会-共线方程求解法(python实现)
一、原理


二、步骤
a.用各自像片的角元素计算出左右像片的旋转矩阵R1和R2。
b.有同名像点列出共线方程。
c.将方程写为未知数的线性方程形式,计算线性系数。
d.写出误差方程,系数矩阵与常数项。
e.计算未知点的最小二乘解。
f.重复以上步骤完成所有点的地面坐标的计算。
三、示例代码
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 25 09:38:08 2019 @author: L JL
"""
import numpy as np
import math as m def r_mat(f,w,k):
Rf = np.mat([[m.cos(f), 0, -m.sin(f)],
[0, 1, 0],
[m.sin(f), 0, m.cos(f)]]) Rw = np.mat([[1, 0, 0],
[0, m.cos(w), -m.sin(w)],
[0, m.sin(w), m.cos(w)]]) Rk = np.mat([[m.cos(k), -m.sin(k), 0],
[m.sin(k), m.cos(k), 0],
[0, 0, 1]]) R = Rf*Rw*Rk return R def l_mat(In,R,coor):
l = np.mat(np.zeros((2,3)))
f = In[0,2]
xo = In[0,0]
yo = In[0,1]
x = coor[0]
y = coor[1] l[0,0] = f*R[0,0] + (x-xo)*R[0,2]
l[0,1] = f*R[1,0] + (x-xo)*R[1,2]
l[0,2] = f*R[2,0] + (x-xo)*R[2,2]
l[1,0] = f*R[0,1] + (y-yo)*R[0,2]
l[1,1] = f*R[1,1] + (y-yo)*R[1,2]
l[1,2] = f*R[2,1] + (y-yo)*R[2,2] return l def l_approximate(In,R,coor,Ex):
l_app = np.mat(np.zeros((2,1)))
f = In[0,2]
xo = In[0,0]
yo = In[0,1]
x = coor[0]
y = coor[1]
Xs = Ex[0,0]
Ys = Ex[1,0]
Zs = Ex[2,0] l_app[0,0] = (f*R[0,0]*Xs + f*R[1,0]*Ys + f*R[2,0]*Zs
+ (x-xo)*R[0,2]*Xs + (x-xo)*R[1,2]*Ys + (x-xo)*R[2,2]*Zs)
l_app[1,0] = (f*R[0,1]*Xs + f*R[1,1]*Ys + f*R[2,1]*Zs
+ (y-yo)*R[0,2]*Xs + (y-yo)*R[1,2]*Ys + (y-yo)*R[2,2]*Zs) return l_app #main
left_HomonymousImagePoints = [0.153,91.798]
right_HomonymousImagePoints = [-78.672,89.122] left_In = np.mat([0,0,152.91])
left_Ex = np.mat([[970302.448784],
[-1138644.971216],
[3154.584941],
[0.010425],
[-0.012437],
[0.003380]])
right_In = np.mat([0,0,152.91])
right_Ex = np.mat([[971265.303768],
[-1138634.245942],
[3154.784258],
[0.008870],
[-0.005062],
[-0.008703]]) R_L = np.mat(np.zeros((3,3)))
R_R = np.mat(np.zeros((3,3)))
L = np.mat(np.zeros((4,3)))
L_app = np.mat(np.zeros((4,1))) R_L = r_mat(left_Ex[3,0],left_Ex[4,0],left_Ex[5,0])
R_R = r_mat(right_Ex[3,0],right_Ex[4,0],right_Ex[5,0])
L[0:2,:] = l_mat(left_In,R_L,left_HomonymousImagePoints)
L[2:4,:] = l_mat(right_In,R_R,right_HomonymousImagePoints)
L_app[0:2,0] = l_approximate(left_In,R_L,left_HomonymousImagePoints,left_Ex)
L_app[2:4,0] = l_approximate(right_In,R_R,right_HomonymousImagePoints,right_Ex) GPCoordinates = np.mat(np.zeros((3,1))) GPCoordinates = (L.T * L).I * L.T * L_app print("左影像同名点:",left_HomonymousImagePoints)
print("左影像同名点:",right_HomonymousImagePoints)
print("地面点坐标:\n X=%f,\n Y=%f,\n Z=%f"
%(GPCoordinates[0,0],GPCoordinates[1,0],GPCoordinates[2,0]))
立体像对空间前方交会-共线方程求解法(python实现)的更多相关文章
- 立体像对空间前方交会-点投影系数法(python实现)
一.原理 二.步骤 a.用各自像片的角元素计算出左右像片的旋转矩阵R1和R2. b.根据左右像片的外方位元素计算摄影基线分量Bx,By,Bz. c.逐点计算像点的空间辅助坐标. d.计算投影系数. e ...
- MATLAB线性方程组的迭代求解法
MATLAB线性方程组的迭代求解法 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 一.实验目的 1. 借助矩阵按模最大特征值,判断解方程组的Jacobi ...
- UVA725 Division (暴力求解法入门)
uva 725 Division Write a program that finds and displays all pairs of 5-digit numbers that between t ...
- 今天建了一个Python学习交流的QQ群,求喜欢python的一起来交流。
版权归作者所有,任何形式转载请联系作者.作者:枫(来自豆瓣)来源:https://www.douban.com/note/666182545/ 现在学python的人越来越多了,我也开始学习了,大群里 ...
- 中缀表达式变后缀表达式、后缀表达式(逆波兰)求值(python版本)
定义: 中缀表达式: 在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,这种表示法也称为中缀表达式 后缀表达式: 又叫逆波兰表达式 ,不包含括号,运算符放在两个运算对象的后面,所有的计算 ...
- Leetcode 234 Palindrome Linked List 复杂度为时间O(n) 和空间(1)解法
1. 问题描写叙述 给定一个单链表,推断其内容是不是回文类型. 比如1–>2–>3–>2–>1.时间和空间复杂都尽量低. 2. 方法与思路 1)比較朴素的算法. 因为给定的数据 ...
- Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本
[本文出自天外归云的博客园] 网上搜,东拼西凑,组装了一个可以查Linux服务器CPU使用率.内存使用率.磁盘空间占用率.负载情况的python脚本. 脚本内容如下: # -*- coding:utf ...
- ACM1174_爆头解题思路_空间三维坐标求点到直线的距离
/* 爆头 Description gameboy是一个CS高手,他最喜欢的就是扮演警察, 手持M4爆土匪的头.也许这里有人没玩过CS,有必 要介绍一下“爆头”这个术语:所谓爆头,就是子 弹直接命中对 ...
- 均值滤波器(平滑空间滤波器)基本原理及Python实现
1. 基本原理 使用元素的领域内像素的平均值代替该元素,可明显的降低图像灰度的尖锐变换.它的一种重要应用是模糊处理:得到感兴趣的区域的粗略表示,将次要的/小的元素与背景融合,使得主要的/较大的元素变得 ...
随机推荐
- Eclipse创建的Java Web项目,如何启用外置浏览器访问jsp或者html页面
当我们用Eclipse创建了一个Java Web项目,想访问一个jsp或者html页面时,通常会在目标页面(以jsp为例)上点击鼠标右键,选择[Run As]——>[Run on Server] ...
- nginx关闭日志
# access_log off; access_log /dev/null; error_log /dev/null;
- windows环境下mosquitto环境搭建与mqtt测试
https://blog.csdn.net/pgpanda/article/details/51800865 工作需求,自己在windows下搭建了一个mosquitto环境测试mqtt 话不多说,直 ...
- GIS地理处理工具案例教程-成本距离
GIS地理处理工具案例教程-成本距离 关键词:最短路径,成本路径,最佳路径,最优路径,路径分析,选线分析 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq ...
- 替换分隔符 ^p, 或者是回车
1 Excel 里面的数据, 粘出来到notepad上,再从notepad 粘到word, 再把world里面的分隔符或者是回车符替换成 其他的 .
- linux系统中如何查看acpi信息?
答: 进入/sys/firmware/acpi/tables, 然后输入tree命令即可查看acpi信息
- 贪心:leetcode 870. Advantage Shuffle、134. Gas Station、452. Minimum Number of Arrows to Burst Balloons、316. Remove Duplicate Letters
870. Advantage Shuffle 思路:A数组的最大值大于B的最大值,就拿这个A跟B比较:如果不大于,就拿最小值跟B比较 A可以改变顺序,但B的顺序不能改变,只能通过容器来获得由大到小的顺 ...
- Kotlin介绍
Kotlin介绍 转 https://www.jianshu.com/p/d30406daaf25 Google在今年的IO大会上宣布,将Android开发的官方语言更换为Kotlin,作为跟着Goo ...
- 转 Java连接Oracle数据库的简单示例
https://www.cnblogs.com/joyny/p/11176643.html https://community.oracle.com/thread/4096458 import jav ...
- idea中copyright使用
1,在idea中找到settings->Editor->copyright->copyright profiles,然后点击+,输入名字,在copyright text中输入模板.然 ...