【问题标题】:Java - calculate displacement between two frames of an image [closed]Java - 计算图像两帧之间的位移[关闭]
【发布时间】:2014-08-16 11:29:48
【问题描述】:

我的车上安装了一个网络摄像头,用于捕捉外部环境。因此,随着车辆不断向前移动,框架中的对象会从左向右移动。我想检查网络摄像头捕获的两个连续帧是否相同。如果它们不一样,我想知道第二帧从第一帧位移了多少?请建议我如何计算这个位移?我正在使用 Java。建议我一个合适的解决方案。

谢谢!

【问题讨论】:

  • 问题太抽象了
  • 两个时间点的广义位移可能来自刚体平移、旋转和变形或扭曲。您必须在时间步的开始和结束时识别原始帧中每个点的坐标。
  • 它叫:光流
  • @berak 做到了。看看运动估计算法。光流是一种方法,但您也可以查看视频压缩标准(MPEG、H.264 等)中常用的块匹配算法。
  • 它需要校准立体来进行适当的位移,而不是来自单个凸轮的连续帧。

标签: java matlab opencv image-processing


【解决方案1】:

最简单的部分是测试整个图像是否相同;只需检查所有像素,如果它们匹配,一切都很好。

但问题是两帧不太可能匹配,因为网络摄像头往往有很多像素噪点。这意味着您需要更复杂的算法来匹配忽略噪声的帧。

如果背景不仅仅是一个简单、易于识别的图案,那么确定框架移动了多少就更加困难了。话虽如此,有办法做到这一点。

像素分析中的一个常见策略是从第一张图像中抽取一小组像素,例如几个 4x4 的正方形。然后,您可以在第二张图像中搜索与之前的图像类似的 4x4 组。如果组中有足够的像素匹配,那么您可以合理地确定您已经找到了第二张图像的偏移量。

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2013-12-27
    • 2019-03-18
    • 2023-03-15
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 2014-11-16
    相关资源
    最近更新 更多