这是一个相当广泛的问题;有哪些工具/库可以拍摄两张不相同但非常相似的照片,并确定它们之间的具体差异?

一个例子就是在我的女朋友完成清洁之后和周末结交朋友,喝酒,玩摇滚乐队之前,在星期五拍摄我的沙发照片。两天后,我拍了第二张沙发照片;照明是相同的,沙发没有移动毫米,我在固定的位置使用三脚架。

我可以使用哪些工具生成图像的差异,或者差异的第三个热图图像? .NET有什么工具吗?

有帮助吗?

解决方案

查看Andrew Kirillov关于CodeProject的文章。他使用 AForge.NET 计算机视觉库编写了一个C#应用程序来检测运动。在AForge.NET网站上,有两个框架差异的讨论用于运动检测。

其他提示

这在很大程度上取决于图像格式和压缩。但是,在一天结束时,你可能需要两个栅格并逐个像素地进行比较。

查看感知图像差异实用程序

最明显的方法是查看每个微小的,通常几乎不可察觉的差异,即对像素数据进行异或。如果照明甚至略有不同,那么可能太多了。差分(减去)像素数据可能更符合您的要求,具体取决于差异的微妙程度。

一个开始的地方是丰富的图像处理库,例如 IM 。您可以使用 IMlab 工具以交互方式涉及其操作员,直接从C或C ++调用它,或使用它非常体面的Lua绑定从Lua驱动它。它支持对位图的各种操作,以及可扩展的文件格式库。

即使您没有故意移动任何内容,也可以使用等算法。 SIFT 可以在帧之间获得良好的子像素质量对齐。除非您希望将相机视为固定并检测沙发的运动。

我使用我公司制作的工具包(DotImage)编写了这个免费的.NET应用程序。它有一个非常简单的算法,但如果您想使用它,代码是开源的 - 如果您不想购买DotImage的副本,您可以将算法调整为.NET Image类。

http:/ /www.atalasoft.com/cs/blogs/31appsin31days/archive/2008/05/13/image-difference-utility.aspx

这是一个有趣的问题。我不能把你推荐给任何特定的库,但你要问的过程基本上是运动补偿的最小情况。这就是MPEG(MP4,DIVX,无论如何)视频能够如此极好地压缩视频的方式;您可以查看MPEG以获取有关这些运动补偿算法实现方式的一些信息。

要记住的另一件事; JPEG压缩是基于块的压缩; MPEG带来的好处之一就是实际进行块比较。如果您的大部分图像(比如背景)从一个图像到下一个图像是相同的,那么这些块将保持不变。这是减少需要比较的数据量的快速方法。

只需使用.net映像类,创建一个新的位图()x 2并查看R& G&如果您想在确定差异时,还可以查看每个像素的B值,也可以查看A(Alpha /透明度)值。

另外一个注意事项,使用getPixel(y,x)方法可能会非常慢,还有另一种方法来获取整个图像(不那么优雅),并且如果我记得它被称为getBitmap或者自己每次通过它类似的东西,看看成像/位图类&阅读一些他们真正满足你需要的东西。并不难以使用,除非你必须这样做,否则不要去第三方。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top