0

我正在寻找有关在我的计算机视觉项目中管理大量数据的概念性建议。我在 a) 概念化和 b) 实现一个概念来协调这个大数据流的概念,这些数据流既作为来自相机的程序的输入又由代码生成。

所以我必须处理的数据可以分成五个独立的“流”,我称之为:

原始帧(从相机直接输入) 目标图像(子帧,取自前一个图像流) 时间戳(用于原始帧) 车辆姿态数据(GPS、车身角度等,来自与车辆的无线串行端口连接)态度数据时间戳

如果我们要完全按顺序执行此操作,一般流程将是:

Frame = grabInputFrame();
TargetsVector = searchForTargets(Frame);
VehicleData = getDataFromVehicle();

for each Target in TargetVector (
    targetData = processData(Target, VehicleData);
    updateTargetLog(targetData);
}

所以这是交易:我试图通过线程来做到这一点,因为这些算法是处理器密集型的并且没有顺序相关(我的意思是我不需要颜色数据来获取目标的 GPS 坐标)。但是,我确实需要将图像与目标和时间戳与这些图像进行协调,这样我就可以将正确的车辆数据用于正确的图像等。

我的一个朋友建议使用关系数据库方法,但我使用的是 C++。我想知道的是,有没有办法在 C++ 中模拟关系数据库(让键与数据相关联,例如与数据或目标图像相关联的时间戳或目标 ID)?连接到 SQL DB 会更容易管理吗?这样做是否会导致显着的性能损失?这里最重要的一点是,无论我做什么,我都必须能够锁定共享数据,这样我才能安全地多线程。

我希望在这样的分层数据结构方面有一些经验的人可以对我的情况有所了解。我提前感谢您的想法和批评。

4

1 回答 1

0

OpenMP 可能有助于解决此类问题,为锁定和原子操作提供了内置函数。由于您有 5 个并行操作,因此您可以创建 5 个线程并根据 threadId 执行不同的操作。

于 2013-08-14T10:29:35.603 回答