You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg中get_jaccarddist函数的Jaccard距离逻辑及相关疑问

FFmpeg signature_lookup.c中get_jaccarddist函数相关疑问解答

1. 无交集时jaccarddist为0的逻辑问题

首先要明确:FFmpeg里的get_jaccarddist函数名有误导性,它没有实现标准Jaccard距离,实际计算的是两个BagOfWords的交集元素数量。

当两个BagOfWords无交集时,交集数量为0,此时jaccarddist >= sc->thworddist不成立,正好符合“坏配对”的判定逻辑——因为交集为0说明两组特征完全不匹配,自然要被过滤掉。标准Jaccard距离是1 - (交集/并集),无交集时为1,但这里的实现是直接用交集计数作为匹配度指标,数值越高匹配度越高,逻辑是自洽的。

2. sc->thworddist的默认值

在FFmpeg源码的signature_init函数中,SignatureContext的thworddist默认值被设置为3。这个值是判定BagOfWords配对有效的最低交集数量阈值,只有当交集计数大于等于3时,才会被认为是可能的有效配对。

3. jaccarddist采用int类型的原因

因为这个函数计算的不是标准Jaccard距离(0-1区间的浮点数),而是交集元素的整数个数,用int类型完全足够,不需要浮点类型:

  • 避免浮点运算的性能开销,符合FFmpeg追求高效音视频处理的设计方向;
  • 整数比较比浮点数更精准,不会出现浮点精度误差导致的判断错误;
  • 直接用交集计数作为匹配度指标,整数类型更贴合实际计算结果的属性。

内容的提问来源于stack exchange,提问作者stilloo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 05:12:09