使用边缘检测的人体检测

时间:2014-02-19 19:38:19

标签: matlab image-processing computer-vision matlab-cvst

我试图使用背景减法检测此dataset中人体的精确轮廓。在做了一些阈值处理后,我得到了分裂的blob,所以我通过Steve查看了这个教程,但是现在我正在获得其他人体的blob,如下所示

所以这是最初的

enter image description here

从背景中减去背景后,背景被视为视频的第一帧,因此从orignal图像中减去后,我得到以下图像

enter image description here

所以我做了基本的阈值处理,得到了下面的图像,它是从其他区域分割出来的

enter image description here

并使用史蒂夫的方法我得到了这个

enter image description here

但这包含了许多不属于人体的区域,如果不知何故或使用边缘,我可以获得良好的人体斑点。

修改

由于 @ lennon310 要我上传彩色图片,所以这里是

enter image description here

并且 @NKN 要求我上传相同图片的边缘信息,所以这里是

enter image description here

2 个答案:

答案 0 :(得分:1)

尝试使用vision.ForegroundDetector对象,而不是字面上减去背景,这是计算机视觉系统工具箱的一部分。它实现了高斯混合自适应背景建模,它可以为您提供更清晰的分割。

话虽如此,你不太可能获得“精确”的轮廓。有些错误是不可避免的。

答案 1 :(得分:1)

在结果图片中,您有两种类型的黑色区域。一个是移动而另一个是静止的。 因此,当你想要填充人体时,你必须只选择移动区域,为此,我建议通过添加光流技术来分割你的图像,以了解移动区域的位置。 这是一个有趣的教程,可以完成您需要做的事情: http://docs.opencv.org/trunk/doc/py_tutorials/py_video/py_lucas_kanade/py_lucas_kanade.html