• Flir Blackfly S 工业相机:配置多个摄像头进行同步拍摄


    Flir Blackfly S 工业相机介绍

    Blackfly S 采用业内先进的冰块外形传感器。
    具有强大功能,可以轻松生成所需的精确图像,并加速应用程序开发。
    包括对图像捕获和相机预处理的自动和精确手动控制。
    Blackfly S 提供GigE、USB3、套装和板级版本。
    精确图像 索尼CMOS传感器中的选择包括:全局快门、偏振和高灵敏度BSI传感器。

    实物图如下:
    在这里插入图片描述

    同步拍摄概念

    同步拍摄是指两台或以上的摄像头同时捕捉图像
    “同时”的定义是指摄像头必须在几微秒的时间差内开始曝光每组图像

    下面讲解如何利用主摄像头的频闪(摄像头开始捕捉图像时默认出现频闪)通过一台“主”摄像头触发另一台或多台“副”摄像头。 这也可以确保副摄像头的帧率与主摄像头的帧率相同。

    另一种方法也可以通过外部硬件同时触发多个摄像头的方式实现上面的功能

    同步拍摄应用场景

    同步拍摄应用可以用与多摄像头拼接,或者自动驾驶领域的多摄像头检测。比如相机载体运动速度较快,多摄像头曝光时间偏差较大,则会出现无法拼接的情况。所以同步拍摄在应用时还是很重要的。

    Flir Blackfly S 同步拍摄方法

    同步拍摄方法主要分为两个步骤:

    • 连接摄像头的 GPIO 针脚,在摄像头之间建立硬件连接。
    • 使用 SDK 演示应用或代码配置每台摄像头的输入和输出。
      下面详细介绍下每个步骤

    在摄像头之间建立硬件连接

    第一步是在摄像头之间建立硬件连接。
    Blackfly S (BFS )摄像头配有一个 6 针 GPIO。 BFS GPIO 同时配备一个非隔离输出和一个光电隔离输出。 如果使用光电隔离输出,主摄像头需要一个上拉电阻来增强它的闪光灯信号。

    BFS 摄像头配有一个 6 针 GPIO 定义如下
    在这里插入图片描述
    要配置 BFS 的主摄像头和副摄像头:

    • 将主摄像头的第 4 针(白线,光电隔离输出)连接到每个副摄像头的第 1 针(绿线,非隔离输入)。
    • 将主摄像头的第 5 针(蓝线,光电隔离地线)连接到每个副摄像头的第 6 针(棕线,地线)。
      要配置所需的上拉电阻以增强信号:

    在这里插入图片描述

    • 将 10 kΩ 电阻的一端连接到主摄像头的第 3 针(红线,3.3 V 输出)。
    • 将电阻的另一端连接到主摄像头的第 4 针(白线)以及每个副摄像头的第 1 针(绿线)。
    • 将主摄像头的第 6 针(棕线)连接到每个副摄像头的第 6 针(棕线)。 注意:副摄像头的第 6 针已连接到主摄像头的第 5 针。

    进行摄像头软件配置

    对各摄像头进行硬件连接后,使用 上位机 来配置 GPIO 线。
    上位机是SpinView

    主摄像头

    • 打开 SpinView。
    • 选择摄像头。
    • 在功能选项卡上,单击数字 IO 控制。
    • 从线选择下拉菜单中选择line 1,然后将线模式设置为输出。
    • 启用 3.3V 线从线选择下拉菜单中选择行 2,并勾选 3.3V 启用复选框
    • 在用户设置中保存设置

    副摄像头

    • 打开 SpinView 并选择摄像头。
    • 选择 GPIO 选项卡。设置触发源从触发源下拉菜单中,选择 line 3。
    • 从触发重叠拉列表中,选择读出。
    • 从触发模式下拉列表中,选择开启。
    • 在用户设置中保存设置

    开始同时保存图像

    在配置主摄像头和副摄像头后,即可开始保存同步的图像。

    如果以高带宽保存图像,建议使用控制器应用代替上位

    如果使用SpinView 方法如下:

    • 确保主摄像头的触发模式已打开。
    • 在主摄像头的流式传输窗口中,单击录制按钮。
    • 根据需要修改录制设置。
    • 单击开始录制按钮。
    • 使录制窗口保持打开状态。
    • 对于副摄像头,重复第 1 步至第 5 步。
    • 关闭主摄像头的触发模式。 这将启动两台摄像头的拍摄。

    使用自己的控制器的话可以结合Spinnaker SDK 的示例代码

    AcquisitionMultipleCameraTrigger

    位置在 Example: C:\Program Files\Point Grey Research\Spinnaker\src

    使用这些摄像头进行同步拍摄时,必须打开闪光灯。 开启频闪,可以使用以下代码创建一个 StrobeControl 结构实例:

    StrobeControl strobe;
    
    strobe.source = 2;
    
    error = cam.GetStrobe(&strobe);
    
    strobe.onOff = true;
    
    error = cam.SetStrobe(&strobe);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    遇到问题及解决

    副摄像头拍摄图像时的帧率是主摄像头的一半

    **原因:**副摄像头未使用重叠触发
    **解决方案:**在副摄像头上,切换到使用“触发重叠”。

    副摄像头以非常低的帧率拍摄图像

    **原因:**摄像头的曝光(快门)值太大。
    **解决方案:**可以调整曝光(快门)时间。
    在 SpinView 中 Settings 选项卡上

  • 相关阅读:
    Java 蓝桥杯校赛 谁最长?
    牛客网反转链表
    各个厂家的RTSP地址格式
    tkinter绘制组件(32)——圆角按钮
    opengl,opengl es,egl,glfw,glew
    FastDeploy UIE 模型 Python 部署示例:GPU、CPU版本安装依赖
    蓝桥等考Python组别十四级005
    virtualbox中ubuntu22.04网络配置
    c++ I/O流
    mybatis学习(6):IntelliJ IDEA 如何创建一个普通的 Java 项目,及创建 Java 文件并运行
  • 原文地址:https://blog.csdn.net/qq_32761549/article/details/125469872