【问题标题】:Synchronizing images from two different cameras同步来自两个不同相机的图像
【发布时间】:2012-05-08 15:42:57
【问题描述】:

我正在接收来自两个不同相机的图像,它们具有不同的帧速率和分辨率。其中一台相机(智能相机)用作控制器。它从其他相机和自己的图像传感器接收图像,然后将图像对保存在板载内存中。在这里,我有一个问题。我必须对每对图像进行立体匹配。因此,图像应该完全同步(仅相隔几毫秒)。我将两台相机都指向屏幕上的秒表并捕捉图像,以查看它们在时间上的距离。结果令人失望的是它们都不是同步的,一对之间的时间偏移也不是恒定的。我正在使用 linux 和 C 编程。我尝试了两个 posix 线程来从单个相机捕​​获图像。第一个线程 cam1() 在开始图像捕获之前向另一个线程 cam2() 发出信号。因此,两个图像捕获应该同时开始。但这也不起作用。我非常感谢这方面的任何解决方案。

【问题讨论】:

  • 我不是相机专家,所以以下只是我的无知观点。这并不简单,因为涉及内核驱动程序。你不知道他们施加了什么样的延迟。另外,硬件本身可能会引入延迟。我认为您必须使用相同的帧速率从两个摄像头流式传输视频,并找到流之间的最佳时间偏移(并且可能会继续重新评估偏移,因为帧速率可能会漂移)。

标签: c synchronization camera


【解决方案1】:

时钟同步在每个传感器网络中都是一个非常具有挑战性的问题。我不是专家,但是您可以尝试一些解决方案。

首先,n.m. is right!在需要控制 FPS(您需要具有相同的 FPS)、曝光、时间戳等的高 FPS 情况下,软件同步非常困难。相机同步通常在外部完成,称为外部触发和同步 I/O。

在外部同步的相机中,两个时钟并不总是相同的。相机时钟晶体总是有一个设计指定的漂移。您可以计算两个图像以可区分的方式漂移并重置时钟所需的时间。我使用 AVT 相机已经有一段时间了。 The company proposes

有兴趣将相机时间戳同步到另一个时钟的用户 应该注意相机时钟会偏离另一个时钟,并且 因此将需要通过重置定期重新同步 时间戳。

如果您的 FPS 较低,并且您可以随时知道丢帧数,您可以与每个帧的名为 Frame Count 的(递增)注释同步。

如果您有立体校准图像,则默认相机图像中的某些功能(任意定义一个或仅触发另一个)可能位于/靠近与另一台相机交叉的epipolar lines。因此,极线可能会在您的程序逻辑中引入某种不变量来配对特征(检测到的斑点)。

【讨论】:

  • 感谢您提供如此详细的答案。我的问题是我有两个完全不同的相机,具有不同的帧速率、曝光时间、捕获机制等。不知何故,我设法使用两个不同的线程同步图像进行捕获。其中一台相机 GigE 现在可以在触发模式下工作。另一个摄像头,即智能摄像头,向 GigE 摄像头发送触发器,然后从它和它自己的传感器接收图像。但是,为了匹配帧,我必须从智能相机中跳过一些帧。由于帧率漂移,有时跳过不准确。
  • 现在,90% 的图像完美同步。其余的有一个恒定的偏移量。问题是我无法确定漂移发生的程度和时间。所以,有时,当我跳过两帧时,我会得到一个偏移量。是否在所有相机中都发现了这种帧速率漂移?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多