STURDeCAM57:5MP全局快门RGB-IR摄像头,DMS/OMS全天候成像方案

STURDeCAM57:5MP全局快门RGB-IR摄像头,DMS/OMS全天候成像方案

来源: e-con Systems + NVIDIA Jetson AGX Orin
发布时间: 2026年3月
链接: https://www.roboticstomorrow.com/news/2026/04/01/e-con-systems-launches-sturdecam57


核心洞察

RGB-IR全局快门方案优势:

  • 日夜自动切换:RGB白天成像 + IR夜间补光
  • 全局快门消除运动模糊
  • GMSL2接口支持长距离传输
  • 符合车规级可靠性要求

一、硬件规格

1.1 核心参数

参数 数值 说明
传感器 Sony IMX490 5MP CMOS
分辨率 2848×1864 5.3MP
快门类型 全局快门 无运动模糊
帧率 60fps @ 5MP 全分辨率
输出接口 GMSL2 15m传输距离
IR灵敏度 850nm/940nm 双波段红外

1.2 RGB-IR工作模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
"""
RGB-IR摄像头工作模式配置
"""

class RGBIRCameraController:
"""
RGB-IR摄像头控制器

工作模式:
1. RGB模式:白天,可见光成像
2. IR模式:夜间,红外补光成像
3. RGB-IR融合:低光环境,可见光+红外融合
"""

def __init__(self):
self.current_mode = 'RGB'
self.ir_led_power = 0 # 0-100%

def auto_switch_mode(self, lux: float, motion_detected: bool = False):
"""
根据环境光照自动切换模式

Args:
lux: 环境光照度 (lux)
motion_detected: 是否检测到运动
"""
if lux > 100:
# 白天:RGB模式
self.set_mode('RGB')
self.ir_led_power = 0

elif lux > 10:
# 低光:RGB-IR融合模式
self.set_mode('RGB_IR_FUSION')
self.ir_led_power = 30

else:
# 夜间:纯IR模式
self.set_mode('IR')
self.ir_led_power = 80 if motion_detected else 50

def set_mode(self, mode: str):
"""设置工作模式"""
valid_modes = ['RGB', 'IR', 'RGB_IR_FUSION']
if mode not in valid_modes:
raise ValueError(f"Invalid mode: {mode}")

self.current_mode = mode

# 实际实现:发送I2C/SPI命令
print(f"切换模式: {mode}")

def get_capture_config(self) -> dict:
"""获取当前采集配置"""
configs = {
'RGB': {
'exposure_time': 10000, # μs
'gain': 1.0,
'ir_filter': True, # IR截止滤镜
'white_balance': 'auto'
},
'IR': {
'exposure_time': 30000,
'gain': 2.0,
'ir_filter': False,
'white_balance': 'off'
},
'RGB_IR_FUSION': {
'exposure_time': 20000,
'gain': 1.5,
'ir_filter': False,
'white_balance': 'auto'
}
}

return configs[self.current_mode]


# 测试代码
if __name__ == "__main__":
controller = RGBIRCameraController()

# 模拟不同光照条件
test_cases = [
{'lux': 500, 'desc': '白天室外'},
{'lux': 50, 'desc': '阴天室内'},
{'lux': 5, 'desc': '夜间隧道'},
{'lux': 0.5, 'desc': '夜间无照明'},
]

for case in test_cases:
controller.auto_switch_mode(case['lux'])
config = controller.get_capture_config()
print(f"\n{case['desc']} ({case['lux']} lux):")
print(f" 模式: {controller.current_mode}")
print(f" IR补光: {controller.ir_led_power}%")
print(f" 曝光时间: {config['exposure_time']}μs")

二、全局快门 vs 卷帘快门

2.1 技术对比

特性 全局快门 卷帘快门
曝光方式 所有像素同时曝光 逐行曝光
运动模糊 高速运动时有果冻效应
动态范围 较低(~70dB) 较高(~120dB)
噪声 稍高 较低
成本 较高 较低
适用场景 高速运动、DMS/OMS 静态/低速场景

2.2 DMS场景优势

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""
全局快门在DMS场景的优势演示
"""

import numpy as np
import cv2

class ShutterComparison:
"""快门类型对比"""

def simulate_rolling_shutter_distortion(self, image: np.ndarray,
velocity: float) -> np.ndarray:
"""
模拟卷帘快门畸变

Args:
image: 原始图像 (H, W, 3)
velocity: 运动速度 (pixels/frame)

Returns:
distorted: 畸变后图像
"""
h, w = image.shape[:2]
distorted = np.zeros_like(image)

# 逐行位移
for row in range(h):
shift = int(velocity * row / h)
distorted[row] = np.roll(image[row], shift, axis=0)

return distorted

def calculate_distortion_score(self, original: np.ndarray,
distorted: np.ndarray) -> float:
"""计算畸变程度"""
# 使用结构相似度
from skimage.metrics import structural_similarity as ssim

gray_orig = cv2.cvtColor(original, cv2.COLOR_RGB2GRAY)
gray_dist = cv2.cvtColor(distorted, cv2.COLOR_RGB2GRAY)

score = ssim(gray_orig, gray_dist)
distortion = 1 - score

return distortion


# 测试
if __name__ == "__main__":
# 模拟驾驶员转头(高速运动)
# 假设转头速度 60°/s,摄像头30fps
# 转头90°需要500ms = 15帧
# 每帧位移 = 图像宽度 * 0.1 (假设面部占1/3宽度)

test_image = np.random.randint(0, 255, (720, 1280, 3), dtype=np.uint8)

comp = ShutterComparison()

# 卷帘快门畸变
distorted = comp.simulate_rolling_shutter_distortion(test_image, velocity=100)
score = comp.calculate_distortion_score(test_image, distorted)

print(f"卷帘快门畸变程度: {score:.2%}")
print("全局快门畸变程度: 0.00%")

三、系统集成

3.1 Jetson AGX Orin集成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
"""
NVIDIA Jetson AGX Orin集成方案
"""

import jetson.inference
import jetson.utils

class DMSJetsonPipeline:
"""
基于Jetson AGX Orin的DMS管道

硬件配置:
- STURDeCAM57摄像头(GMSL2接口)
- Jetson AGX Orin 64GB
- IR补光灯(940nm)
"""

def __init__(self):
# 初始化摄像头
self.camera = jetson.utils.gstCamera(
2848, 1864, # 5MP分辨率
'0' # GMSL2摄像头设备
)

# 初始化DMS网络
self.dms_net = jetson.inference.detectNet(
'dms-model.onnx',
threshold=0.5
)

# 初始化显示
self.display = jetson.utils.glDisplay()

def capture_frame(self) -> np.ndarray:
"""采集帧"""
# 摄像头采集
frame, width, height = self.camera.CaptureRGBA()

# 转换为numpy
frame_np = jetson.utils.cudaToNumpy(frame, width, height, 4)

# RGBA → RGB
frame_rgb = frame_np[:, :, :3]

return frame_rgb

def process_frame(self, frame: np.ndarray) -> dict:
"""处理帧"""
# 检测面部
detections = self.dms_net.Detect(frame, overlay='box,labels,conf')

results = {
'faces': [],
'eye_closure': 0.0,
'gaze_direction': (0, 0),
'head_pose': (0, 0, 0)
}

for d in detections:
if d.ClassID == 1: # 面部
results['faces'].append({
'bbox': (d.Left, d.Top, d.Right, d.Bottom),
'confidence': d.Confidence
})

return results

def run(self):
"""主循环"""
while self.display.IsOpen():
# 采集
frame = self.capture_frame()

# 处理
results = self.process_frame(frame)

# 显示
self.display.RenderOnce(frame, frame.shape[1], frame.shape[0])

# 输出结果
print(f"检测到 {len(results['faces'])} 个面部")

3.2 GMSL2接口优势

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
"""
GMSL2接口配置与优势
"""

# GMSL2参数配置
gmsl2_config = {
'max_cable_length': 15, # meters
'data_rate': 6, # Gbps
'latency': 150, # ns
'power_over_cable': True, # PoC支持

# 对比FPD-Link III
'comparison': {
'GMSL2': {
'bandwidth': '6 Gbps',
'cable_length': '15m',
'cable_type': '同轴电缆/双绞线',
'cost': '中等'
},
'FPD-Link III': {
'bandwidth': '4.16 Gbps',
'cable_length': '10m',
'cable_type': '同轴电缆/双绞线',
'cost': '中等'
},
'MIPI CSI-2': {
'bandwidth': '2.5 Gbps/lane',
'cable_length': '0.3m',
'cable_type': 'PCB走线',
'cost': '低'
}
}
}

四、DMS/OMS应用场景

4.1 典型安装位置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
┌─────────────────────────────────────┐
│ 车顶控制台 │
│ ┌──────────────────────┐ │
│ │ STURDeCAM57 (DMS) │ ← 驾驶员监控
│ │ 朝向驾驶员,45°仰角 │ │
│ └──────────────────────┘ │
│ │
│ ┌──────────────────────┐ │
│ │ STURDeCAM57 (OMS) │ ← 乘员监控
│ │ 朝向后排,60°俯角 │ │
│ └──────────────────────┘ │
│ │
│ ┌────┐ ┌────┐ │
│ │驾驶员│ │副驾│ │
│ └────┘ └────┘ │
│ │
│ ┌────────────────┐ │
│ │ 后排座椅 │ │
│ └────────────────┘ │
└─────────────────────────────────────┘

4.2 视场角设计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"""
DMS/OMS视场角设计
"""

# DMS摄像头视场角
dms_fov = {
'horizontal': 54, # degrees
'vertical': 40, # degrees
'distance': 0.5, # meters (摄像头到驾驶员距离)
'coverage': {
'width': 0.5, # meters
'height': 0.4 # meters
}
}

# OMS摄像头视场角
oms_fov = {
'horizontal': 120, # degrees (广角)
'vertical': 90, # degrees
'distance': 1.5, # meters (摄像头到后排距离)
'coverage': {
'width': 3.0, # meters
'height': 2.0 # meters
}
}

def calculate_fov_coverage(focal_length_mm: float,
sensor_width_mm: float) -> float:
"""计算视场角"""
import math
fov = 2 * math.atan(sensor_width_mm / (2 * focal_length_mm))
return math.degrees(fov)

# STURDeCAM57视场角计算
focal_length = 6 # mm (典型值)
sensor_width = 7.4 # mm (IMX490)
fov = calculate_fov_coverage(focal_length, sensor_width)
print(f"水平视场角: {fov:.1f}°")

五、IMS开发启示

5.1 硬件选型建议

应用 摄像头数量 安装位置 视场角
DMS 1 方向柱/A柱 54° H × 40° V
OMS前排 1 仪表台上方 90° H × 60° V
OMS后排 1-2 车顶中央/后视镜 120° H × 90° V
CPD 1 车顶后方 120° H × 90° V

5.2 IR补光设计

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
"""
IR补光系统设计
"""

class IRIlluminator:
"""IR补光控制器"""

def __init__(self, wavelength: int = 940):
"""
Args:
wavelength: 红外波长 (850nm 或 940nm)
"""
self.wavelength = wavelength

# 940nm vs 850nm对比
self.wavelength_comparison = {
850: {
'visibility': '可见红光',
'penetration': '较好',
'cost': '低',
'comfort': '较差(可见红光)'
},
940: {
'visibility': '不可见',
'penetration': '一般',
'cost': '中',
'comfort': '好(完全不可见)'
}
}

def calculate_power(self, distance: float,
min_lux: float = 10) -> float:
"""
计算所需补光功率

Args:
distance: 距离 (meters)
min_lux: 最小照度 (lux)

Returns:
power: 功率 (W)
"""
# 简化计算:E = P / (4π * d²)
# P = E * 4π * d²

import math
power = min_lux * 4 * math.pi * (distance ** 2)

# 考虑IR LED效率(约30%)
power /= 0.3

return power


# 设计示例
if __name__ == "__main__":
# DMS场景(0.5m距离)
illuminator = IRIlluminator(940)
power_dms = illuminator.calculate_power(0.5, min_lux=20)
print(f"DMS IR补光功率: {power_dms:.1f}W")

# OMS场景(1.5m距离)
power_oms = illuminator.calculate_power(1.5, min_lux=15)
print(f"OMS IR补光功率: {power_oms:.1f}W")

5.3 成本分析

组件 型号 成本
摄像头模块 STURDeCAM57 $80-120
IR补光灯 SFH 4740 × 4 $10
处理器 Jetson AGX Orin $500-800
线缆 GMSL2同轴线 $5
单摄像头方案 - $100-150

5.4 性能指标

指标 目标值 测试方法
帧率 ≥30fps @ 5MP 全分辨率采集
延迟 <50ms 图像采集到处理完成
夜间检测率 >95% 低光环境测试
运动模糊 <1 pixel 驾驶员快速转头测试

六、总结

维度 评估 备注
创新性 ⭐⭐⭐⭐ RGB-IR全局快门一体化
实用性 ⭐⭐⭐⭐⭐ 符合车规级要求
可复现性 ⭐⭐⭐⭐⭐ 标准GMSL2接口
部署难度 ⭐⭐⭐ 需车规级认证
IMS价值 ⭐⭐⭐⭐ 硬件选型参考

优先级: 🔥🔥🔥🔥
建议落地: 作为DMS/OMS摄像头硬件选型


参考文献

  1. e-con Systems. “STURDeCAM57 5MP RGB-IR Camera.” 2026.
  2. Sony. “IMX490 CMOS Image Sensor Datasheet.” 2025.
  3. NVIDIA. “Jetson AGX Orin Developer Kit Guide.” 2025.

发布时间: 2026-04-23
标签: #RGB-IR摄像头 #全局快门 #DMS硬件 #OMS #GMSL2 #JetsonOrin #IMS开发


STURDeCAM57:5MP全局快门RGB-IR摄像头,DMS/OMS全天候成像方案
https://dapalm.com/2026/04/23/2026-04-23-rgb-ir-global-shutter-camera-dms/
作者
Mars
发布于
2026年4月23日
许可协议