Skip to content

算法与参数

算法怎么选

算法推荐场景主要限制
SIFT日常使用、地图缩放或旋转存在小幅变化低纹理区域仍可能无法定位,计算量较高
TM小地图比例固定、画面清晰、目标区域较唯一对比例变化、重复纹理和遮挡敏感

当前客户端只提供 SIFT 与模板匹配(TM)。历史版本曾提供 ORB,现已移除。

SIFT 缓存档位

SIFT 按已保存选区的 min(宽度, 高度) 直接定档:

选区短边使用的缓存
135–139pxdynamic_136
140–147pxdynamic_144
148–157pxdynamic_152
158–163pxdynamic_160
164–192pxcompact_165
193–256pxstandard_220
257–512px以 16px 为间隔的动态大尺寸档位
>512px不支持

164×164px 会直接使用紧凑 165 档,不会生成动态缓存。模板匹配继续按实际画面调整候选尺度,不进入动态 SIFT 缓存流程。

小尺寸动态缓存

首次确认 135–163px 的 SIFT 选区时,客户端会先让玩家选择“生成并使用当前尺寸”或“自行调整分辨率”。生成流程具有以下特点:

  • dynamic_136dynamic_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 增强:改善亮度不均和阴影场景,不代表一定提升所有画面。

不清楚参数含义时使用“恢复默认”,一次只修改一个参数并在同一地点对比。

免费发布,仅供学习交流,禁止用于商业用途