这篇先讲判断边界。想看具体计算链路,可以接着读《高点视频 AI 识别后,目标经纬度到底怎么算》。
高点视频的目标定位,最容易被低估。
因为它在页面上看起来太顺了。画面里有一个框,框里是目标,下游想要一个经纬度。大家很自然地把这件事理解成“把框中心转成坐标”。
但真实项目里,框中心只是一串像素。
识别结果和定位结果要分开看
AI 识别结果通常回答三个问题:
- 画面里有没有目标;
- 目标是什么类型;
- 目标在图像里的哪个框。
定位结果回答的是另一组问题:
- 相机安装在哪里;
- 识别那一刻镜头朝向哪里;
- 当时变倍是多少;
- 画面里的这个像素,对应地面哪一点;
- 这个点位误差可能有多大。
所以我现在会把它拆成两条链路:识别链路和定位链路。识别可信,不代表定位可信。
哪些参数必须绑定到识别帧
有些参数可以相对静态,例如相机经纬度、安装高度。它们可以配置,也可以从设备平台同步。
但有些参数必须拿到识别帧那一刻的值:
| 参数 | 为什么重要 |
|---|---|
| horizontalAbs | 决定镜头水平朝向,差一点就会偏到另一片区域 |
| verticalAbs | 决定视线落地距离,俯仰角误差会被高度放大 |
| zoomValue | 决定视场角,变倍后像素和地面范围关系会变 |
| cameraHeight | 参与视线和地面求交,不同基准会带来不同结果 |
| DEM 或地面假设 | 决定射线在哪个高度上落地 |
如果这些值是空的、滞后的、取的是页面当前值,而不是识别帧时刻的值,最后的经纬度就不能直接信。
我更愿意让系统显得“保守”一点
定位结果最好不要只给一个点。
更实用的是同时给出:
targetLng / targetLat 估算点位
positionConfidence 可信等级
positionSource 计算来源
missingParams 缺失参数
assumption 使用了什么地面假设
这样前端可以把点画出来,但也能提醒用户这是不是一个“可派单坐标”。
一次很典型的坑
有些平台接口会把关键数值以字符串形式返回,也可能在某些场景下返回空值。开发时如果只按正常样例写,测试数据一换就会出现两种问题。
第一种是直接算不出来。
第二种更危险,系统用默认值算出了一个看似正常的坐标。
我更倾向于第二种直接失败,或者降级成“有识别,无可信坐标”。这比给一个假的精确点位更诚实。
留给下次
高点视频定位不要一上来问公式。先问数据能不能支撑公式。公式只是最后一步,前面每个参数的时间、来源和可信度,才决定这个点能不能用。