Giter Site home page Giter Site logo

compound-eyes's Introduction

compound-eyes-client

原理

  1. 多个客户端之间通过PTP/NTP来同步各自的系统时钟。
  2. 客户端使用多进程并发读取多个USB摄像头的图像数据,并且通过同步屏障来同步读取的时刻。
  3. 每个客户端都将同步后的多个USB摄像头的图像数据与时间戳发送至服务器。
  4. 客户端根据服务器统一计算的相位延迟量,修改在同步屏障后的延迟时间,来对齐多个客户端之间的图像数据流。

实现

NTP同步时钟

每个客户端都需要安装NTP软件,用于与NTP服务器进行通信以同步时钟。建议使用稳定的NTP服务器,例如"cn.pool.ntp.org"。

多进程读取USB摄像头

在每个客户端上,可以使用Python语言的OpenCV库来读取多个USB摄像头的图像数据。为了提高读取效率,可以使用多进程并发读取,每个进程读取一个USB摄像头的图像数据。在读取时,可以使用Python的multiprocessing库中的同步屏障来确保所有进程同时读取图像数据。

发送数据至服务器

每个客户端需要将同步后的多个USB摄像头的图像数据和时间戳发送至服务器。可以使用Python的socket库实现客户端与服务器之间的通信。为了提高传输效率,将多个图像数据通过protobuf进行打包,发送给服务器 。

相位延迟量计算与修改延迟时间

服务器需要接收所有客户端发送的数据,将它们的时间戳进行比较计算相位延迟量。可以使用Python的numpy库来进行时间戳的比较和相位延迟量的计算。服务器计算出相位延迟量后,将其发送给所有客户端。

每个客户端需要接收服务器发送的相位延迟量,然后根据该延迟量修改在同步屏障后的延迟时间。可以使用Python的time库来修改延迟时间。

硬件准备

  • 多台电脑作为客户端,每台电脑上连接多个USB摄像头。
  • 一台电脑作为服务器。
  • 网络设备,如交换机等。

软件环境

  • 操作系统:客户端和服务器均使用支持NTP协议的操作系统,如Linux、Windows等。
  • Python编程环境:客户端和服务器均使用Python编程环境。
  • Python模块:OpenCV、socket、threading、time、ntplib等。

创新点

复眼同步图像采集系统的创新点主要集中在时间同步算法、数据采集和处理、时间偏移计算和同步屏障调整等方面,这些方法可以提高数据采集的效率和数据的可靠性、准确性和时序正确性,具有较好的实用价值和应用前景。

  • 多个客户端之间通过NTP协议实现时钟同步,确保了数据采集的时间精度和数据的时间对齐。这个方法可以提高图像数据的可靠性和准确性,是本研究的重要创新点之一。
  • 使用多进程并发读取多个USB摄像头的图像数据,并通过同步屏障同步读取的时刻。这个方法可以提高数据采集效率,减少采集时间,对实时采集和处理要求较高的场景非常有用。
  • 服务器端对接收到的图像数据和时间戳进行计算,实现对客户端的时间偏移调整。这个方法可以减少数据处理时间,同时确保数据的时序正确性,提高数据的可靠性和准确性。
  • 通过调整同步屏障实现多个客户端之间的图像数据流对齐。这个方法可以提高数据的同步性,减少数据处理时间,提高实验结果的准确性和可靠性。

使用方法

python

安装Python3.7及以上版本,安装Python模块:OpenCV、socket、threading、time、ntplib、numpy、protobuf等。

pip install -r requirements.txt

protobuf

在Protocol Buffers的GitHub存储库中,下载Protocol Buffers编译器。解压缩编译器,然后将bin目录添加到系统环境变量中。

打开命令提示符(或PowerShell)窗口,并运行以下命令来验证protobuf编译器是否成功安装。

protoc --version

如果安装成功,您应该能够看到编译器的版本信息。

使用以下命令将protobuf文件video.proto编译成Python代码

protoc --python_out=. video.proto

配置

本系统的配置文件包含以下信息:

  • camera_config:一个数组,包含每个摄像头的配置信息。每个配置包括channel_id(通道ID)和camera_id(摄像头ID)。
  • server_address:服务器的地址。
  • server_port:服务器的端口。

运行

compound-eyes's People

Contributors

eternal-echo avatar

Watchers

 avatar

compound-eyes's Issues

客户端开发,多摄像头数据通过同步屏障和数据流对齐实现同步采集

步骤:

  • 多进程调用opencv接口读取摄像头图像数据,通过同步屏障同步
  • 添加时间戳
  • 屏障处添加延时接口
  • 局域网下设备都使用ntp进行同步,确保时间戳一致
  • 和服务器进行通信。
    • 识别服务器发送的json数据中的cmd
    • 持续将图像数据流传输给服务器,用json字典来传递,包含图像和时间戳
  • 根据指令修改延时时间变量

[v2] 完成多通道图像采集

要求

  • 客户端采集多通道图像数据,按照通道id和时间戳的格式传输到服务器端
  • 服务器接收多个通道的图像数据

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.