在做差分试验中,发现对于运动快的手臂效果好,而对于很少运动的身体来讲效果不好,无意中摆动摄像头时,发现它可以获得差分后的轮廓,进一步来讲,如果假设摄像头不动,而图像出现抖动的情况,即整个图像向上向左平移一个单位象素,这样在差分中也可以得到轮廓,所以特地在OPENCV5上实现了这个算法。试验的效果还是不错的。 它的好处是一种新颖,简单,计算量小的方法,因为它不需要计算任何梯度,如果采用一些canny,sobel算子,会慢很多,它的缺点是引入了其他物体的干扰。 实际上更大的意义是在一个静态场景中,需要对那些静止的物体进行分割时,不妨采用这种方法,很容易获得轮廓。 算法如下: //使用帧间差分方法得到轮廓 int shift_x = 1; for(int x=0;x<mat.rows-shift_x;x++) cvAbsDiff( grey,pre_grey,abs_image ); |