2013-10-20 24 views
0

我想要为单个帧决定是否要将它添加到框架中或不是.. (Implementing background subtraction)..Matlab正在使用矩阵/图像来重置某个像素(3个dims)

我该如何快速地做到这一点? (我做到了与循环和它的工作realll慢...)

这是我有:(SEQ输入,DIFF是我对测试图像,F是新的图像)

for y = 1:height 
    for x = 1:width 
     res = 0; 
     for c = 1:channels 
      if diff(y,x,c) > thresh 
       res = 1; 
      end 
     end 
     if res == 1 
      F(y,x, :) = seq(y,x,:); 
     else 
      F(y,x, :) = 0; 
     end 
    end 
    end 

谢谢!

+0

它是绝对没有意义的,你如何使用差异,你能解释一下这个阈值应该描述什么? – Daniel

回答

0

你的问题是缺少用于过滤器的一些定义,但除了这一点,我可以提供图像屏蔽一个基本的模板:

img=imread(...) %some input image 
mask = sum(img>threshold , 3) >0 
%now the tricky part, we have a nxmx3 image and a nxm mask to filter: 
img2=bsxfun(@times,img,mask); 

您可以修改bsxfun线,而是使用二进制矩阵来表示要选择哪个图像是最常用的方法。从而使面罩适应您的要求。

+0

'for'循环算法应该用'mask = sum(img> threshold,3)> 0'来转换:如果三个RGB分量中至少有一个大于阈值,则保持该像素。 – marsei

+0

@Magla:你可能是对的。我将diff理解为构建函数,但再次查看代码,它似乎是包含图像的矩阵。 – Daniel

相关问题