我正在编写一些软件,定期检查摄像机图像,以识别是否已将某个对象引入所查看的场景。我在WinForms软件中使用ImageMagick来比较两个图像以创建第三个图像。在第三图像中,如果前两个图像具有相似颜色的像素,则像素是白色,如果它们不同则是黑色。因此,如果用户看到一组黑色像素,他们就会知道在场景中放置了之前没有的东西,如下所示:
用户不会看到此图片,因此我希望我的软件能够为我识别这一点。从这个分析中我不需要任何太复杂的东西 - 只需要一个布尔值来判断场景中是否有某些东西被改变了。
在我看来,分析这个有两种方法;计算图像中黑色像素的数量,或者我可以编写一些算法来识别黑色斑块。我的问题是关于第二种方法,因为它感觉就像更正确的方法。图像有点太嘈杂(你可以看到直边的误报)让我感觉完全适合计数。
为了识别一个组,我考虑使用一些for循环来查看每个像素周围的像素颜色,但这似乎需要永远。我的处理时间不会超过几秒钟,所以我需要警惕这一点。是否有更清晰或更有效的方法来识别类似颜色的像素组?或者我是否需要运行循环并尽可能高效?
答案 0 :(得分:0)
此时我假设您已经了解了您有兴趣捕获的对象的比例。例如,如果你确实有一个完全非黑色的屏幕(让我们忽略噪音,为了讨论的目的),除了你有一个直径大约只有10个像素的黑色像素对象。这似乎非常小,而且没有足够的信息可用。
一旦你确定了你愿意接受的黑色质量的最小尺寸,我就会去查询交错的矩阵。
,例如:
使用一点数学来确定可接受的噪音。
一旦获得正面结果(像素=黑色),请调查这些部门。
答案 1 :(得分:0)