在某些应用中,如果需要处理来自多个摄像机的图像,则图像记录的精确时间或顺序对于后续处理至关重要。 如果相机可以提供时间戳,则可以为不同的图像数据建立时间基准。 然而,相机的时基准确匹配至关重要。 HK IDS GigE 相机(固件版本 2.2 或更高版本)可以使用精确时间协议 (PTP) 轻松同步。

通过精确时间协议 (PTP) 同步 HK IDS GigE 相机

精确时间协议 (PTP) 是一种时间同步标准 ( ),可实现通过网络连接的设备之间的时间同步。 支持该标准的相机以特定周期与主时钟交换同步信息。 相机内部的计数器使用各自发送和接收时间中的时间戳信息进行精确校准和同步。

所有固件版本 2.2 及以上的 HK IDS GigE 相机均兼容 PTP!

时间戳以1970年1月1日0点为计时起点,支持1纳秒(1GHz)的时间分辨率。 然而,由于延迟和信号运行时间不准确,联网设备的时间同步精度达到微秒。

PTP应用案例

PTP作为一种基础协议,通过为图像数据提供时间参考,为各种应用奠定了基础。 根据应用需求和网络基础设施的复杂性,PTP可以通过不同的方式实现。

01 相对时间戳同步

在这种情况下,所有摄像机都位于同一网络上。 其中一台摄像机为主服务器,其余摄像机为从服务器。 所有从摄像机的时间戳均与主摄像机同步。 相机不提供​​绝对时间戳(实时),也无法在没有其他操作的情况下同步触发。

转换工厂转换时候时间用选择吗_时间戳转换_格林威治时间与北京时间转换

优势:

在此应用中,相对时间戳确定所有摄像机图像记录的时间分布。 此外,相对时间戳还可以确定哪张图像是第一张,以及来自不同相机的图像之间的时间差。

可以为特定网络基础设施生成相对时间戳,而无需额外的操作和成本。

02 使用绝对时间来同步时间戳

在这种情况下,网络摄像机与外部主时钟同步。 PTP主时钟可以是支持“硬件时间戳”的网卡——没有硬件支持,同步精度会显着降低。 除了必要的硬件之外,还需要支持PTP的软件。

格林威治时间与北京时间转换_转换工厂转换时候时间用选择吗_时间戳转换

优势:

具有全局(实时)时间戳的图像内容可以跨当前应用程序限制与使用实时时基的任何其他信息相关联。

图像内容可以使用全球时基重新用于其他应用或评估。

使用 PTP:“相对同步”

硬件设置

两台具有不同固件版本2.2(支持PTP)的HK IDS GigE摄像机(GV–C和GV–M)连接到同一网络交换机。 额外一台主机,仅用于控制和配置摄像机,不参与摄像机的 PTP 同步。

软件设置

所有PTP配置功能均可通过“”下的摄像机功能节点图找到。 只有固件版本为2.2或以上的相机才能使用这些功能。 我们在主机 PC 上安装支持软件来设置 PTP 同步。

配置一台摄像机作为 PTP 主时钟

GV–C摄像机应设置为PTP主时钟。 在软件中打开相机并将“”设置为“True”以启用PTP。 此外,将“”设置为“False”以使相机具有“主时钟”的角色。

# Configure master camera
PtpEnable = True
PtpSlaveOnly = False

将另一台摄像机配置为 PTP 从时钟

GV–M摄像机应设置为PTP从时钟。 同样,将“”设置为“True”以启用 PTP。 此时,该相机仅用作从时钟。 将“”仍设置为“True”。

# Configure slave camera
PtpEnable = True
PtpSlaveOnly = True

创建主从层次结构

完成主从时钟配置后,将自动创建主从层次结构。 对于主时钟摄像机,可以通过将“ ”从“ ”改为“ ”来确定。 对于从时钟摄像机,可以通过“”先由“”变为“”,与主时钟摄像机同步后,再变为“从”来确定。

通过相机新的PTP功能完成主从层次结构的创建后,“相对同步”也完成了。

启用时间戳

如果您希望使用同步相机为图像数据生成的时间戳,则必须通过将时间戳作为元数据传递来启用元数据(和块数据)传输。

首先,将“”设置为“True”以启用通过图像缓冲区的块数据传输。 然后,通过“”选择“”并通过“”开关启用时间戳。

# activate chunk data creation
ChunkModeActive = True
 
# enable "ChunkTimestamp"
ChunkSelector = Timestamp
ChunkEnable = True

此时,相机捕获的每张图像都会有相应的时间戳,并使用图像缓冲区(通过块数据)传输到主机 PC。 这样,任何视觉标准软件都可以读取块数据和时间戳。

图像采集

如果应用程序需要处理带时间戳的图像数据,则图像的记录时间和相机的触发至关重要。 这种情况取决于多个相机的图像是否需要完全相同的采集时间(同步图像采集)以及时间相关性偏差(时间戳抖动)有多大。 根据应用要求,必须选择适合相机的触发模式。 做出这种选择时要考虑的决定性因素不仅包括不同软件和硬件信号模式的准确性,还包括部署和使用的操作和成本要求。 为了检查先前配置的“相对同步”,我们使用每秒脉冲(PPS)信号来触发相机进行同步自由运行。

同步自由运行

顾名思义,启用 PTP 功能后,每台摄像机(主时钟摄像机和从时钟摄像机)每秒都会生成一个 PPS 信号。 因此,我们可以利用PPS信号来检查相机的同步状态。 该信号被设置为触发源,因此每秒都会触发图像采集。 除了“相对同步”引起的一些细微偏差外,相机生成的图像时间戳应该是一致的。 通过PPS信号实现所有摄像机同步自由运行的操作如下:

# image acquisition configuration for both cameras
LineSelector = Line2
LineMode = Output
LineSource = PPS
TriggerSelector = ExposureStart
TriggerMode = On
TriggerSource = Line2
 
# Limit bandwidth on both cameras
DeviceLinkThroughputLimit = 60000000
 
# Start acquisition on both cameras
Execute AcquisitionStart

格林威治时间与北京时间转换_时间戳转换_转换工厂转换时候时间用选择吗

▎同步PPS触发信号将触发相机在同一时间点采集图像

读取时间戳

要在应用程序中处理时间戳和图像内容,您必须读取当前图像缓冲区的块数据。 块数据是与制造商相关的有效负载缓冲区,其存储布局通常是未知的,因此我们将通过节点图读取各个元数据。 为此,所有现有元数据及其规范节点名称都从 GenTL 传输到节点图,以便通过标准 API 进行访问。

以下源代码片段向您展示了如何从图像缓冲区中提取时间戳。 安装包还为您提供了完整的块数据处理源代码示例。

// Get buffer from device's datastream
const auto buffer = m_dataStream->WaitForFinishedBuffer(5000);
 
// check buffer for chunks
if (buffer->HasChunks())
{
    // update nodemap with current chunk data
    m_nodemapRemoteDevice->UpdateChunkNodes(buffer);
 
    // Get the value of the timestamp chunk
    const auto chunktimestamp = m_nodemapRemoteDevice->FindNode("ChunkTimestamp")->Value();
}

总结

谈到图像内容的时间分布,PTP是多摄像头应用中的一项重要基础功能,无需额外的软硬件支持即可轻松实现摄像头之间的相对同步。 在许多应用中,相对相机同步也足以确保在“同一”时间或以正确的顺序使用图像。 该相机还配备了外部定时器,适合全球同步。 如果您有疑问或需要有关通过 PTP 同步时间的更多信息,请联系我们。

好了,今天的主题就讲到这里吧,不管如何,能帮到你我就很开心了,如果您觉得这篇文章写得不错,欢迎点赞和分享给身边的朋友。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注