【问题标题】:Per Pixel Thresholding每像素阈值
【发布时间】:2012-06-04 14:55:58
【问题描述】:

我想知道在 opencv 中是否可以为每个像素设置一个阈值。例如 p(x,y) 应大于 100,然后 p(x+1,y) 应大于 101。

您可以将其视为背景减法。这样背景前面的所有东西都保留下来了。

我在想这样的事情。我有一个图像,然后是另一个图像。我减去它们。这意味着剩下的一切都应该高于阈值。

例如:

右侧是启动相机(kinect)时拍摄的图像。然后左边的图像是当前的相机馈送 - 左侧的图像。

代码:

cvSub(depth, depthInit, difference, null);

由于没有任何变化,这应该更黑(我可以理解有一些噪音)

这可能是因为还有负值吗?

提前谢谢

【问题讨论】:

  • 您可以创建一个与包含所有阈值的图像大小相同的矩阵 t,然后执行Mat res = p > t;。这能解决你的问题吗?
  • 如何在带有 IplImages 的 opencv 中实现这一点?
  • 抱歉。我在谈论 C++ API 和 cv::Mat 类型。我不知道这样的事情是否可以使用 C API。
  • 其实是在javacv中。但我试过了,iplimage 和 cvMat 似乎都不起作用。

标签: image-processing opencv threshold background-subtraction


【解决方案1】:

我想你想要cvCmp (Docs)

// make sure threshold is zero to start with
cvZero(thresholded);
// for pixels where current > background, sets thresholded = high value
cvCmp(current, background, thresholded, CV_CMP_GT);

【讨论】:

  • 我想这可以解决问题,但我无法完全确认,因为 Kinect 导致我的结果包含很多噪音。
  • 只要在其中粘贴一些东西 :) cvSub 应该将负值截断为 0(它在 C 中是这样)。做cvAbsDiff,cvCmp,再做cvAnd结果也可以得到同样的效果。
【解决方案2】:

看看this的问题。对你有帮助吗?

您还可以尝试使用 for 扫描每个像素的像素,并增加阈值...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-17
    • 2021-06-19
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多