我正在网络摄像头图像上运行一个进程。只有在发生重大变化时,我才想唤醒该过程。
- 图片中有动静
- 灯亮
- ...
所以我在 C# 中寻找一种快速高效的算法来比较相同大小的 2 byte[](kinect 图像)。
- 我只需要一种带有阈值的“差异大小”
- 我找到了一些运动检测算法,但它“太多了”
- 我找到了一些 XOR 算法,但它可能太简单了?如果我能忽略阳光、振动等微小变化,那就太好了……
最佳答案
将所有与之前图像不同的像素(基于阈值,即如果像素仅略有变化 - 将其视为噪声忽略)标记为“已更改”
<滤除噪声像素 - 即,如果像素被标记为已更改但其所有相邻像素都未标记 - 将其视为噪声并取消标记为已更改
计算图像上有多少像素发生变化并与Threshold进行比较(需要手动校准)
确保您操作的是灰度图像(而非 RGB)。 IE。转换成YUV图像空间,只在Y上做比较。
这将是最简单和最快的算法 - 您只需要调整这两个阈值。
关于image - C# : Fast and Smart algorithm to Compare two byte array (image),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18198146/