对于OpenCV中的项目,我想尽可能好地分割移动物体,当然噪音最小.
为此,我想使用图像减法算法.我已经有一个正在运行的程序但是今天找不到方法来获得足够公平的结果.
我已经给出了以下(灰度)图像:
IplImage* grayScale;
IplImage* lastFrame;
IplImage* secondLastFrame;
IplImage* thirdLastFrame;
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经试过电流.减去帧图像和最后一帧与cvSub();或cvAbsDiff();获得移动部件.
但不幸的是,我仍然在那里得到很多噪音(即由于在刮风的时候稍微移动树木)并且如果移动的物体相当大并且具有同色(假设一个穿着白色或黑色衬衫的人),减法只检测人物左侧和右侧图像的变化,而不是身体本身的变化,因此有时会将一个物体检测为两个物体......
cvAbsDiff(this->lastFrame,grayScale,output);
cvThreshold(output,output,10,250, CV_THRESH_BINARY);
cvErode(output,output, NULL, 2);
cvDilate(output,output, NULL, 2);
Run Code Online (Sandbox Code Playgroud)
为了消除这种噪音,我试图用cvErode()和蚀刻和扩张图像,cvDilate()但是这很慢,如果屏幕上移动的物体很小,侵蚀会对物体的大部分消失很多,因此在放气后我并不总是得到一个好的结果或分裂的对象.
在此之后我做了一个cvFindContours()获取轮廓,检查尺寸以及是否适合在移动物体周围画一个矩形.但结果很差,因为由于坏的分割,对象通常被分成几个矩形.
一位朋友现在告诉我,我可能会尝试使用两个以上的帧进行减法,因为这可能已经减少了噪音......但我真的不知道他的意思是什么以及我应该如何添加/减去帧以获得一个几乎没有噪音的图像,显示足够大的物体斑点.
任何人都可以帮助我吗?如何使用多个帧来获得尽可能具有最小噪声但具有足够大的移动物体斑点的图像?我会感谢任何琐事......
新增内容:
我在这里上传了一个当前的视频:http://temp.tinytall.de/也许有人想在那里试一试......
这是一个框架:左边的图像显示了我从cvFindContours()的结果,右边的是分割的图像,然后我尝试找到轮廓...

所以一个大型物体如果它们移动速度足够快就可以正常工作......即自行车......但是对于走路的人来说它并不总能得到一个好的结果......任何想法?
opencv image image-processing computer-vision image-segmentation