距離比較函式

2021-09-24 03:06:04 字數 1167 閱讀 6505

計算兩個box之間的距離,返回flag 和重疊面積比

輸入為兩個盒子的座標。 x,y,寬,高

def distanceboxes(box1, box2):

"""計算兩個box之間的距離

返回flag是否重疊和重疊面積比/距離

"""x1, y1, dx1, dy1 = box1

x2, y2, dx2, dy2 = box2

#分別求頂點座標

x01, y01, x02, y02 = x1-(dx1/2),y1-(dy1/2),x1+(dx1/2),y1+(dy1/2)

x11, y11, x12, y12 =x2-(dx2/2),y2-(dy2/2),x2+(dx2/2),y2+(dy2/2)

#中心點xy距離

lx=abs(x1-x2)

ly=abs(y1-y2)

sx=dx1/2+dx2/2

sy=dy1/2+dy2/2

# if overlap()!=0:

if (lx <= sx) & (ly <=sy):

#返回1並計算重疊面積比

flag=1

col=min(x02,x12)-max(x01,x11)

row=min(y02,y12)-max(y01,y11)

intersection=col*row

area1=(x02-x01)*(y02-y01)

area2=(x12-x11)*(y12-y11)

coincide=intersection/(area1+area2-intersection)

else:

#返回0並計算距離

flag=0

if x01y12:

coincide=np.sqrt(np.sum(np.square(x12-x01),np.square(y12-y01)))

elif y02y12:

coincide=np.sqrt(np.sum(np.square(x02-x11),np.square(y01-y12)))

elif y02y12:

coincide=abs(y01-y12)

else:

coincide=abs(y02-y11)

return flag,coincide

請比較歐式距離與曼哈頓距離?

歐氏距離是最容易直觀理解的距離度量方法,我們小學 初中和高中接觸到的兩個點在空間中的距離一般都是指歐氏距離。顧名思義,在曼哈頓街區要從乙個十字路口開車到另乙個十字路口,駕駛距離顯然不是兩點間的直線距離。這個實際駕駛距離就是 曼哈頓距離 曼哈頓距離也稱為 城市街區距離 city block dista...

matlab 距離函式

判別分析時,通常涉及到計算兩個樣本之間的距離,多元統計學理論中有多種距離計算公式。matlab中已有對應函式,可方便直接呼叫計算。距離函式有 pdist,pdist2,mahal,squareform,mdscale,cmdscale 主要介紹pdist2 其它可參考matlab help d pd...

機器學習 幾種距離度量方法比較

1.歐氏距離 euclidean distance 歐氏距離是最容易直觀理解的距離度量方法,我們小學 初中和高中接觸到的兩個點在空間中的距離一般都是指歐氏距離。歐氏距離 二維平面上點a x1,y1 與b x2,y2 間的歐氏距離 n維空間點a x11,x12,x1n 與b x21,x22,x2n 間...