需要快速算法来检测像素变化。

3
我正在寻找一种算法来检测像素阵列中的变化。 下图中,红线表示像素阵列。 我希望该算法能够识别并在高尔夫球杆通过红线时触发。
我的原始想法是沿着线读取像素,并在颜色变化(特别是在线的下半部分)超过某个阈值时检测颜色变化。
是否有更好的方法或我可以使用的算法,以便在高尔夫球杆穿过红线时进行检测?
感谢您的意见。 enter image description here

在较低分辨率的图像上实现这样的检测,使用减少的色彩地图通常足够好且比分析原始图像更快。 - MrSmith42
2个回答

2
跟踪像素沿着线是一种可行的方法。我建议不按照从上到下或从下到上的顺序检查像素,我建议采用一种交错顺序,增加少量像素检查就能检测到变化的机会。
这就是我的意思:
如果将像素索引从上到下由0,1,2,3...63【仅举例】,
我将检查例如以下顺序 0, 32, 16, 48, 8, 24, 40, 56, 4, 12, 20, 28, 36, 44, 52, 60, ...
或者,如果您预测像素变化的概率不均匀分布,您可以考虑甚至找到一个像素检查顺序,以最低的平均像素检查次数检测到变化。

2
不错的想法。我建议在找到第一个显著差异后,还要检查更多像素,以确保它不是随机噪声。(如果高尔夫球杆真的在红色区域内,则其他附近的像素也应具有较大的差异。) - j_random_hacker
MrSmith42 我很喜欢这个想法。你能详细解释一下非等概率分布和最低平均像素检查吗?此外,j_random_hacker提出了一个关于随机噪声的好观点。当在户外时,我相信红区会表现出随机噪声(例如树叶飘动),但这种噪声应该很小,有没有想法如何区分这种噪声和高尔夫球杆?也许可以通过低通滤波器来应用平均值?我喜欢交错的想法,但如何在逐帧检查中应用这个过程呢? - iOScoder
您可以通过降低分辨率和色深来减少噪声问题。但是,您仍然需要设置一个限制,至少必须改变多少像素才能确定这是与高尔夫球杆相关的真实变化。 - MrSmith42

0
您使用什么类型的视频源?大多数视频压缩已经利用图像间的差异来减少存储数据量。
虽然可能需要一些工作,但您也许可以直接在压缩数据中看到更改而无需解码。对我来说,通过仅读取未解码数据来实现检测视频中变化的方法,听起来像是一个有趣的挑战。

实际上,我有iOS中可用的原始像素地图,因此它们存储为图像而不是视频。 - iOScoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接