背景扣除后没有得到合适的图像

时间:2017-02-03 00:47:51

标签: matlab image-processing

我从我的视频拍摄了两帧。其中一个是背景,下一个是我应用背景减法的帧。第三个图像是背景减法后的结果。这里我只得到了这个人的衬衫而不是整个身体。

backgorund减法代码

v = VideoReader('test.mp4');
n = get(v,'NumberOfFrames');
back = read(v,30);
y = read(v,150);
imshow([y;back;y-back]);

1 个答案:

答案 0 :(得分:0)

由于白色可能具有更高的价值(在每个频道中可能?我不知道你的数据格式是怎样的)。你得到负值然后我猜是被裁剪为0(黑色)。当你从中减去红色时,看看你的衬衫是如何变绿的。(背景板)。

您必须通过检查更改内容来屏蔽背景,然后删除所有未更改的内容。

可能像

diff =y-back
if ( element of diff unequal 0) then set element to 1
noback = diff .* y

我写的一个小例子:

back = rand(4)
y = back
y(5) = 0.6               %put something in front of the background
y(7) = 0.7               %put something in front of the background
mask = zeros(4)
mask(find(y-back)) = 1   %set values that are different in y to 1
noback = mask.*y         %elementwise multiplication to mask out the background

您可能必须使用除了掩码之外的其他内容,因为图像不会100%相同,但这应该显示一般方法。