算法与参数
算法怎么选
| 算法 | 推荐场景 | 主要限制 |
|---|---|---|
| SIFT | 日常使用、地图缩放或旋转存在小幅变化 | 低纹理区域仍可能无法定位,计算量较高 |
| TM | 小地图比例固定、画面清晰、目标区域较唯一 | 对比例变化、重复纹理和遮挡敏感 |
当前客户端只提供 SIFT 与模板匹配(TM)。历史版本曾提供 ORB,现已移除。
SIFT 缓存档位
SIFT 按已保存选区的 min(宽度, 高度) 直接定档:
| 选区短边 | 使用的缓存 |
|---|---|
135–139px | dynamic_136 |
140–147px | dynamic_144 |
148–157px | dynamic_152 |
158–163px | dynamic_160 |
164–192px | compact_165 |
193–256px | standard_220 |
257–512px | 以 16px 为间隔的动态大尺寸档位 |
>512px | 不支持 |
164×164px 会直接使用紧凑 165 档,不会生成动态缓存。模板匹配继续按实际画面调整候选尺度,不进入动态 SIFT 缓存流程。
小尺寸动态缓存
首次确认 135–163px 的 SIFT 选区时,客户端会先让玩家选择“生成并使用当前尺寸”或“自行调整分辨率”。生成流程具有以下特点:
dynamic_136与dynamic_144临时将 8192 底图缩放到 5102,dynamic_152缩放到 5575,dynamic_160缩放到 6144;- 缩放底图只存在于缓存生成进程的内存中,处理后立即释放,不会落盘,也不会加入玩家包;
- 最终只把 SIFT 特征和清单保存在
%LOCALAPPDATA%\SiftMapTracker\sift-cache\v2\,关键点仍映射回 8192 地图坐标; - 有效缓存会自动校验并复用;旧的小尺寸缓存因缩放策略不同会重新询问生成,大尺寸动态缓存继续兼容;
- 至少需要 4 GB 可用物理内存和 256 MB 可用磁盘空间;
- 使用 1536px 核心块、96px 重叠和最多 4 个 OpenCV 线程顺序提取,避免整图 SIFT 的高瞬时内存峰值;
- 生成窗口显示真实百分比和当前分块,完成或失败后独立准备进程退出并释放内存。
生成通常需要数十秒,较慢设备可能需要数分钟。生成失败或取消时不会保存新选区,也不会回退到不匹配的旧缓存。
刷新间隔
“刷新间隔”主要控制服务状态输出频率,并不等同于 SIFT 每秒识别次数。默认 50 ms 已兼顾响应和客户端解码负载。
不建议设置为 35 ms
较低间隔会增加 JSON、预览图和 UI 调度压力,却不会按比例提高定位能力。旧版本中,只有坐标的新帧还可能覆盖携带小地图图片的帧,使“力大飞砖”指针看起来停止更新。出现该问题时恢复 50–60 ms 并重启追踪。
SIFT 参数
- Match Ratio:越低通常越严格,误匹配减少,但更容易识别不到。
- 最小匹配点数:提高后更稳,但低纹理区域更难通过。
- RANSAC 阈值:控制几何一致性的容差。
- CLAHE 增强:改善亮度不均和阴影场景,不代表一定提升所有画面。
不清楚参数含义时使用“恢复默认”,一次只修改一个参数并在同一地点对比。
