2014-09-22 53 views
0

我正在考虑编写一个非常简单的程序来逐个像素地比较2个ARGB数组。两个图像都是相同的分辨率,采用相同的相机源。比较一个接一个接一个的位图2

由于相机正在举行的是,我期待这是一个相当简单的程序来通过

  1. 转换的每一个像素从位置0比位图源为灰度像素
  2. 字面上比较每个像素为N 。
  3. 有一个isClose方法做一个大概+/- 3

的结果是,我有太多的错误位。但是,当从中取出JPEG并用肉眼观看时,它们看起来是完全相同的(这是这种情况)。

为什么你认为我比较他们时看到如此多的错误?

顺便说一句 - 我想写一个非常基本的运动检测版本。

+0

这可能有助于http://www.hackerfactor.com/blog/?/archives/529-Kind-of-Like-That。 HTML和这里是交流#执行http://01101001.net/Imghash.zip – user3473830 2014-09-22 04:59:26

+0

听起来很有前途...将检查出来。谢谢。 – 2014-09-22 06:25:39

+0

您可以先将照片重新采样到一个非常合理的分辨率,以便一个像素是您正在跟踪的对象的近似大小。这肯定会减少比较图像时看到的错误数量,但是否会帮助检测或不发现,我不知道。 – 2014-09-22 07:52:41

回答

1

如果您正在跟踪一个已知对象,则可以在比较它们之前预先处理图像。例如,如果它是一个您正在跟踪的球,并且它看起来比周围环境更亮,则可以将灰度图像设为阈值,从而仅生成黑色或白色的图像。然后检测出所谓的“轮廓”(参见openCV文档)。一旦你得到了任何图像中的(球)之后的轮廓,就可以比较它在每个连续图像中的位置。有一些算法可以帮助找出移动对象将在下一个的位置,这有助于在下一帧中找到它。 不知道你在做什么,很难给出具体的东西。
而我看到你是C#...也许这将有助于:.Net (dotNet) wrappers for OpenCV?

0

b/c的图片是不一样的。每一个你按下相机的按钮都有点不同。 如果逐个像素地进行比较,则该变化是“巨大的”。

我不是运动检测方面的专家,但是尝试比较像素周围的平均值 - 我认为它会给你更好的结果。