摄像头

关于摄像头模块

现有若干款树莓派官方摄像头模块。最早的 500 万像素型号发布于 2013 年,随后于 2016 年发布了 800 万像素的摄像头模块 2。最新款的摄像头是发布于 2023 年的 1200 万像素的摄像头模块 3。最早的 500 万像素摄像头树莓派现已停产。

上述所有摄像头都有可见光和红外夜视版本。除此之外,摄像头模块 3 还带有标准、广角类型,总计四种不同的版本。

摄像头模块 3 标准版和广角版

摄像头模块 3(左)和摄像头模块 3 广角(右)

摄像头模块 3 红外夜视标准版和红外夜视广角版

摄像头模块 3 红外夜视(左)和摄像头模块 3 红外夜视广角(右)

此外,于 2020 年推出了可与外置镜头搭配使用的 1200 万像素的高质量摄像头,配有 CS 卡口——于 2023 年推出了 M12 卡口。高质量(HQ)摄像头没有红外夜视版本,但可根据需要拆除红外滤镜。

高质量(HQ)摄像头,M12 卡口(左)和 C/CS 卡口(右)

高质量(HQ)摄像头,M12 卡口(左)和 C/CS 卡口(右)

最后,有全局快门相机(发布于 2023 年)。GS 相机没有红外版本(但如有需要,也可拆除红外滤镜)。

全局快门摄像头

全局快门相机

注意

树莓派摄像头模块同所有搭载了 CSI 接口的树莓派计算机均兼容——即仅与树莓派 400 和旧版 Zero 不兼容。

卷帘快门还是全局快门?

大多数数码相机,包括我们的摄像头模块,都使用 卷帘快门:它们会对正在捕捉的图像逐行扫描,然后输出结果。你可能已经注意到,在某些情况下,这可能会造成失真效果;如果你曾经拍摄过旋转的螺旋桨叶片,你可能已经注意到了,场景在晃动,看起来不像一个正在旋转的物体。螺旋桨叶片有足够的时间在相机扫过和观察场景的瞬间内变更位置。

全局快门 不会这样做,就像我们的全局快门摄像头模块上的那个。它能一次性捕捉场景中每个像素的光线,因此你拍摄的螺旋桨叶片照片不会遇到相同的失真问题。

这有什么用呢?高速移动的物体,比如那些螺旋桨叶片,现在很容易捕捉到;我们还可以同步多台摄像头在同一时刻拍摄照片。这有很多好处,比如在捕捉立体图像时最小化失真。(如果左眼出现的运动尚未出现在右眼中,人类大脑会感到困惑。)树莓派全局快门摄像头还可以在较短的曝光时间内运行——在足够的光线下可达到 30 微秒。而卷帘快门相机则无法做到,这使全局快门在高速摄影中非常有用。

注意

全局快门摄像头的图像传感器带有 6.3 毫米对角线活动感应区域,与树莓派的高质量(HQ)摄像头大小类似。但像素更大,可以收集更多光线。大像素尺寸和低像素计数在机器视觉应用中非常有好处;传感器产生的像素越多,实时处理图像就越困难。为了解决这个问题,许多应用程序会缩小和裁剪图像。使用全局快门摄像头和适当的镜头放大倍率,是无必要的,因为较低的分辨率和较大的像素尺寸意味着可以原生捕捉图像。

安装树莓派摄像头

警告

摄像头对静电极为敏感。在处理 PCB 之前请先将自己接地。如果没有接地带,水龙头和类似物品大概也行。

连接摄像头

将柔性电缆插入到树莓派上标有摄像头的接口中,该接口位于以太网口和 HDMI 口间。电缆必须以银色接触面朝向 HDMI 口插入。要打开接口,请将接口顶部的标签向上拉,然后朝向以太网口。柔性电缆应牢固插入接口中,注意不要使电缆以太锐角度弯曲。要关闭接口,请将接口顶部部分向 HDMI 口推下,同时保持线缆位置固定。

我们制作了一个视频来演示连接摄像头的过程。虽然视频中显示的是旧的树莓派 1 上的旧款摄像头,但对于所有摄像头模块,原理都是相通的。

根据型号而定,摄像头可能会附带一小片半透明蓝色塑料薄膜覆盖镜头。这只是为了在邮寄给你时保护镜头,使用时需将它轻轻剥下来。

注意

高质量(HQ)摄像头上推荐的 6mm、16mm 镜头有其他的文档说明。

准备软件

在继续之前,我们建议,确保你的内核、GPU 固件和应用程序都是最新版本。请参照保持操作系统最新的说明。

然后,请按照 rpicam-apps 的相关设置说明以及 Picamera2 Python 库。

硬件规格

摄像头模块 1摄像头模块 2摄像头模块 3摄像头模块 3 广角高清(HQ)摄像头全局快门(GS)摄像头

净价

$25

$25

$25

$35

$50

$50

尺寸

大约 25 × 24 × 9 mm

大约 25 × 24 × 9 mm

大约 25 × 24 × 11.5 mm

大约 25 × 24 × 12.4 mm

38 x 38 x 18.4mm(不含镜头)

38 x 38 x 19.8 mm(搭配适配器和防尘盖则为 29.5 mm)

重量

3 g

3g

4g

4g

30.4 g

34 g(搭配适配器和防尘盖则 41 g)

静态分辨率

500 万像素

800 万像素

1190 万像素

1190 万像素

1230 万像素

1.58 百万像素

视频模式

1080p30,720p60 和 640 × 480p60/90

1080p47,1640 × 1232p41 和 640 × 480p206

2304 × 1296p56,2304 × 1296p30 HDR,1536 × 864p120

2304 × 1296p56,2304 × 1296p30 HDR,1536 × 864p120

2028 × 1080p50,2028 × 1520p40 和 1332 × 990p120

1456 x 1088p60

传感器

OmniVision OV5647

索尼 IMX219

索尼 IMX708

索尼 IMX708

索尼 IMX477

索尼 IMX296

传感器分辨率

2592 × 1944 像素

3280 × 2464 像素

4608 x 2592 像素

4608 x 2592 像素

4056 x 3040 像素

1456 x 1088 像素

传感器图像区域

3.76 × 2.74 mm

3.68 x 2.76 mm(对角线为 4.6 mm)

6.45 x 3.63 mm(对角线 7.4 mm)

6.45 x 3.63 mm(对角线 7.4 mm)

6.287 mm x 4.712 mm(对角线 7.9 mm)

6.3 mm 对角线

像素大小

1.4 µm × 1.4 µm

1.12 µm x 1.12 µm

1.4 µm x 1.4 µm

1.4 µm x 1.4 µm

1.55 µm x 1.55 µm

3.45 µm x 3.45 µm

光学尺寸

1/4 英寸

1/4 英寸

1/2.43 英寸

1/2.43 英寸

1/2.3 英寸

1/2.9 英寸

焦点

固定

可调

电动

电动

可调

可调

景深

大约 1 米到 ∞

大约 10 厘米到 ∞

大约 10 厘米到 ∞

大约 5 厘米到 ∞

不适用

不适用

景深

大约 1 m 到 ∞

大约 10 cm 到 ∞

大约 10 cm 到 ∞

大约 5 cm 到 ∞

不适用

不适用

焦距

3.60 mm +/- 0.01

3.04 mm

4.74 mm

2.75 mm

取决于镜头

取决于镜头

水平视场角(FoV)

53.50 +/- 0.13°

62.2°

66°

102°

取决于镜头

依赖于镜头

垂直视场角(FoV)

41.41 +/- 0.11°

48.8°

41°

67°

取决于镜头

取决于镜头

焦距比(光圈)

F2.9

F2.0

F1.8

F2.2

取决于镜头

取决于镜头

最大曝光时间(秒)

0.97

11.76

112

112

670.74

15.5

镜头卡口

不适用

不适用

无法适用

无法适用

C/CS 和 M12 卡口

C/CS

有无 NoIR(红外夜视)版本?

注意

有证据表明,摄像头模块 3 可能会以 CSI 时钟速率的谐波发射射频干扰。这种射频干扰的范围可能会干扰 GPS L1 频率(1575 MHz)。请参阅 Github 上的主题以获取详细信息和提出的解决方法。

机械图纸

可用的机械图纸;

  • 摄像头模块 2 PDF

  • 摄像头模块 3 PDF

  • 摄像头模块 3 宽幅 PDF

  • 摄像头模块 3 STEP 文件

  • HQ 摄像头模块(CS 卡口版本)PDF

    • CS 接口 PDF

  • HQ 摄像头模块(M12 卡口版本)PDF

  • GS 摄像头模块 PDF

注意

摄像头模块 3 的主板尺寸和安装孔位置与摄像头模块 2 相同。但是,由于传感器模块尺寸和位置的变化,它与树莓派 Zero Case 的摄像头外壳不具备机械兼容性。

框图

树莓派 CSI 摄像头连接器的原理图。

摄像头连接器

其他可用的原理图;

  • 摄像头模块 2 PDF

  • 摄像头模块 3 PDF

  • HQ 摄像头模块 PDF

摄像头滤镜

摄像头模块 3 和 HQ 和 GS 摄像头的一些传输特性可用。

注意

这些图表可用作 PDF 文件。

摄像头模块 3

摄像头模块 3 是基于 IMX708 开发的,具有以下光谱灵敏度特性。

摄像头模块 3 传输图

HQ 摄像头

树莓派 HQ 摄像头没有红外切除滤镜。

不带红外滤光片的 HQ 相机传输图

GS 摄像头

树莓派 GS 摄像头,无红外切换滤镜。

不带红外滤光片的 GS 相机传输图

HQ 和 GS 摄像头

HQ 和 GS 相机使用 Hoya CM500 红外滤光片。其透射特性如下图所示。

CM500 传输图

拆卸滤光片

注意

该程序适用于 HQ 和 GS 相机。

警告

该步骤无法逆转:连接滤镜的粘合剂在被揭起并更换后将无法维持,而红外滤镜厚约 1.1 mm,在被移除时可能会破裂。移除它将失去保修。然而,对一些用户来说,移除滤镜是可取的。

小号滤镜

高质量摄像头和全局快门摄像头都包含一个红外滤镜,用于降低摄像头对红外光的敏感性。它使得户外照片看起来更自然。然而,可以通过移除此滤镜来增强一些自然摄影;天空、植物和水的颜色可能会受到其移除的影响。在受红外光照明的地方,摄像头也可以在没有滤镜的情况下用于夜视。

警告

在继续之前,请阅读所有步骤并决定是否愿意使保修失效。除非你确定愿意放弃保修,否则不要继续。

要摘掉滤镜:

  • 请在干净无尘的环境中工作,因为传感器将暴露在空气中。

  • 在主电路板底部的两个 1.5 mm 六角锁定键上拧下。小心不要让触点圈滚开。在外壳和 PCB 之间有一层略带粘性的触点片,需要用一点力气才能分开。

拆下小螺丝
  • 将板子抬起并放在特别干净的表面上。确保传感器不会触及表面。

平面图
  • 你可以尝试一些方法来溶解粘合剂,例如少量异丙醇、加热(~20-30 °C)。

一些溶剂
  • 将镜头底座转过来,使其朝上,并放在桌子上。

  • 使用钢笔盖或类似软塑料物品,仅在玻璃与铝相连接的边缘处施加压力,以最大程度降低破坏滤镜的风险。胶水会断裂,滤镜会从镜头座上脱落。

拆下的小滤镜
  • 鉴于更换镜头会暴露传感器,此时你可以固定一个透明滤镜(例如 OHP 塑料)以最小化灰尘进入传感器腔的机会。

  • 将主机壳体放回电路板上。务必将壳体与仍留在电路板上的触点圈重新对齐。

  • 尼龙触点圈可防止电路板受损;先放置这个触点圈。接着,放置钢触点圈,可防止尼龙触点圈受损。

  • 将两个六角锁紧键拧紧。只要触点圈按正确顺序安装,就不需要拧得太紧。

已经拆下的滤镜

注意

可能很难或压根没法通过将滤镜粘回原位来使设备恢复正常光学相机的功能。

推荐镜头

以下镜头建议与我们的 HQ 和 GS 摄像头一起使用。

注意

虽然 HQ 摄像头有 C/CS 和 M12 卡口版本,但 GS 摄像头仅有 C/CS 安装版本。

C/CS 镜头

我们推荐两款镜头,一款 6mm 广角镜头和一款 16mm 远摄镜头。这些镜头应该可以在你最近的授权经销商处购买到。

16mm 远摄6 mm 广角

分辨率

10MP

3MP

图像格式

1"

1/2"

光圈

F1.4 至 F16

F1.2

卡口

C

CS

视场角水平°×垂直°(对角°)

HQ

22.2°×16.7° (27.8°)

GS

17.8°×13.4° (22.3)

45°×34° (56°)

背焦距

17.53 mm

7.53 mm

M.O.D.

0.2 m

0.2 m

尺寸

φ39.00×50.00 mm

φ30×34 mm

M12 卡口

m12 卡口

我们推荐由高嘉光电制造的三款镜头。这些镜头应该可以从你最近的授权经销商那里购买。

8 mm25 mm鱼眼

分辨率

12MP

5MP

15MP

图像格式

1/1.7 英寸

1/2 英寸

1/2.3 英寸

光圈

F1.8

F2.4

F2.5

安装

M12

HQ 视场角 H°×V° (D°)

49°×36° (62°)

14.4°×10.9° (17.9)°

140°×102.6° (184.6°)

同步捕获

HQ 摄像头和全局快门摄像头都支持同步捕获。利用 XVS 引脚(垂直同步)使一台摄像头在启动帧捕获时脉冲。另一台摄像头可以监听此同步脉冲,并在另一台摄像头同时捕获帧。

使用 HQ 摄像头

为了正确运行,两个摄像头都需要在 XVS 线上提供 1.65V 的上拉电压,这是通过树莓派上的 3.3V 和 GND 引脚通过电位分压器创建的。

从两个 10kΩ 电阻器到 3.3V 和地(通过有效源阻抗为 5kΩ 制造 1.65V)创建一个电位分压器。这可以连接到任一款树莓派。

将每个 HQ 摄像头板的 GND 和 XVS 测试点焊接在一起。

将 XVS 线连接到 1.65V 电位分压上拉电阻。

启动两台树莓派

文件 /sys/module/imx477/parameters/trigger_mode 可确定哪个板输出脉冲,或等待接收脉冲(接受端和发送端)。此参数只能在超级用户模式下更改。

在接收端运行:

sudo su
echo 2 > /sys/module/imx477/parameters/trigger_mode
exit

在发送端运行:

sudo su
echo 1 > /sys/module/imx477/parameters/trigger_mode
exit

启动接收端,运行:

rpicam-vid --frames 300 --qt-preview -o sink.h264

启动发送端,运行

rpicam-vid --frames 300 --qt-preview -o source.h264

帧应该是同步的。使用 --frames 来确保捕获相同数量的帧,并且录制的长度完全相同。首先运行接收器可以确保不会丢失任何帧。

注意

需要电位分压器将 XVS 引脚拉高,同时源处于空闲状态。这可以确保在启动时不会创建或丢失任何帧。源在初始化时从低电平变为高电平,这可能会触发错误帧。

使用 GS 摄像头

注意

全局快门(GS)摄像头也可以在同步模式下操作。然而,源摄像头将记录一帧额外的画面。确保两台摄像头捕获相同数量帧的一个更好的替代方法是使用外部触发方法。

要作为源和接收器一起运行,全局快门摄像头还需要将 XHS(水平同步)引脚连接在一起。然而,这些不需要连接到上拉电阻。

与 HQ 摄像头方法相同,接线设置相同,只是你还需要将 XHS 引脚连接在一起。

从两个 10kΩ 电阻器中创建一个电位分压器,连接到 3.3V 和地(以使 1.65V,有效源阻抗为 5kΩ)。这可以连接到任一树莓派。

在每个板上的 XVS 测试点上焊接 2 根导线,并将这两根导线连接到 1.65V 电位分压器。

将每个摄像头板的 GND 焊接在一起。还要在每个板的 XHS 测试点上焊接 2 根导线并连接它们。XHS 引脚不需要上拉。

在你希望作为接收端的板上,将 MAS 焊盘的两半焊接在一起。这告诉传感器要作为接收端,并等待信号来捕获一帧。

启动发送端和接收端。

启动接收端,运行:

rpicam-vid --frames 300 -o sync.h264

在启动发送之前允许延迟(见下面的说明)。需要大约 > 2 秒。

启动发送端,运行:

rpicam-vid --frames 299 -o sync.h264
ffmpeg -i source.h264 -vf select="gte(n\, 1)" source.h264

GS 相机的外部触发

全局快门(GS)相机可以通过在板上标记为 XTR 的外部触发(脉冲)连接来进行外部触发。多个相机可以连接到同一个脉冲,从而实现同步两个相机的另一种方式。

曝光时间等于低脉冲宽度时间加上额外的 14.26 微秒。即低脉冲为 10000 微秒时,曝光时间为 10014.26 微秒。帧速率直接受控于脉冲引脚的频率。30Hz 的 PWM 频率将导致帧速率为 30 帧每秒。

准备工作

警告

此修改包含了对一个 SMD 焊接部件的拆除。除非你觉得你有能力完成此修改,否则请勿尝试。在焊接到摄像头板时,请摘下塑料背盖以避免损坏。

如果你的主板上安装了晶体管 Q2(如下图蓝色所示),那么你需要从主板上移除 R11(如下图红色所示)。这将 GP1 连接到 XTR,如果不移除 R11,则摄像头将无法在外部触发模式下运行。组件的位置如下图所示。

接下来,在 GS 摄像头板的 XTR 和 GND 的触点上焊接一根导线。请注意,XTR 是 1.8V 输入,因此你可能需要电平转换器或电位分压器。

我们可以使用树莓派 Pico 来提供触发信号。将任意 Pico GPIO 引脚(此示例中使用 GP28)通过 1.5kΩ 电阻连接到 XTR。还要在 XTR 和 GND 间连接一个 1.8kΩ 电阻,以将高逻辑电平降低到 1.8V。下面显示了接线图。

连接摄像头后启动树莓派

通过超级用户模式启用外部触发:

sudo su
echo 1 > /sys/module/imx296/parameters/trigger_mode
exit

树莓派 Pico Mirco Python 代码

from machine import Pin, PWM

from time import sleep

pwm = PWM(Pin(28))

framerate = 30
shutter = 6000  # In microseconds

frame_length = 1000000 / framerate
pwm.freq(framerate)

pwm.duty_u16(int((1 - (shutter - 14) / frame_length) * 65535))

低脉冲宽度等于快门时间,PWM 的频率等于帧速率。

注意

在这个例子中,Pin 28 用于连接到 GS 摄像头板上的 XTR 触点。

操作

在 Pico 上运行代码,并启动摄像头:

rpicam-hello -t 0 --qt-preview --shutter 3000

每次 Pico 脉冲引脚时都应生成一帧。可接受可变帧速率,并且可以通过简单地改变脉冲之间的持续时间来控制。不需要传递什么参数给 rpicam-apps 来启用外部触发器。

注意

在运行工具 libcamera 时,你需要指定固定的快门持续时间(数值无所谓)。这将确保 AGC 不会尝试调整摄像头的快门速度,快门速度由外部触发脉冲控制。

最后更新于

FreeBSD 中文社区 2024