绝对中位差( MedianAbsolute Deviation,MAD) 是一种采用计算各观测值与平均值的距离总和的检测离群值的方法。
本文中主要用来剔除获取到的图像坐标中的离群点。
算法步骤:
#离群点去除
import numpy as np
def MAD(p1):
abs_bias = [] # 绝对偏差集合
cent_dis = []
count = 0
flag = 0
medi_point = np.median(p1, axis=0)
for i in p1:
k = abs(i - medi_point)
abs_bias.append([k[0], k[1]])
mad = np.median(abs_bias, axis=0) # 绝对偏差中位数
for i in abs_bias:
k = i / mad
cent_dis.append(max(k[0], k[1]))
print(cent_dis)
for i in cent_dis:
print(i)
if i > 2:#去除大于2的点
flag += 1
p1 = np.delete(p1, count, axis=0)
count -= 1
count += 1
if flag == 0:
p1 = p1
print(len(p1))
return p1
arr_a1 = [[375.186827965887, 409.36014188985826],
[371.5696707841457, 422.8807663117266],
[385.0488383800207, 367.48815229960906],
[335.90845903051354, 422.04889867995547],
[505.5421363040007, 480.9614278672809],
[352.21547239759934, 362.963402415612]]
a1 = MAD(arr_a1)
print(a1)
转载请注明出处!