Skip to main content

摄像头

摄像头基本原理

  1. 光照射在景物上经过反射透过镜头,将生成的图像投射到传感器(Sensor)表面上。
  2. Sensor 接收到反射的光,将其转化为电信号,经过 A/D(模数转换)转换为数字图像信号。

传感器基本原理

摄像头的核心组件为图像传感器。最基本地说,相机传感器是一种固态电子器件。它通过数百万个感光像素吸收光子,并把光转换成电信号。随后,相机里的计算芯片会解析这些电信号,生成数字图像。

传感器由数百万个微小像素组成。每个像素都是一个独立的感光单元,也可以理解成一个“小光井”。

当光子进入像素后,会打到感光半导体二极管,也就是光电二极管上。光电二极管会把光转换成电流,电流强弱对应接收到的光强。这个信号随后会被放大,再送入模数转换器,把模拟信号转换成数字信号,最后交给图像处理器。

图像处理器会综合读取所有像素的数字信号。由于每个像素都有对应的亮度值,相机就能把这些数据重新组合成一张图像。

传感器上也是有一层透镜的,这是因为像素附近还要放置晶体管、线路和电路。这些结构可能会阻挡或反射部分光线。为了尽可能多地收集光,每个像素上方通常会放一个微透镜,把光线引导到光电二极管上,提高进光效率。

Bayer 滤镜阵列

传感器像素本质上只能检测“光的强弱”,不能直接识别颜色。因此,如果没有额外结构,传感器只能生成黑白图像。

要得到彩色图像,就需要在传感器上方加入彩色滤镜阵列

彩色滤镜阵列由红、绿、蓝三种滤镜组成,每个像素上方对应一种颜色滤镜。这样,每个像素只接收红光、绿光或蓝光中的一种,其他颜色都会被过滤掉。

图像处理器再根据这些像素的亮度值和颜色位置,推算出完整的彩色图像。

最常见的滤镜排列方式是 Bayer 阵列

Bayer 阵列采用重复的 2×2 像素结构。每 4 个像素中有:

  • 2 个绿色像素
  • 1 个红色像素
  • 1 个蓝色像素

也就是说,整体比例大约是 50% 绿色、25% 红色、25% 蓝色

绿色像素更多,是因为人眼对绿色更敏感。这种设计有助于让相机更接近人眼的视觉感知。

什么是摩尔纹?

Bayer 阵列虽然有效,但可能带来一个问题:摩尔纹

摩尔纹通常出现在拍摄重复细密图案时,比如远处的砖墙、织物、屏幕等。当被拍摄图案的频率接近或高于传感器分辨率时,图案和传感器像素阵列发生干涉,就可能出现奇怪的彩色纹路或波纹。

过去传感器分辨率较低时,摩尔纹更常见。现在传感器分辨率提高后,这个问题已经减少。

什么是光学低通滤镜?

为了减少摩尔纹,一些相机会在传感器前方加入光学低通滤镜,也叫抗混叠滤镜。

它的作用是轻微模糊极细节,让画面细节低于传感器的分辨能力,从而降低摩尔纹风险。但代价是:画面锐度会有所下降。正因为这个权衡,很多专业摄影师并不喜欢光学低通滤镜

CMOS CCD

CMOS 和 CCD 都是图像传感器,作用都是把光信号转换成电信号。区别主要在于:每个像素如何读出信号

对比项CCDCMOS
信号读取方式电荷逐级转移到统一输出端每个像素或每列可独立读取
功耗较高较低
读取速度较慢较快
制造成本较高较低

摄像头的数据格式

摄像头经 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?

https://www.fujifilm-x.com/en-us/series/fundamentals-of-photography/camera-sensors-what-are-they-and-how-do-they-work/?utm_source=chatgpt.com