摄像头
简介 the Camera Modules
在 GitHub 上修改
现在有几种官方的 Raspberry Pi 摄像头模块。最初的 500 万像素型号是 2013 年发布的 发布,随后是 2016 年发布的 发布的 800 万像素 摄像头模块 2。最新的相机型号是 1200 万像素的 相机模块 3,于 2023 年 发布。树莓派已不再提供最初的 500 万像素设备。
所有这些相机都有可见光和红外版本,而相机模块3也有标准或宽FoV型号,共有四种不同的型号。


此外,分别是 1200 万像素的 高品质相机,带有 CS 或 M12 卡口变体,可与外置镜头配合使用,网址为 https://www.raspberrypi. com/news/new-product-raspberry-pi-high-quality-camera-on-sale-now-at-50/[2020年发布]和https://www.raspberrypi. com/news/new-autofocus-camera-modules/[2023]。HQ相机没有红外版本,但如果需要,可以使用 红外滤镜可以移除。

树莓派人工智能相机使用索尼IMX500成像传感器为任何相机应用提供低延迟和高性能AI功能。与 Raspberry Pi’s camera software stack 的紧密集成允许用户以最小的成本部署自己的神经网络模型。

最后是全局快门相机,它http://raspberrypi.com/news/new-raspberry-pi-global-shutter-camera[于2023年发布]。没有红外版本的GS相机,但是如果需要的话,有 可移除红外滤光片。

Note
|
所有带有CSI接口的Raspberry Pi计算机都可以使用Raspberry Pi相机模块。 |
Rolling or Global shutter?
大多数数码相机,包括我们的相机模块,都使用 滚动快门:它们逐行扫描正在拍摄的图像,然后输出结果。您可能已经注意到,这可能会在某些设置中导致失真效果;如果您曾经拍摄过旋转的螺旋桨叶片,您可能会发现图像闪烁,而不是看起来像一个正在旋转的物体。螺旋桨叶片有足够的时间在相机滑动并观察场景的微小瞬间改变位置。
一个 全局快门,就像我们的全局快门相机模块上的那个,不会这样做。它一次捕捉场景中每个像素的光线,所以你的螺旋桨叶片照片不会遭受同样的失真。
为什么这很有用?快速移动的物体,比如那些螺旋桨叶片,现在很容易捕捉;我们还可以同步几个相机,在完全相同的时间拍摄一张照片。这里有很多好处,比如在捕捉立体图像时最大限度地减少失真。(如果左眼出现的任何运动还没有出现在右眼,人脑会感到困惑。树莓派全局快门相机还可以在比滚动快门相机更短的曝光时间内运行——在光线充足的情况下,曝光时间可降至30微秒——这使得它对高速摄影很有用。
Note
|
全局快门相机的图像传感器有一个6.3毫米的对角线主动感应区域,大小与树莓派的HQ相机相似。但是,像素更大,可以收集更多的光。大像素尺寸和低像素数在机器视觉应用中很有价值;传感器产生的像素越多,实时处理图像就越困难。为了解决这个问题,许多应用缩小和裁剪图像。这对于全局快门相机和适当的镜头放大率来说是不必要的,其中较低的分辨率和大像素尺寸意味着可以本地捕获图像。 |
安装Raspberry Pi 相机
Warning
|
相机对静电很敏感。在处理PCB之前自己接地。如果你没有接地带,使用水槽水龙头或类似的东西就足够了。 |
连接相机
柔性电缆插入 Raspberry Pi 上标有 CAMERA 的连接器,该连接器位于以太网和 HDMI 端口之间。插入电缆时,银色触点必须朝向 HDMI 端口。要打开连接器,将连接器顶部的卡扣向上拉,然后拉向以太网端口。应将柔性电缆牢固地插入连接器,注意不要将柔性电缆弯曲得太厉害。要关闭连接器,请将连接器顶部向下推,远离以太网端口,同时将柔性电缆固定到位。
下面的视频展示了如何在 Raspberry Pi 1 上连接原装摄像头:
我们制作了一个视频来说明连接相机的过程。以下视频展示了如何在原始树莓派1上连接原始相机。所有带有相机连接器的树莓派板的原理都是一样的,尽管树莓派5和所有树莓派零型号都需要 different camera cable。
虽然 Raspberry Pi 5 和所有 Raspberry Pi Zero 型号都需要使用 不同的摄像头连接线,但所有带摄像头连接器的 Raspberry Pi 板都使用相同的安装方法。
有些摄像头的镜头上可能会覆盖一小块半透明的蓝色塑料薄膜。这只是为了在运输过程中保护镜头。要撕下它,请轻轻剥离。
软件准备
在继续之前,我们建议确保您的内核、GPU固件和应用程序都是最新的。请按照 保持最新操作系统 上的说明进行操作。
然后,请按照 rpicam-apps
, 和 Picamera2 Python 库 的相关设置说明进行操作。
硬件规格
Camera Module v1 | Camera Module v2 | Camera Module 3 | Camera Module 3 Wide | HQ Camera | AI Camera | GS Camera | |
---|---|---|---|---|---|---|---|
Net price |
$25 |
$25 |
$25 |
$35 |
$50 |
$70 |
$50 |
Size |
Around 25 × 24 × 9 mm |
Around 25 × 24 × 9 mm |
Around 25 × 24 × 11.5 mm |
Around 25 × 24 × 12.4 mm |
38 × 38 × 18.4mm (excluding lens) |
25 × 24 × 11.9mm |
38 × 38 × 19.8mm (29.5mm with adaptor and dust cap) |
Weight |
3g |
3g |
4g |
4g |
30.4g |
6g |
34g (41g with adaptor and dust cap) |
Still resolution |
5 megapixels |
8 megapixels |
11.9 megapixels |
11.9 megapixels |
12.3 megapixels |
12.3 megapixels |
1.58 megapixels |
Video modes |
1080p30, 720p60 and 640 × 480p60/90 |
1080p47, 1640 × 1232p41 and 640 × 480p206 |
2304 × 1296p56, 2304 × 1296p30 HDR, 1536 × 864p120 |
2304 × 1296p56, 2304 × 1296p30 HDR, 1536 × 864p120 |
2028 × 1080p50, 2028 × 1520p40 and 1332 × 990p120 |
2028 × 1520p30, 4056 × 3040p10 |
1456 × 1088p60 |
Sensor |
OmniVision OV5647 |
Sony IMX219 |
Sony IMX708 |
Sony IMX708 |
Sony IMX477 |
Sony IMX500 |
Sony IMX296 |
Sensor resolution |
2592 × 1944 pixels |
3280 × 2464 pixels |
4608 × 2592 pixels |
4608 × 2592 pixels |
4056 × 3040 pixels |
4056 × 3040 pixels |
1456 × 1088 pixels |
Sensor image area |
3.76 × 2.74 mm |
3.68 × 2.76 mm (4.6 mm diagonal) |
6.45 × 3.63mm (7.4mm diagonal) |
6.45 × 3.63mm (7.4mm diagonal) |
6.287mm × 4.712 mm (7.9mm diagonal) |
6.287mm × 4.712 mm (7.9mm diagonal) |
6.3mm diagonal |
Pixel size |
1.4 µm × 1.4 µm |
1.12 µm × 1.12 µm |
1.4 µm × 1.4 µm |
1.4 µm × 1.4 µm |
1.55 µm × 1.55 µm |
1.55 µm × 1.55 µm |
3.45 µm × 3.45 µm |
Optical size |
1/4" |
1/4" |
1/2.43" |
1/2.43" |
1/2.3" |
1/2.3" |
1/2.9" |
Focus |
Fixed |
Adjustable |
Motorized |
Motorized |
Adjustable |
Adjustable |
Adjustable |
Depth of field |
Approx 1 m to ∞ |
Approx 10 cm to ∞ |
Approx 10 cm to ∞ |
Approx 5 cm to ∞ |
N/A |
Approx 20 cm to ∞ |
N/A |
Focal length |
3.60 mm +/- 0.01 |
3.04 mm |
4.74 mm |
2.75 mmm |
Depends on lens |
4.74 mm |
Depends on lens |
Horizontal Field of View (FoV) |
53.50 +/- 0.13 degrees |
62.2 degrees |
66 degrees |
102 degrees |
Depends on lens |
66 ±3 degrees |
Depends on lens |
Vertical Field of View (FoV) |
41.41 +/- 0.11 degrees |
48.8 degrees |
41 degrees |
67 degrees |
Depends on lens |
52.3 ±3 degrees |
Depends on lens |
Focal ratio (F-Stop) |
F2.9 |
F2.0 |
F1.8 |
F2.2 |
Depends on lens |
F1.79 |
Depends on lens |
Maximum exposure time (seconds) |
3.28 |
11.76 |
112 |
112 |
670.74 |
112 |
15.5 |
Lens Mount |
N/A |
N/A |
N/A |
N/A |
C/CS- or M12-mount |
N/A |
C/CS |
NoIR version available? |
Yes |
Yes |
Yes |
Yes |
No |
No |
No |
Note
|
有 some evidence to suggest that the Camera Module 3 may emit RFI at a harmonic of the CSI clock rate. This RFI is in a range to interfere with GPS L1 frequencies (1575 MHz). Please see the thread on Github 详细信息和建议的解决方法。 |
红外滤光片
高品质相机和全局快门相机都包含一个红外滤光片,以降低相机对红外光的敏感性并帮助户外照片看起来更自然。但是,您可以删除滤光片以:
-
Enhance colours in certain types of photography, such as images of plants, water, and the sky
-
Provide night vision in a location that is illuminated with infrared light
移除滤光片
Warning
|
此过程不可逆转: 滤光片在吊起和更换时会损坏,虽然IR滤光片约为1.1毫米厚,但在移除时可能会破裂。产品保修将失效。 |
您可以从HQ和GS相机上移除滤镜。HQ相机显示在下面的演示中。
Note
|
确保在清洁无尘的环境中工作,因为传感器将暴露在空气中。 |
-
拧开主电路板下侧的两个1.5毫米六角锁键。小心不要让垫圈滚走。
-
外壳和PCB之间有一个稍微粘的材料垫圈,需要一些力才能分开。您可以尝试一些方法来削弱粘合剂,例如少量异丙醇和/或加热(~20-30)。
-
一旦粘合剂松动,提起板并将其放在非常干净的表面上。确保传感器不会接触表面。
-
将镜头朝上,将支架放在平坦的表面上。
-
为了尽量减少损坏滤光片的风险,请使用笔尖或类似的软塑料物品,仅在玻璃与铝连接的边缘向下推滤光片。胶水会露出缝隙,滤光片会从镜头支架上脱落。
-
鉴于更换镜头会导致传感器暴露在外,此时您可以贴上透明滤光片(例如OHP塑料),以最大限度地减少灰尘进入传感器腔的机会。
-
更换电路板上的主外壳。请务必将外壳与垫圈重新对齐,垫圈仍留在电路板上。
-
先涂上尼龙垫圈,防止损坏电路板。
-
接下来,安装钢垫圈,防止损坏尼龙垫圈。拧下两个六角锁键。只要垫圈按正确的顺序安装,就不需要拧得很紧。
Note
|
不太可能可以将滤光片粘回原位并使设备恢复正常光学相机的功能。 |
推荐镜头
在 GitHub 上修改
以下镜头推荐用于我们的HQ和GS相机。
Note
|
虽然HQ相机提供C/CS-和M12卡口版本,但GS相机仅提供C/CS-卡口。 |
C/CS 镜头
我们推荐两个镜头,一个6mm广角镜头和一个16mm长焦镜头。这些镜头应该可以从您最近的 授权经销商 买到。
16mm telephoto | 6mm wide angle | ||
---|---|---|---|
Resolution |
10MP |
3MP |
|
Image format |
1" |
1/2" |
|
Aperture |
F1.4 to F16 |
F1.2 |
|
Mount |
C |
CS |
|
Field of View H°×V° (D°) |
HQ |
22.2°×16.7° (27.8°) |
55°×45° (71°) |
GS |
17.8°×13.4° (22.3) |
45°×34° (56°) |
|
Back focal length |
17.53mm |
7.53mm |
|
M.O.D. |
0.2m |
0.2m |
|
Dimensions |
φ39.00×50.00mm |
φ30×34mm |
同步捕获
在 GitHub 上修改
HQ相机和全局快门相机都支持同步捕获。 利用XVS引脚(垂直同步)允许一台相机在开始帧捕捉时脉冲。 然后,另一台摄像机可以监听此同步脉冲,并与另一台摄像机同时捕获一帧。
使用 HQ Camera
为了正确操作,两台摄像机都需要XVS线路上的1.65V上拉电压,该电压由通过Raspberry Pi上的3.3V和GND引脚的电位分压器创建。

创建一个分压器,从两个10kΩ电阻到3.3V和地(使有效源阻抗为5kΩ的1.65V)。这可以连接到任一树莓派。
将每个HQ相机板的GND和XVS测试点焊接到彼此。
将XVS线连接到1.65V电位分压器上拉。
启动两个 Raspberry Pis
文件 /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
确保捕获相同数量的帧数,并且记录的长度完全相同。
首先运行接收器可确保不会丢失任何帧。
Note
|
当源处于空闲状态时,需要潜在的分频器将XVS引脚拉至高电平。这可确保在启动时不会创建或丢失帧。初始化时源从低到高,这可能会触发假帧。 |
使用 GS Camera
Note
|
全局快门(GS)相机也可以在同步模式下操作。但是,源相机将记录一个额外的帧。确保两个相机捕获相同数量的帧的一个更好的替代方法是使用 外部触发方式。 |
要同时作为源极和接收器运行,全局快门相机还需要将XHS(水平同步)引脚连接在一起。然而,这些不需要连接到上拉电阻。
接线设置与 HQ Camera method 相同,只是您还需要将XHS引脚连接在一起。
创建一个分压器,从两个10kΩ电阻到3.3V和地(使有效源阻抗为5kΩ的1.65V)。这可以连接到任一树莓派。
将2根电线焊接到每块板上的XVS测试点,并将这两根电线连接到1.65V电位分压器上。
将每个相机板的GND焊接到彼此。还将2根电线焊接到每块板上的XHS测试点并将它们连接起来。XHS引脚不需要上拉。
在您希望充当水槽的板上,将MAS焊盘的两半焊接在一起。这告诉传感器充当水槽,并将等待信号以捕获帧。
启动信号源和接收器
运行以下命令启动接收器:
$ rpicam-vid --frames 300 -o sync.h264
由于IMX296传感器的限制,接收器不能记录与源完全相同的帧数。源在接收器开始记录之前多记录一帧。因此,您需要使用 --frames
选项指定接收器少记录一帧。
在启动源之前至少等待两秒钟。
等待两秒钟后,运行以下命令启动源:
$ rpicam-vid --frames 299 -o sync.h264
因为接收器和源记录的帧数不同,所以使用 ffmpeg
重新同步视频。通过从源中删除第一帧,我们会得到两个具有相同起点和帧长的录音:
$ ffmpeg -i source.h264 -vf select="gte(n\, 1)" source.h264
GS 摄像机外部触发器
在 GitHub 上修改
全局快门(GS)摄像机可以通过板上的外部触发器(板上表示为XTR)连接进行脉冲外部触发。多个摄像机可以连接到同一个脉冲,从而允许另一种方式同步两个摄像机。
曝光时间等于低脉冲宽度时间加上额外的14.26us。即10000us的低脉冲最终结果为10014.26us的曝光时间。帧率直接由您脉冲引脚的频率控制。30Hz的PWM频率对应每秒30帧的帧率。

前提准备
Warning
|
此修改包括移除SMD焊接部分。除非您认为自己有能力完成此修改,否则不应尝试此修改。焊接到相机板时,请移除塑料后盖,以免损坏它。 |
如果您的主板安装了晶体管Q2(下图以蓝色显示),那么您需要从主板上移除R11(以红色显示)。这将GP1连接到XTR,如果不移除R11,相机将无法在外部触发模式下运行。 组件的位置显示在下面。

接下来,将电线焊接到GS相机板上XTR和GND的接触点。请注意,XTR是1.8V输入,因此您可能需要电平转换器或电位分压器。
我们可以使用树莓派Pico来提供触发器。通过1.5kΩ电阻将任何PicoGPIO引脚(本例中使用GP28)连接到XTR。还可以在XTR和GND之间连接1.8kΩ电阻,以将高逻辑电平降低到1.8V。接线图如下所示。

Boot up the Raspberry Pi with the camera connected.
通过超级用户模式启用外部触发:
$ sudo su
$ echo 1 > /sys/module/imx296/parameters/trigger_mode
$ exit
Raspberry Pi Pico MicroPython 代码
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的频率等于帧速率。
Note
|
在此示例中,引脚28连接到GS相机板上的XTR接触点。 |