摄像头

摄像头基本原理

- 光照射在景物上经过反射透过镜头,将生成的图像投射到传感器(Sensor)表面上。
- Sensor 接收到反射的光,将其转化为电信号,经过 A/D(模数转换)转换为数字图像信号。
传感器基本原理
摄像头的核心组件为图像传感器。最基本地说,相机传感器是一种固态电子器件。它通过数百万个感光像素吸收光子,并把光转换成电信号。随后,相机里的计算芯片会解析这些电信号,生成数字图像。

传感器由数百万个微小像素组成。每个像素都是一个独立的感光单元,也可以理解成一个“小光井”。
当光子进入像素后,会打到感光半导体二极管,也就是光电二极管上。光电二极管会把光转换成电流,电流强弱对应 接收到的光强。这个信号随后会被放大,再送入模数转换器,把模拟信号转换成数字信号,最后交给图像处理器。
图像处理器会综合读取所有像素的数字信号。由于每个像素都有对应的亮度值,相机就能把这些数据重新组合成一张图像。
传感器上也是有一层透镜的,这是因为像素附近还要放置晶体管、线路和电路。这些结构可能会阻挡或反射部分光线。为了尽可能多地收集光,每个像素上方通常会放一个微透镜,把光线引导到光电二极管上,提高进光效率。
Bayer 滤镜阵列
传感器像素本质上只能检测“光的强弱”,不能直接识别颜色。因此,如果没有额外结构,传感器只能生成黑白图像。
要得到彩色图像,就需要在传感器上方加入彩色滤镜阵列。
彩色滤镜阵列由红、绿、蓝三种滤镜组成,每个像素上方对应一种颜色滤镜。这样,每个像素只接收红光、绿光或蓝光中的一种,其他颜色都会被过滤掉。
图像处理器再根据这些像素的亮度值和颜色位置,推算出完整的彩色图像。
最常见的滤镜排列方式是 Bayer 阵列。
Bayer 阵列采用重复的 2×2 像素结构。每 4 个像素中有:
- 2 个绿色像素
- 1 个红色像素
- 1 个蓝色像素
也就是说,整体比例大约是 50% 绿色、25% 红色、25% 蓝色。
绿色像素更多 ,是因为人眼对绿色更敏感。这种设计有助于让相机更接近人眼的视觉感知。

什么是摩尔纹?
Bayer 阵列虽然有效,但可能带来一个问题:摩尔纹。
摩尔纹通常出现在拍摄重复细密图案时,比如远处的砖墙、织物、屏幕等。当被拍摄图案的频率接近或高于传感器分辨率时,图案和传感器像素阵列发生干涉,就可能出现奇怪的彩色纹路或波纹。
过去传感器分辨率较低时,摩尔纹更常见。现在传感器分辨率提高后,这个问题已经减少。
什么是光学低通滤镜?
为了减少摩尔纹,一些相机会在传感器前方加入光学低通滤镜,也叫抗混叠滤镜。
它的作用是轻微模糊极细节,让画面细节低于传感器的分辨能力,从而降低摩尔纹风险。但代价是:画面锐度会有所下降。正因为这个权衡,很多专业摄影师并不喜欢光学低通滤镜
CMOS CCD
CMOS 和 CCD 都是图像传感器,作用都是把光信号转换成电信号。区别主要在于:每个像素如何读出信号。

| 对比项 | CCD | CMOS |
|---|---|---|
| 信号读取方式 | 电荷逐级转移到统一输出端 | 每个像素或每列可独立读取 |
| 功耗 | 较高 | 较低 |
| 读取速度 | 较慢 | 较快 |
| 制 造成本 | 较高 | 较低 |
摄像头的数据格式
摄像头经 MIPI CSI-2 传出来的 RAW Bayer 值是插值前的值,也就是未经过去马赛克 / Demosaic / Bayer 插值的数据。
摄像头接口
摄像头常用接口包括:USB、DVP、MIPI-CSI。
尝试让 /dev/video0 先启动 ISP pipeline,再抓 /dev/video2
有些 Rockchip 4.19 vendor rkisp 驱动里,rawwr 节点不能很好地单独启动,需要 mainpath 把整条 ISP pipeline 拉起来。可以试这个:
# 先启动 /dev/video0,让 sensor / dphy / isp pipeline 开始跑
timeout 20s v4l2-ctl -d /dev/video0 \
--set-fmt-video=width=3840,height=2160,pixelformat=NV12 \
--stream-mmap=4 \
--stream-count=300 \
--stream-to=/dev/null \
--verbose &
sleep 2
# 再抓 /dev/video2 的 RAW
timeout 10s v4l2-ctl -d /dev/video2 \
--set-fmt-video=width=3840,height=2160,pixelformat=GB10 \
--stream-mmap=4 \
--stream-count=1 \
--stream-to=imx415_csi_gb10.raw \
--verbose
如果这样能抓到文件,说明 /dev/video2 不是独立 streaming 节点,需要依赖 mainpath 启动 pipeline。
IMX415
Reference
Camera Sensors: What Are They and How Do They Work?