我从两个不同的相机接收图像,具有不同的帧速率和分辨率。其中一台摄像机(智能相机)用作控制器。它从其他相机和自己的图像传感器接收图像,然后将图像对保存在机载存储器中。在这里,我有一个问题。我必须对每一对图像进行立体匹配。因此,图像应该完美同步(相隔几毫秒)。我将两台摄像机都指向屏幕上的秒表,并捕获图像,以便查看它们在多远以及它们之间的距离。结果令人失望的是,它们都没有同步,也没有一对之间的时间偏移是恒定的。我正在研究Linux和C编程。我尝试了两个posix线程来捕获单个相机的图像。在开始图像捕捉之前,第一个线程cam1()向另一个线程cam2()发出信号。因此,这两个图像捕捉应该同时开始。但是这也行不通。我真的很感谢在这方面的任何解决方案。同步来自两个不同相机的图像
回答
时钟同步在每个传感器网络中都是一个相当具有挑战性的问题。我不是专家,但有一些解决方案可以尝试。首先,n.m. is right!在需要控制FPS(您需要具有相同FPS)的高FPS情况下,软件同步非常困难,两台相机的图像采集之间的曝光,时间戳等。摄像机同步通常在外部完成,称为外部触发和同步I/O。
在外部同步摄像机中,两个时钟并不总是相同的。相机时钟晶体总是有一个由设计规定的漂移。您可以计算两张图像以可区分的方式漂移需要多少时间并重置时钟。我已经使用AVT相机一段时间了。 The company proposes:
兴趣synching相机时间戳到另一个时钟 用户应该注意,相机时钟将从其他时钟漂移,因此 将需要定期重置 时间戳重新同步。
如果您的FPS较低,并且您可以随时知道丢失的帧数,则可以与每帧的(增加)注释(帧数)进行同步。
如果您有立体声校准图像,默认摄像机图像中的某些功能(任意定义一个或仅触发另一个)可能位于/靠近穿过另一个摄像机的epipolar lines。因此,极线可能会在程序逻辑中引入一定的不变量以配对特征(检测到的斑点)。
感谢您的详细解答。我的问题是,我有两个完全不同的相机,具有不同的帧速率,曝光时间,捕捉机制等。不知何故,我设法使用两个不同的线程同步图像进行捕捉。其中一台摄像机GigE现在工作在触发模式下。另一个摄像头,智能摄像头,向GigE摄像头发送触发信号,然后从其接收来自其自身传感器的图像。但是,为了匹配相框,我不得不从智能相机中跳过一些相框。由于帧速率漂移,跳过有时不准确。 – user846400
现在,90%的图像完美同步。其余的有一个不变的抵消。问题是我无法确定漂移发生的时间和时间。所以,有时候,当我跳过两帧时,我得到一个偏移量。在所有相机中发现这种帧速率漂移吗? – user846400
- 1. 同步来自两个不同PostgreSQL数据库的两个表
- 2. 在Matlab中拼接来自不同相机的叠加图像
- 3. 自动脱机首次同步图像
- 4. 更新来自两个不同组件的相同变量
- 5. 需要来自相同查询的两个不同结果
- 6. 来自两个不同APK的Android服务相同
- 7. 匹配来自两个不同表的两个不同的列
- 8. 来自两个不同模型的相同模型中的两个外键
- 9. 来自两个不同图像的点匹配算法
- 10. Facebook共享具有两个不同维度的相同图像
- 11. 有两个不同的图像都显示相同
- 12. 不同iOS相机的图像大小?
- 13. 来自地图的同步设置或来自同步地图的设置?
- 14. 随机图像的两个位置相同的一组
- 15. 相同的图像数据看起来不同,相同的颜色地图
- 16. Visual Basic检查两个图像是否相同或不同
- 17. 使图像与相机视图相同
- 18. matlab将两个不同的相机给我不同的结果?
- 19. 生成两个相同的随机数和一个不同的
- 20. 两个具有相同图像
- 21. 比较两个图像是否相同
- 22. 将两个来自2个不同的主机数据库中
- 23. 同步AzMan的两个不同实例
- 24. 在两个不同设备(不同屏幕密度)上的相同图像上绘制相同的圆形
- 25. 同步来自不同DBMS中的两个数据库的一些表
- 26. SQL来自两个不同的表
- 27. 来自两个不同站点的SPSite
- 28. 来自两个不同JVM的GUID
- 29. 来自两个不同行的mysql_fetch_array
- 30. 来自两个不同表的SQL SUM
我不是相机专家,所以接下来只是我的无知的意见。由于涉及内核驱动程序,这不会很简单。你不知道他们施加了哪种延迟。另外,硬件本身可能会引入延迟。我认为您必须使用相同的帧速率从两个摄像头流式传输视频,并找到流之间的最佳时间偏移量(并且可能会随帧速率的变化而重新评估偏移量)。 –