椭圆重叠区域

Ellipse Overlap Area

我正在开发一个 眼动追踪 应用程序,当我检测到瞳孔并用椭圆包围它时,我必须将它与真实值(周围的精确椭圆瞳孔)。

当然总有3种情况:

  1. 无重叠 >> 重叠 = 交集 = 0
  2. 部分到完美重叠 >> 重叠 = 交叉区域/地面真实区域
  3. 封闭 >> 重叠 = 交集面积 / ground truth

我的问题是第三种情况,例如发现的椭圆比地面实况大得多,因此将其封闭在内部,因此总重叠为 1.0,这在数学上是正确的,但在检测方面并非如此,因为发现的椭圆不仅包含其中的瞳孔,还包含其他非瞳孔部分。

问题是: 测量和计算已发现椭圆与真实椭圆之间的重叠百分比的最佳方法是什么?会不会只是区域的划分?

请给出一些见解。

P.S.: 我正在用 python 编码并尝试使用 shapely 库来完成这个 [=11= 的答案中提到的任务] 据说它会根据椭圆的旋转角度进行变换以正确定位椭圆。

R 为参考椭圆,E 为计算出的椭圆。

我们定义score := area(E ∩ R) / area(E ∪ R)。分数越大匹配越好。

作为∅ ⊆ E ∩ R ⊆ E ∪ R,我们有0 ≤ score ≤ 1score=0 ⇔ (E ∩ R = ∅)
score=1 ⇔ E=R.

考虑一个完全由 R 包围且面积一半的椭圆,以及一个完全包围 R 且面积两倍的椭圆。两者的得分均为 0.5 。如果它们更接近 R,例如,如果第一个有 4/5 的面积,第二个有 5/4 的面积,那么两者的分数都是 0.8。