如何计算旋转框的IOU

一、先将两个框转换为角点形式

 一般我们得到的是中心点,宽高,和旋转角度。通过矢量旋转公式得到角点形式。

 二、判断四个角点是否在对方的框里,并保存在里面的角点

A的角点向B的相邻的两条边投影(任意的B的两条边),使用向量点积得到, 点积的值必须大于0且小于所投向的边的长度。否则就不在里面。如果都不在对方的里面的iou为0,不用进行下面的了

三、求两个边框的交点,既然有角点在里面,肯定有线段相交点。

遍历四个边和另外四个边求交点。我们设A线段有两个点a1和a2,B线段有两个点b1和b2,如果两个线段相交,则a1b1向量和a1b2向量的叉乘与a2b1和a2b2的叉乘符号肯定相反,同时b1a1和b1a2的叉乘与b2a1和b2a2的叉乘符号肯定也相反,其实也就是角度问题,大家可以画图验证。

如果线段有交点,那我们就求出交点,和第二步保存的角点放一起。

四、对保存的点进行顺时针排序(为了求相交面积) 

排序的流程,先求所有保存点的平均值作为向量起始点M,求M指向所有保存点的归一化向量。每个向量都有个x,y,如果y小于0,那么他的x就等于-2-x,最终根据修改后的x对所有保存点进行排序。 

五、根据排序点使用三角剖分求相交面积

 选取第一个排序点作为出发点,往后再取两个点求三角形面积(叉乘),第一个点不变,往后推一位再取两个点求三角形面积。举个例子  有点[1,2,3,4]先选中1,取23求面积,再选1,往后推一位ie,取两个为34求面积,这时求和就得到了四边形的面积。

六、代码以及参考文章(他讲的更细致)

(84条消息) Rotated IoU 计算_旋转iou_THE@JOKER的博客-CSDN博客 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CVplayer111

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值