绝对中位差( Median Absolute Deviation,MAD)算法

绝对中位差( 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)

转载请注明出处!

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值