RPV编程工具与分布式图像并行处理方法
立即解锁
发布时间: 2025-08-21 02:39:39 阅读量: 2 订阅数: 11 

### RPV编程工具与分布式图像并行处理方法
#### 1. 引言
计算机视觉技术如今被广泛应用于多个领域。在日本的CDV项目中,目标是为实现面向现实世界的实用计算机视觉系统奠定科学和技术基础。当使用多个传感器(如相机)进行物体或环境观测时,采用多计算机的分布式系统比单计算机的集中式系统更合适,因为分布式系统可通过增加计算机数量轻松提升性能以适应传感器数量。
为构建低成本的高性能分布式系统,研究人员正在开发用于实时图像处理的PC集群。不过,基于PC的分布式系统虽有诸多优点,但也存在一些问题。用户在编写实时分布式视觉系统程序时,需要关注数据传输、同步和错误恢复等机制,而描述这些机制需要大量软硬件知识,编程难度较大。为解决这一问题,研究人员提出了RPV(Real - time Parallel Vision)编程工具,用户使用该工具时只需描述计算机间的数据流和各计算机上的图像处理算法,无需编写数据传输、同步和错误恢复的程序。
#### 2. 系统概述
##### 2.1 硬件配置
PC集群系统由14台基于Pentium - IIIx2的PC组成。所有PC通过Myrinet(一种基于交叉开关的千兆网络)连接,其中6台配备了实时图像采集卡ICPCI,可实时从CCD相机采集未压缩图像。6个CCD相机由同步发生器同步,因此这些相机采集的图像序列完全同步。此外,所有PC的内部时钟通过网络时间协议同步,每个图像帧采集时的时间戳会添加到该图像帧上,系统通过比较不同采集组件采集的图像帧的时间戳来识别同一时间采集的图像帧。
##### 2.2 软件架构
在PC集群上,执行以下并行处理方案及其组合:
- **数据收集**:多台相机采集的图像由PC处理,并在后续处理阶段进行整合。
- **流水线并行处理**:整个处理过程分为多个子功能,每个子功能在不同的PC上依次执行。
- **数据并行处理**:图像被分割成多个子图像,每个子图像在不同的PC上并行处理。
- **功能并行处理**:图像被多播到多个PC上,不同的PC并行执行不同的处理程序,结果在后续处理阶段统一。
##### 2.3 模块
每台PC上运行以下四个模块来处理实时图像数据,每个模块都作为一个UNIX进程实现:
- **数据处理模块(DPM)**:是图像处理算法的核心部分,负责处理输入到PC的数据。它从DRM接收数据,并通过UNIX共享内存将数据发送到DSM。DPM中的程序由三部分组成:处理输入流的主循环(每次迭代在一帧时间内完成)、进入循环前的预处理和退出循环后的后处理。主循环按以下步骤处理图像序列:
1. 等待FSM的信号开始处理。若在开始等待前信号已到达,则调用错误恢复函数。
2. 获取输入数据。若未收到输入数据,则调用错误恢复函数。
3. 执行用户定义的函数`user_func`,该函数接收同步输入数据`I`和异步输入数据`A`,并发送输出数据`O`。同步输入数据`I`是主要数据流,源自图像采集卡并在PC间同步传输;异步输入数据`A`可用于反馈和协作处理。
4. 输出数据。为避免数据复制,输出数据直接写入共享内存,仅向DSM发送写入完成的通知。
- **数据接收模块(DRM)**:通过消息从其他PC接收数据,并设有数据排队缓冲区。当后续的DPM发出数据请求时,它返回数据指针。
- **数据发送模块(DSM)**:通过消息将数据发送到其他PC,并设有数据排队缓冲区。当从前面的DPM接收到处理后的数据时,将其发送到后续的PC。
- **帧同步模块(FSM)**:用于使不同DPM的执行同步。FSM向后续的FSM发送FSS信号,和/或从前面的FSM接收FSS信号,同时向PC中的DPM发送启动信号。
#### 3. RPV编程工具
##### 3.1 Class RPV_Connection
PC间的数据流通过`Class RPV_Connection`描述。每台PC根据`Class RPV_Connection`的值发送和接收数据。该类的成员`keyword`指示PC中应调用的函数。为避免在不同PC程序中不一致地定义`RPV_Connection`的值,可通过引用唯一的“连接文件”来定义。连接文件信息存储在一个表格中,列标题如下:
| #PCno | keyword | i_pc | i_size | i_num | o_pc | o_size | a_pc | a_size | a_num |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
每一行描述一台PC的连接信息,各列用空格分隔,分别表示PC编号、关键字、输入PC编号、输入数据大小、输入帧数、输出PC编号、输出数据大小、异步输入PC编号、异步输入数据大小和异步输入帧数。
##### 3.2 Function RPV_Invoke
`Function RPV_Invoke`用于生成所有模块(DRM、DPM、DSM和FSM)。其参数指定PC间的连接关系(在`RPV_Connection`中)、同步模式以及执行DPM所需的参数,包括对应于`user_func`、`pre_func`和`post_func`的函
0
0
复制全文
相关推荐








