我怎么知道哪种眼睛检测结果最好

时间:2012-03-02 06:13:33

标签: python opencv eye-detection

使用HaarDetectObject()函数检测眼睛时,我们得到如下结果(detectedObjects):

[((110, 47, 44, 44), 11), ((27, 45, 54, 54), 31)] 
[((114, 49, 40, 40), 10), ((28, 50, 47, 47), 17)] 
[((31, 50, 47, 47), 18), ((106, 47, 44, 44), 3)] 
[((106, 46, 44, 44), 38), ((29, 53, 45, 45), 35), ((18, 30, 74, 74), 4)] 
[((98, 54, 36, 36), 7), ((108, 48, 45, 45), 31), ((26, 52, 49, 49), 49)] 
[((109, 46, 45, 45), 28), ((29, 50, 49, 49), 38)] 
[((109, 46, 44, 44), 29), ((27, 47, 53, 53), 27), ((123, 45, 48, 48), 3)] 
[((108, 46, 44, 44), 35), ((28, 50, 49, 49), 33)] 
[((109, 47, 45, 45), 34), ((28, 53, 47, 47), 35), ((126, 50, 44, 44), 3)] 
[((109, 47, 44, 44), 29), ((29, 47, 51, 51), 39)] 
[((106, 47, 42, 42), 49), ((27, 49, 49, 49), 30)] 
[((31, 54, 42, 42), 13), ((110, 46, 44, 44), 4), ((125, 46, 44, 44), 4), ((27, 35, 66, 66), 6)] 

等等

我所知道的是:

(110,47,44,44),11),这是  x,y,w,h,?

x,y是检测到的'眼睛左上角的坐标。在'眼睛' 和w,h是确定检测到的眼睛区域的宽度和高度,因此cvRect格式

如你所见,最后一次检测有4只眼睛 - 因此我问,我怎么知道它们中哪两只是我完美检测到的眼睛?我的意思是,看到任何i的眼睛[i] [0] [0],我们可以知道眼睛是正确还是左眼。但在这里,我们有两只左眼和两只右眼, 眼睛[0]和眼睛[3]是左眼,眼睛[1]和眼睛[2]是正确的。

这是我的问题,现在如果我只得到右眼和左眼的两个检测结果中的一个,我该怎么做?

早些时候我认为eye [i] [1]可以用作某种分数。我暂时无法访问互联网,所以我认为。但正如我刚刚发现的那样,它并不是一些质量得分。

所以在我们的例子中,眼睛[0] [1]是13,眼睛[1] [1]是4,眼睛[2] [1]是4,眼睛[3] [1]是6。 让我们称之为Q

在其余的检测中,我看到一个模式,我的其他检测的Q值很高,通常在40-60左右,所以我认为在这个范围内的Q可能表示最佳检测。但是和我之前说的那样,它不是。 / p>

那么我如何确定哪只眼睛'在'眼睛'是最好的检测?

1 个答案:

答案 0 :(得分:0)

我会说你可以使用以前的结果,并为每个图像的检测到的眼睛提供更多的分数(假设你正在使用视频)。

您还可以使用参数,例如眼间距离来找到最佳匹配对。 你最终还可以去一些更复杂的东西(比如耦合的头部/眼睛检测或背景减法)来获得自己的模式并搜索最佳匹配眼睛位置。

如果该方法为您提供4只眼睛,您必须先通过预处理图像来增强其结果,或者在算法中添加更多复杂性以过滤掉结果。