本文代码用于比较计算不规则四边形的面积的两种方法(海伦公式和向量积),因为本人最近在研究目标检测的问题,当标记目标是以不规则四边形标注或多边形时,需要基于此面积计算Recall,Precision,IoU来评价模型。
1. 海伦公式和向量积公式
海伦公式和向量积计算不规则四边形的面积,都是以计算三角形面积为基础。
海伦公式:(看代码)
向量积:https://blog.csdn.net/liyuanbhu/article/details/51921096
2. 海伦公式和向量积对比
向量积计算多边形可基于行列式的方法,计算量小且快,而海伦公式因为要计算根号(根号内还得大于等于0),所以其计算量较大。当然最重要的是向量积计算的结果更精确。
3. 向量积判断顺逆时针标注的坐标
基于向量积计算面积的正负,可判断标注坐标是顺时针(负)还是逆时针(正)。
4. 本文代码计算的是不规则四边形,小小的修改可计算多边形。
import numpy as np
# 计算欧式距离
def cal_distance(point1, point2):
dis = np.sqrt(np.sum(np.square(point1[0]-point2[0])+np.square(point1[1]-point2[1])))
return dis
# 基于海伦公式计算不规则四边形的面积
def helen_formula(coord):
coord = np.array(coord).reshape((4,2))
# 计算各边的欧式距离
dis_01 = cal_di