立体像对空间前方交会-点投影系数法(python实现)
一、原理


二、步骤
a.用各自像片的角元素计算出左右像片的旋转矩阵R1和R2。
b.根据左右像片的外方位元素计算摄影基线分量Bx,By,Bz。
c.逐点计算像点的空间辅助坐标。
d.计算投影系数。
e.计算未知点的地面摄影测量坐标。
f.重复以上步骤完成所有点的地面坐标的计算。
三、示例代码
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 25 08:18:30 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 SpatialAuxiliaryCoordinate(xy,f,R):
coor1 = np.mat([[xy[0]],
[xy[1]],
[-f]])
coor2 = R*coor1
return coor2
def ProjectionCoefficient(SAC1,SAC2,B):
N1 = (B[0,0]*SAC2[2,0]-B[2,0]*SAC2[0,0])/(SAC1[0,0]*SAC2[2,0]-SAC2[0,0]*SAC1[2,0])
N2 = (B[0,0]*SAC1[2,0]-B[2,0]*SAC1[0,0])/(SAC1[0,0]*SAC2[2,0]-SAC2[0,0]*SAC1[2,0])
return N1,N2 #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)))
left_SACoordinate = np.mat(np.zeros((3,1)))
right_SACoordinate = np.mat(np.zeros((3,1)))
baselineComponent = np.mat(np.zeros((3,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]) #left_SpatialAuxiliaryCoordinate = R_L*left_In.T
#right_SpatialAuxiliaryCoordinate = R_R*right_In.T
left_SACoordinate = SpatialAuxiliaryCoordinate(left_HomonymousImagePoints,left_In[0,2],R_L)
right_SACoordinate = SpatialAuxiliaryCoordinate(right_HomonymousImagePoints,right_In[0,2],R_R) baselineComponent = right_Ex[0:3,0] - left_Ex[0:3,0]
N1,N2 = ProjectionCoefficient(left_SACoordinate,right_SACoordinate,baselineComponent)
#GPhotogrammetrCoordinates
GPCoordinates = np.mat(np.zeros((3,1)))
GPCoordinates = ((left_Ex[0:3,0]+N1*left_SACoordinate) + (right_Ex[0:3,0]+N2*right_SACoordinate))/2 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.有同名像点列出共线方程. c.将方程写为未知数的线性方程形式,计算线性系数. d.写出误差方程,系数矩阵与常数项. ...
- 相关性系数及其python实现
参考文献: 1.python 皮尔森相关系数 https://www.cnblogs.com/lxnz/p/7098954.html 2.统计学之三大相关性系数(pearson.spearman.ke ...
- LSH︱python实现局部敏感随机投影森林——LSHForest/sklearn(一)
关于局部敏感哈希算法.之前用R语言实现过,可是由于在R中效能太低.于是放弃用LSH来做类似性检索.学了python发现非常多模块都能实现,并且通过随机投影森林让查询数据更快.觉得能够试试大规模应用在数 ...
- Python实现客观赋权法
本文从阐述Python实现客观赋权法的四种方式: 一. 熵权法 二. 因子分析权数法(FAM) 三. 主成分分析权数法(PCA) 四. 独立性权系数法 Python实现客观赋权法,在进行赋权前,先导入 ...
- Python 名称空间与作用域、闭包与装饰器
Python 的名称 Python 的名称(Name)是对象的一个标识(Identifier).我们知道,在 Python 里面一切皆对象,名称就是用来引用对象的.说得有点玄乎,我们以例子说明. 例如 ...
- python基础语法6 名称空间与作用域
目录: 1.函数对象 2.函数嵌套 3.名称空间 4.作用域 函数是第一类对象 1.函数名是可以被引用: def index(): print('from index') a = index a() ...
- Python名称空间与作用域
什么是名称空间? 比如下图的长方形代表内存,在这个内存里我要设置一个变量100,那么这个变量得有个门牌号,就叫他a吧,但其实变量不是这么存储的,他其实的存储方式是这样的,他会有一个名称空间,这个名称空 ...
- Python基础之函数:1、函数的介绍及名称空间
目录 一.函数 1.什么是函数 2.函数的语法结构 3.函数的定义与调用 4.函数的分类 5.函数的返回值 6.函数的参数 二.函数参数 1.位置参数 2.默认参数 3.可变长参数 1.一个*号 2. ...
- 3.2 一般的哈尔空间Vj
例3.2给予我们继续往下面做的动力.很明显的我们对于g(t)的逼近还是太粗糙了.很自然的,我们会想到,如果继续细分我们的短点,比如每1/2取一个值,甚至每1/4取一个值,那么就会有更好的逼近效果. 不 ...
随机推荐
- 清理Windows.edb
解决Windows.edb文件巨大的windows 10问题的另一个快速解决方法是删除Windows.edb文件. 步骤1:在任务管理器中终止SearchIndexer.exe --按Ctrl + A ...
- Windows下压缩包安装Mysql
1. 下载mysql压缩包 2. 解压到指定目录,例如D:\Program Files\mysql-5.7.25-winx64 3. 在目录下创建配置文件my.ini [mysqld] port = ...
- ThreadPoolExecutor 定制线程池参数
在 java 开发中经常需要执行一些“规格化”的任务,此时可以使用 java 线程池.节省创建线程时间,任务来时即可执行,高效. java 包是 java.util.concurrent .创建线程池 ...
- PHP 对象继承
对象继承 继承已为大家所熟知的一个程序设计特性,PHP 的对象模型也使用了继承.继承将会影响到类与类,对象与对象之间的关系. 比如,当扩展一个类,子类就会继承父类所有公有的和受保护的方法.除非子类覆盖 ...
- ionic4.x EventEmitter3的使用
安装: npm install --save eventemitter3 创建event.service import { Injectable } from '@angular/core'; // ...
- git git push某一次的commit记录
$ git push <remote name> <commit hash>:<remote branch name> # Example:$ git push o ...
- Web Service 和 WCF的比较
Web Service 和WCF的比较 Web Service 的工作原理 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intra ...
- 004-行为型-08-状态模式(State)
一.概述 允许一个对象在其内部状态改变时,改变它的行为 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象. 注意事项:在行为受状态约束的时候使用状态模式 ...
- S: WARNING: Could not write to (C:\Users\Administrator\AppData\Local\apktool\framework), using C:\Users\ADMINI~1\AppData\Local\Temp\ instead...
使用ApkIDE反编译修改后,重新编译生成APK报错: > 正在编译Apk... - - 失败:S: WARNING: Could not write to (C:\Users\Administ ...
- python之参数解析模块argparse
2.7之后python不再对optparse模块进行扩展,python标准库推荐使用argparse模块对命令行进行解析. 简单入门 先来看个例子: argparse_test.py: import ...