GPS转换-像素坐标到GPS坐标 [英] GPS Conversion - pixel coords to GPS coords
本文介绍了GPS转换-像素坐标到GPS坐标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在根据视频数据进行一些运动跟踪。使用一些视频处理(即转换为自上而下的视图),我已经获得了移动路径。我现在需要将路径(x,y)的像素坐标转换为世界坐标(Lat,Long)。
我在图像中有四个参考点及其相关的纬度和经度点。(横向/纵向->像素坐标):
(51.606733, -3.986813) -> (246, 399)
(51.607357, -3.987126) -> (407, 781)
(51.607337, -3.987266) -> (838, 781)
(51.606671, -3.987175) -> (1247, 402)
如何使用这些参考点将像素坐标转换为世界坐标?
推荐答案
问题
GPS在2D表面上的投影通常是一个棘手的问题,因为地球表面是弯曲的,而不是平坦的。但是,如果您提供的示例GPS数据是实际数据(顺便说一句,希望斯旺西天气宜人!)我将假设数据集被限制在非常小的区域内,因此您可以假设经度线是平行的。然后问题就变成了一个简单的代数问题,您只需要两个参考点,其中x1 != x2
和y1 != y2
。
解决方案
ISO坐标指定为(纬度,经度)=(y,x),而打印坐标指定为(x,y)。我将向您演示如何做y(纬度)。我们需要将源的原点(屏幕)映射到目标的原点(世界),并将源的比例映射到世界的比例。我将按如下方式命名这些变量:screenY0 //Screen origin (pixel corresponding to zero degrees latitude)
worldY0 //World origin (zero degrees latitude)
screenYscale //Screen scale (distance between 2 pixels)
worldYscale //World scale (distance between two latitude lines)
screenYpoint //Screen point (pixel y location)
worldYpoint //World point (latitude on the ground)
我将使用以下坐标对,因为这些坐标对相距最远:
(51.606733, -3.986813) -> (246, 399)
(51.607337, -3.987266) -> (838, 781)
我们的公式将如下所示:
screenY0 + screenYscale * screenYpoint = worldY0 + worldYscale * worldYpoint.
我们知道世界原点是0,世界比例是1,所以我们可以将其压缩为:
screenY0 + screenYscale * screenYpoint = worldYpoint.
我们可以将我们的值插入形成两个联立方程:
screenY0 + screenYscale * 399 = 51.606733
和screenY0 + screenYscale * 781 = 51.60733
解决:
screenY0 = 51.606733 - screenYscale * 399
和screenY0 = 51.607337 - screenYscale * 781
=> 51.606733 - screenYscale * 399 = 51.607337 - screenYscale * 781
=> screenYscale * 781 - screenYscale * 399 = 51.607337 - 51.606733
=> screenYscale * 382 = 0.000604
=> screenYscale = 0.00000158115
因此,地图上的每个像素代表经度的0.00000158115。插入以查找来源:
screenY0 + screenYscale * 399 = 51.606733
=> screenY0 + 0.00000158115 * 399 = 51.606733
=> screenY0 + 0.00063087885 = 51.606733
=> screenY0 = 51.606733 - 0.00063087885
=> screenY0 = 51.6061021212
因此,在真实世界中,0处的像素表示51.6061021212。
公式
我们计算真实世界纬度的公式如下:
51.6061021212+0.00000158115*creenYpoint=worldYpoint
测试
让我们用您的其他参考纬度测试一下:51.606671->402
51.6061021212 + 0.00000158115 * screenYpoint = worldYpoint
51.6061021212 + 0.00000158115 * 402 = 51.606671
51.6061021212 + 0.0006356223 = 51.606671
51.6067377435 = 51.606671
这大致相等;考虑到1度纬度等于111.2千米(地球平均半径),这相当于大约7.4米的误差。
希望这能帮助您解决经度问题,也就是AKAx!如果您有任何问题或希望我澄清,请留言。
这篇关于GPS转换-像素坐标到GPS坐标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文