計算兩個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 間...