OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 5298|回复: 7

人脸重复检测出如何解决?谢谢!

[复制链接]
发表于 2008-10-18 16:05:49 | 显示全部楼层 |阅读模式
最近才开始摸索opencv环境下的人脸检测技术,发觉检测率的确很高,当然也经常出现一些问题,比如下面这幅检测结果的图片:

同一个人脸被检测两次,都框出来了,有两个框。这个怎么解决啊?还忘高手解答!
回复

使用道具 举报

发表于 2008-10-18 23:25:58 | 显示全部楼层

人脸重复检测出如何解决?谢谢!

cvHaarDetectObjects
检测图像中的目标

typedef struct CvAvgComp
{
CvRect rect; /* bounding rectangle for the object (average rectangle of a group) */
int neighbors; /* number of neighbor rectangles in the group */
}
CvAvgComp;

CvSeq* cvHaarDetectObjects( const CvArr* image, CvHaarClassifierCascade* cascade,
CvMemStorage* storage, double scale_factor=1.1,
int min_neighbors=3, int flags=0,
CvSize min_size=cvSize(0,0) );
image
被检图像
cascade
harr 分类器级联的内部标识形式
storage
用来存储检测到的一序列候选目标矩形框的内存区域。
scale_factor
在前后两次相继的扫描中,搜索窗口的比例系数。例如1.1指将搜索窗口依次扩大10%。
min_neighbors
构成检测目标的相邻矩形的最小个数(缺省-1)。如果组成检测目标的小矩形的个数和小于min_neighbors-1 都会被排除。如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框,这种设定值一般用在用户自定义对检测结果的组合程序上。
flags
操作方式。当前唯一可以定义的操作方式是 CV_HAAR_DO_CANNY_PRUNING。如果被设定,函数利用Canny边缘检测器来排除一些边缘很少或者很多的图像区域,因为这样的区域一般不含被检目标。人脸检测中通过设定阈值使用了这种方法,并因此提高了检测速度。
min_size
检测窗口的最小尺寸。缺省的情况下被设为分类器训练时采用的样本尺寸(人脸检测中缺省大小是~20×20)。
函数 cvHaarDetectObjects 使用针对某目标物体训练的级联分类器在图像中找到包含目标物体的矩形区域,并且将这些区域作为一序列的矩形框返回。函数以不同比例大小的扫描窗口对图像进行几次搜索(察看cvSetImagesForHaarClassifierCascade)。 每次都要对图像中的这些重叠区域利用cvRunHaarClassifierCascade进行检测。 有时候也会利用某些继承(heuristics)技术以减少分析的候选区域,例如利用 Canny 裁减 (prunning)方法。 函数在处理和收集到候选的方框(全部通过级联分类器各层的区域)之后,接着对这些区域进行组合并且返回一系列各个足够大的组合中的平均矩形。调节程序中的缺省参数(scale_factor=1.1, min_neighbors=3, flags=0)用于对目标进行更精确同时也是耗时较长的进一步检测。为了能对视频图像进行更快的实时检测,参数设置通常是:scale_factor=1.2, min_neighbors=2, flags=CV_HAAR_DO_CANNY_PRUNING, min_size=<minimum possible face size> (例如, 对于视频会议的图像区域).


适当的改动红字字体参数即可.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-20 16:50:40 | 显示全部楼层

人脸重复检测出如何解决?谢谢!

楼上的能不能说的清楚些啊?参数应该怎么修改?

还有cvHaarDetectObjects这个函数opencv里面怎么看具体的代码?

我对里面的检测流程还是不很清楚,谢谢!
回复 支持 反对

使用道具 举报

发表于 2008-10-21 16:00:10 | 显示全部楼层

人脸重复检测出如何解决?谢谢!

根据得到的rect重新进行处理,将rect覆盖较多的合并.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-21 16:55:11 | 显示全部楼层

人脸重复检测出如何解决?谢谢!

根据得到的rect重新进行处理,将rect覆盖较多的合并.
这个不属于交叠问题吧,而是包含问题。
如果对每一个检测出的rect进行判断是否包含其他的rect,应该会对检测速度有很大影响吧?
回复 支持 反对

使用道具 举报

发表于 2008-10-22 09:26:15 | 显示全部楼层

人脸重复检测出如何解决?谢谢!

我遇见的既有交叠的,也有包含的.
有N多face rect 在一起.
然后就这么做一起处理就可以了.
回复 支持 反对

使用道具 举报

发表于 2008-10-22 22:54:49 | 显示全部楼层

人脸重复检测出如何解决?谢谢!

具体代码我也不是很熟悉..

不过这个参数

min_neighbors
构成检测目标的相邻矩形的最小个数(缺省-1)。如果组成检测目标的小矩形的个数和小于min_neighbors-1 都会被排除。如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框,这种设定值一般用在用户自定义对检测结果的组合程序上。

你可试一下,一般设置成3.
回复 支持 反对

使用道具 举报

发表于 2008-12-9 20:12:57 | 显示全部楼层

人脸重复检测出如何解决?谢谢!

根据人脸大小,中心 区域合并一下吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-5-5 03:17 , Processed in 0.009381 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表