科学相机

Andor、Basler、Hamamatsu、FLIR 等 15 品牌科学相机与图像采集驱动。

概述

Quatm 为全球 15 个主流科学相机品牌提供统一的 ICamera 接口封装,覆盖 EMCCD、sCMOS、高速 CMOS 和工业相机。


Andor 系列:iXon EMCCD / Zyla sCMOS / Shamrock 光谱仪

概述

Quatm 提供两套 Andor 相机驱动,通过原生 SDK 实现高性能成像控制:

驱动类SDK适用型号接口
AndorSDK2Cameraatmcd32d.dll (SDK2)iXon EMCCD, Luca, ClaraPCIe / USB
AndorSDK3Cameraatcore.dll (SDK3)Zyla, Neo, Marana (sCMOS)USB3 / CameraLink
ShamrockSpectrographShamrockCIF.dllSR-303i, SR-500i 等光谱仪USB

所有类继承自 io.camera 接口,支持 ROI、binning、曝光控制和帧缓冲管理。

Andor SDK2 (EMCCD) AndorSDK2Camera

⚙️ iXon EMCCD Andor SDK2 系列
通信DLL (atm32cd32)
读出模式EM/传统
ADC 频率1/5/10 MHz
像素深度16-bit
制冷TEC(≤ -100°C)
适用于极低光信号场景(单原子/离子荧光),通过电子倍增(EM Gain)实现单光子级灵敏度。
驱动模块:AndorSDK2Camera

初始化

from quatm.drivers.andor.AndorSDK2 import AndorSDK2Camera

# 连接第一台相机
cam = AndorSDK2Camera(cam_id=0)

# 配置采集参数
cam.setup_acquisition(
    exposure=0.1,       # 曝光时间 (s)
    em_gain=200,        # EM 增益 (0-1000)
    readout_rate="5MHz",# 读出速率
    pre_amp_gain=2,     # 前置放大增益
    hsspeed=0,          # 水平转移速率
    temperature=-70,    # 目标温度 (°C)
)

# 采集单帧
cam.start_acquisition(nframes=1)
image = cam.read_multiple_images(nframes=1)

关键参数

参数说明典型范围
exposure单帧曝光时长0.001 – 3600 s
em_gain电子倍增增益0 – 1000(线性或真实增益模式)
readout_rateADC 读出频率1MHz / 5MHz / 10MHz
temperature传感器目标温度-60 至 -100°C(取决于冷却器)
pre_amp_gain前置放大器增益1× – 4×

Andor SDK3 (sCMOS) AndorSDK3Camera

⚙️ Zyla / Neo sCMOS Andor SDK3 系列
通信DLL (atcore)
传感器sCMOS
接口USB3 / CameraLink
像素深度12/16-bit
帧率最高 100 fps(全分辨率)
适用于快速序列成像和需要大视场的场景。基于 GenAPI 属性模型配置曝光、ROI 和触发。
驱动模块:AndorSDK3Camera

初始化

from quatm.drivers.andor.AndorSDK3 import AndorSDK3Camera

cam = AndorSDK3Camera(cam_id=0)
cam.setup_acquisition(
    exposure=0.05,
    pixel_format="Mono16",
    trigger_mode="Internal",
)

Andor Shamrock 光谱仪 ShamrockSpectrograph

控制光栅选择、中心波长和狭缝宽度:

from quatm.drivers.andor.Shamrock import ShamrockSpectrograph

spec = ShamrockSpectrograph(idx=0)
spec.set_wavelength(780.24)      # 中心波长 (nm)
spec.set_grating(2)              # 选择光栅
spec.set_slit_width(50, port=1)  # 入口狭缝 (µm)

设备配置

"emccd": {
    "type": "local",
    "module": "drivers.andor.AndorSDK2",
    "class": "AndorSDK2Camera",
    "arguments": {"cam_id": 0},
}

FLIR / Teledyne / Blackfly S / Grasshopper3

概述

Quatm 通过 TeledyneSpinnakerCamera 类封装 Spinnaker SDK,支持所有兼容 GenICam/GenAPI 的 FLIR/Teledyne USB3/GigE 相机。

⚙️ Blackfly S / Grasshopper3 FLIR Spinnaker 系列
通信Spinnaker SDK
接口USB3 / GigE
像素格式Mono8/16, Bayer
触发硬件/软件
帧率取决于型号
用于实验室通用成像:MOT 监测、对准光束成像、设备状态监控。
驱动模块:TeledyneSpinnakerCamera

初始化

from quatm.drivers.teledyne.spinnaker import TeledyneSpinnakerCamera

# 列出所有可用相机
cam_list = TeledyneSpinnakerCamera.list_cameras()

# 连接指定相机(序列号或索引)
cam = TeledyneSpinnakerCamera(cam_id="serial_xxx")
# 或使用索引
cam = TeledyneSpinnakerCamera(cam_id=0)

# 配置并开始采集
cam.setup_acquisition(
    exposure=0.02,          # 20 ms 曝光
    pixel_format="Mono8",
    width=1920, height=1200,
    offset_x=0, offset_y=0,
)

关键方法

方法说明
list_cameras()枚举系统中所有 Spinnaker 相机
setup_acquisition(**kwargs)配置 ROI、曝光、像素格式等
start_acquisition(nframes)开始采集指定帧数
read_multiple_images(nframes)读取已采集图像
get_device_info()获取相机序列号、型号、固件版本

常用属性操作

通过 GenAPI 节点名称直接读写相机参数:

# 设置增益
cam.set_attribute("Gain", 10.0)
# 启用自动曝光
cam.set_attribute("ExposureAuto", "Continuous")
# 获取传感器温度
temp = cam.get_attribute("DeviceTemperature")

设备配置

"monitor_cam": {
    "type": "local",
    "module": "drivers.teledyne.spinnaker",
    "class": "TeledyneSpinnakerCamera",
    "arguments": {"cam_id": 0},
}
  • stop(): Stop capturing images.

  • quatm.drivers.blackfly.bfly.Camserver(name, serial)

    class quatm.drivers.blackfly.bfly.Camserver(object):
        def __init__(self, name, serial):
            pass
    
        def generateImageIndex(self):
            pass
    
        def run(self):
            pass
    
        def sendimage(self, im):
            pass
    
        def updateBusInfo(self):
            pass
    
    • generateImageIndex(): In the current measurement, count the images. If the next run has started (either task, repetition or run changes), reset the counter (imgindex).

    • run(): Run loop running forever. Sends images from the camera to the imagestream and initiates reconfiguration of the camera in case properties have changed.

    • sendimage(im): Send Blackfly camera image via the imagestream. The image is converted to numpy array, additional information like binning, timestamp, etc., is added to a dictionary and both are sent to the imagestream.

      • Args: im - Blackfly image object.
      • Returns: None
    • updateBusInfo(): Detect cameras on the bus and update info in properties if new camera has been found.

  • quatm.drivers.blackfly.bfly.pc2

    class quatm.drivers.blackfly.bfly.pc2(object):
        pass
    
    • Dummy class in case driver is not installed.

Function:

  • quatm.drivers.blackfly.bfly.run(name)

    def quatm.drivers.blackfly.bfly.run(name):
        pass
    
    • Initialize a Camserver and run it.

Thorlabs TSI / uc480 科学相机

TLCamera ThorlabsTLCamera

⚙️ TSI 系列 Thorlabs 科学相机
通信TLCamera SDK
接口USB3
传感器sCMOS / CCD
支持ROI, binning
适用于 SDK 级控制的高帧率科学成像。
驱动模块:ThorlabsTLCamera
from quatm.drivers.thorlabs.TLCamera import ThorlabsTLCamera
cam = ThorlabsTLCamera(serial="12345678")
cam.setup_acquisition(exposure=0.01, width=1024, height=768)

概述

Quatm 为全球 15 个主流科学相机品牌提供统一的 io.camera 接口封装,覆盖 EMCCD、sCMOS、高速 CMOS 和工业相机。所有驱动通过原生 SDK 实现高性能采集。


Andor 系列:EMCCD / sCMOS / 光谱仪

概述

Quatm 提供两套 Andor 相机驱动,通过原生 SDK 实现高性能成像控制:

驱动类SDK适用型号接口
AndorSDK2Cameraatmcd32d.dll (SDK2)iXon EMCCD, Luca, ClaraPCIe / USB
AndorSDK3Cameraatcore.dll (SDK3)Zyla, Neo, Marana (sCMOS)USB3 / CameraLink
ShamrockSpectrographShamrockCIF.dllSR-303i, SR-500i 等光谱仪USB

所有类继承自 io.camera 接口,支持 ROI、binning、曝光控制和帧缓冲管理。

Andor SDK2 (EMCCD) AndorSDK2Camera

⚙️ iXon EMCCD Andor SDK2 系列
通信DLL (atm32cd32)
读出模式EM/传统
ADC 频率1/5/10 MHz
像素深度16-bit
制冷TEC(≤ -100°C)
适用于极低光信号场景(单原子/离子荧光),通过电子倍增(EM Gain)实现单光子级灵敏度。
驱动模块:AndorSDK2Camera

初始化

from quatm.drivers.andor.AndorSDK2 import AndorSDK2Camera

# 连接第一台相机
cam = AndorSDK2Camera(cam_id=0)

# 配置采集参数
cam.setup_acquisition(
    exposure=0.1,       # 曝光时间 (s)
    em_gain=200,        # EM 增益 (0-1000)
    readout_rate="5MHz",# 读出速率
    pre_amp_gain=2,     # 前置放大增益
    hsspeed=0,          # 水平转移速率
    temperature=-70,    # 目标温度 (°C)
)

# 采集单帧
cam.start_acquisition(nframes=1)
image = cam.read_multiple_images(nframes=1)

关键参数

参数说明典型范围
exposure单帧曝光时长0.001 – 3600 s
em_gain电子倍增增益0 – 1000(线性或真实增益模式)
readout_rateADC 读出频率1MHz / 5MHz / 10MHz
temperature传感器目标温度-60 至 -100°C(取决于冷却器)
pre_amp_gain前置放大器增益1× – 4×

Andor SDK3 (sCMOS) AndorSDK3Camera

⚙️ Zyla / Neo sCMOS Andor SDK3 系列
通信DLL (atcore)
传感器sCMOS
接口USB3 / CameraLink
像素深度12/16-bit
帧率最高 100 fps(全分辨率)
适用于快速序列成像和需要大视场的场景。基于 GenAPI 属性模型配置曝光、ROI 和触发。
驱动模块:AndorSDK3Camera

初始化

from quatm.drivers.andor.AndorSDK3 import AndorSDK3Camera

cam = AndorSDK3Camera(cam_id=0)
cam.setup_acquisition(
    exposure=0.05,
    pixel_format="Mono16",
    trigger_mode="Internal",
)

Andor Shamrock 光谱仪 ShamrockSpectrograph

控制光栅选择、中心波长和狭缝宽度:

from quatm.drivers.andor.Shamrock import ShamrockSpectrograph

spec = ShamrockSpectrograph(idx=0)
spec.set_wavelength(780.24)      # 中心波长 (nm)
spec.set_grating(2)              # 选择光栅
spec.set_slit_width(50, port=1)  # 入口狭缝 (µm)

设备配置

"emccd": {
    "type": "local",
    "module": "drivers.andor.AndorSDK2",
    "class": "AndorSDK2Camera",
    "arguments": {"cam_id": 0},
}

FLIR / Teledyne Spinnaker 系列

概述

Quatm 通过 TeledyneSpinnakerCamera 类封装 Spinnaker SDK,支持所有兼容 GenICam/GenAPI 的 FLIR/Teledyne USB3/GigE 相机。

⚙️ Blackfly S / Grasshopper3 FLIR Spinnaker 系列
通信Spinnaker SDK
接口USB3 / GigE
像素格式Mono8/16, Bayer
触发硬件/软件
帧率取决于型号
用于实验室通用成像:MOT 监测、对准光束成像、设备状态监控。
驱动模块:TeledyneSpinnakerCamera

初始化

from quatm.drivers.teledyne.spinnaker import TeledyneSpinnakerCamera

# 列出所有可用相机
cam_list = TeledyneSpinnakerCamera.list_cameras()

# 连接指定相机(序列号或索引)
cam = TeledyneSpinnakerCamera(cam_id="serial_xxx")
# 或使用索引
cam = TeledyneSpinnakerCamera(cam_id=0)

# 配置并开始采集
cam.setup_acquisition(
    exposure=0.02,          # 20 ms 曝光
    pixel_format="Mono8",
    width=1920, height=1200,
    offset_x=0, offset_y=0,
)

关键方法

方法说明
list_cameras()枚举系统中所有 Spinnaker 相机
setup_acquisition(**kwargs)配置 ROI、曝光、像素格式等
start_acquisition(nframes)开始采集指定帧数
read_multiple_images(nframes)读取已采集图像
get_device_info()获取相机序列号、型号、固件版本

常用属性操作

通过 GenAPI 节点名称直接读写相机参数:

# 设置增益
cam.set_attribute("Gain", 10.0)
# 启用自动曝光
cam.set_attribute("ExposureAuto", "Continuous")
# 获取传感器温度
temp = cam.get_attribute("DeviceTemperature")

设备配置

"monitor_cam": {
    "type": "local",
    "module": "drivers.teledyne.spinnaker",
    "class": "TeledyneSpinnakerCamera",
    "arguments": {"cam_id": 0},
}
  • stop(): Stop capturing images.

  • quatm.drivers.blackfly.bfly.Camserver(name, serial)

    class quatm.drivers.blackfly.bfly.Camserver(object):
        def __init__(self, name, serial):
            pass
    
        def generateImageIndex(self):
            pass
    
        def run(self):
            pass
    
        def sendimage(self, im):
            pass
    
        def updateBusInfo(self):
            pass
    
    • generateImageIndex(): In the current measurement, count the images. If the next run has started (either task, repetition or run changes), reset the counter (imgindex).

    • run(): Run loop running forever. Sends images from the camera to the imagestream and initiates reconfiguration of the camera in case properties have changed.

    • sendimage(im): Send Blackfly camera image via the imagestream. The image is converted to numpy array, additional information like binning, timestamp, etc., is added to a dictionary and both are sent to the imagestream.

      • Args: im - Blackfly image object.
      • Returns: None
    • updateBusInfo(): Detect cameras on the bus and update info in properties if new camera has been found.

  • quatm.drivers.blackfly.bfly.pc2

    class quatm.drivers.blackfly.bfly.pc2(object):
        pass
    
    • Dummy class in case driver is not installed.

Function:

  • quatm.drivers.blackfly.bfly.run(name)

    def quatm.drivers.blackfly.bfly.run(name):
        pass
    
    • Initialize a Camserver and run it.

Thorlabs TSI / uc480

Thorlabs 科学相机

Quatm 支持多类 Thorlabs 设备,包含位移台、光学测量仪器与相机。

TLCamera 科学相机 ThorlabsTLCamera

⚙️ TSI 系列 Thorlabs 科学相机
通信TLCamera SDK
接口USB3
传感器sCMOS / CCD
支持ROI, binning
适用于需要 SDK 级别控制的高帧率科学成像。
驱动模块:ThorlabsTLCamera
from quatm.drivers.thorlabs.TLCamera import ThorlabsTLCamera
cam = ThorlabsTLCamera(serial="12345678")

---

## Basler — Pylon SDK 系列

⚙️ Basler ace / dart Pylon SDK 系列
通信 Pylon SDK (GenICam)
接口 USB3 / GigE
传感器 CMOS
像素格式 Mono8/16, Bayer
功能 ROI, Binning, 硬件触发
工业级 CMOS 相机,适合 MOT 荧光监测、对准光束成像等常规实验室成像任务。
驱动模块:BaslerPylonCamera
```python from quatm.drivers.Basler.pylon import BaslerPylonCamera # 枚举全部相机 cams = BaslerPylonCamera.list_cameras() cam = BaslerPylonCamera(cam_id=cams[0]) cam.setup_acquisition(exposure=0.02) cam.start_acquisition(nframes=1)

Hamamatsu ORCA 系列 sCMOS

⚙️ ORCA-Fusion / ORCA-Flash4.0 Hamamatsu DCAM
通信DCAM SDK (DLL)
传感器sCMOS
像素2048×2048 (Fusion)
帧率最高 100 fps
读出噪声< 1.6 e⁻
超低噪声 sCMOS,适用于单原子/单离子荧光定量成像。
驱动模块:DCAMCamera
from quatm.drivers.DCAM.DCAM import DCAMCamera

cam = DCAMCamera(idx=0)
cam.setup_acquisition(exposure=0.1, pixel_format="Mono16")

Photometrics Prime / Evolve 系列

⚙️ Prime BSI / Evolve EMCCD Photometrics PVCAM
通信PVCAM SDK (DLL)
传感器背照式 sCMOS / EMCCD
接口PCIe / USB3
像素深度16-bit
背照式 sCMOS 提供高量子效率;EMCCD 型号支持单光子灵敏度。
驱动模块:PVCAMCamera
from quatm.drivers.Photometrics.pvcam import PVCAMCamera

cam = PVCAMCamera(cam_name="Prime_BSI_95B")
cam.setup_acquisition(exposure=0.05)

Princeton Instruments PIXIS / ProEM

⚙️ PIXIS / ProEM / IsoPlane Princeton PICam
通信PICam SDK (DLL)
传感器CCD / EMCCD
制冷液氮 / TEC
接口PCIe / USB
光谱学级 CCD/EMCCD,常与 Acton/IsoPlane 光谱仪配合使用。
驱动模块:PicamCamera
from quatm.drivers.PrincetonInstruments.picam import PicamCamera

cam = PicamCamera(cam_id=0)
cam.setup_acquisition(exposure=1.0)  # 长曝光光谱采集

PCO edge / dimax 高速相机

⚙️ edge / dimax / pco.panda PCO SC2
通信SC2 SDK (DLL)
接口CameraLink HS / USB3 / GigE
帧率最高数千 fps
传感器sCMOS / 高速 CMOS
适合快速动力学过程:MOT 装载动态、离子晶体重排实时观测。
驱动模块:PCOSC2Camera
from quatm.drivers.PCO.SC2 import PCOSC2Camera

cam = PCOSC2Camera(interface="USB 3.0")
cam.setup_acquisition(exposure=0.001)  # 1 ms 高速采集

Allied Vision Alvium / Mako

⚙️ Alvium / Mako / Bonito Allied Vision Vimba X
通信VimbaX SDK (GenICam)
接口USB3 / GigE / CameraLink
传感器CMOS
紧凑型工业相机,适合空间受限的光路集成。
驱动模块:AlliedVisionVimbaXCamera
from quatm.drivers.AlliedVision.VimbaX import AlliedVisionVimbaXCamera

cam = AlliedVisionVimbaXCamera(cam_id=0)

IDS uEye+ / Ensenso

⚙️ uEye+ / Ensenso 3D IDS peak
通信IDS peak SDK
接口USB3 / GigE
传感器CMOS
通用 USB/GigE 相机,包括 Ensenso 3D 立体相机。
驱动模块:GenericIDSPeakCamera
from quatm.drivers.IDS.peak import GenericIDSPeakCamera

cam = GenericIDSPeakCamera(cam_id=0)

通用配置范式

所有相机通过 device_db.pytype: "local" 注册:

"imaging_cam": {
    "type": "local",
    "module": "drivers.Basler.pylon",
    "class": "BaslerPylonCamera",
    "arguments": {"cam_id": 0},
}