【问题标题】:Matlab working with Matrices / images to reset a certain pixel(3 dims)Matlab 使用矩阵/图像重置某个像素(3 暗淡)
【发布时间】:2013-10-21 02:14:45
【问题描述】:

我正在尝试决定,对于单个框架,是否要将其添加到框架中.. (实现背景减法)..

如何快速完成? (我是通过循环完成的,它的工作速度真的很慢......)

这就是我所拥有的:(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

谢谢!!

【问题讨论】:

  • 你如何使用 diff 完全没有意义,你能解释一下这个阈值应该描述什么吗?

标签: matlab image-processing


【解决方案1】:

您的问题缺少过滤器的一些定义,但除此之外,我可以提供一个用于图像屏蔽的基本模板:

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-line,但使用二进制矩阵来指示选择哪个图像是最常用的方法。从而使面具适应您的要求。

【讨论】:

  • for 循环算法应该翻译成类似mask = sum( img>threshold , 3) >0 的东西:如果三个 RGB 分量中至少有一个是 > 阈值,则保留像素。
  • @Magla:你可能是对的。我理解 diff 是内置函数,但再次查看代码,它似乎是一个包含图像的矩阵。
猜你喜欢
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
相关资源
最近更新 更多