OpenCV/Python-按边界框区域查找异常值

OpenCV/Python-按边界框区域查找异常值,python,algorithm,opencv,object-detection,Python,Algorithm,Opencv,Object Detection,我用TensorFlow建立了一个目标检测算法,有没有办法去除盒子大小方面的异常值 例如,我检测到20个对象。假设其中17个在50x50左右。但是,有几个边界框是1x1,还有一个是1000x1000。显然1x1和1000x1000盒子太大了,应该去掉。一种方法是使用z_分数。z_分数将检查该数字与平均值之间的差异 例如: # coding: utf-8 import cv2 import numpy as np bboxes = [(100,200), (120,210), (114, 1

我用TensorFlow建立了一个目标检测算法,有没有办法去除盒子大小方面的异常值


例如,我检测到20个对象。假设其中17个在50x50左右。但是,有几个边界框是1x1,还有一个是1000x1000。显然1x1和1000x1000盒子太大了,应该去掉。

一种方法是使用z_分数。z_分数将检查该数字与平均值之间的差异

例如:

# coding: utf-8

import cv2
import numpy as np


bboxes = [(100,200), (120,210), (114, 195), (2,190), (104, 300), (111, 3), (110, 208), (114,205)]


def z_score(ys):
    mean_y = np.mean(ys)
    stdev_y = np.std(ys)
    z_scores = np.abs([(y - mean_y) / stdev_y for y in ys])
    return z_scores

thresh   = 1
outliers = [(t[0]>thresh or t[1]>thresh) for t in z_score(bboxes)]
这将打印:
[False,False,False,True,True,True,False,False]

这里有一个例子:您能提供帮助吗?我试着四处看看,我对如何实现itI感到非常困惑。我正在编写一个小代码来帮助您实现它,我突然想到有一个更简单的方法。我在上面添加了代码。我希望有帮助