三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

图像传感器基础知识介绍

图像传感器基础知识介绍

目录

cmos sensor

1. 定义

2. 理论基础

3. 功能

4. Camera 中的作用

成像

一、定义

二、核心概念

三、理论知识

1. 单像素:4T + CDS(信号怎么来)

2. 阵列读出:电荷如何变成一帧图

3. 像素阵列分区:有效区不是全部

四、一句话串起来

卷帘曝光

一、定义

二、理论知识

1. 某一时刻阵列上有几类行(对应左图中间色块)

2. 时序:Sensor Line vs Time(对应右图斜带)

3. 帘幕类比

4. 和全局快门对比

三、常见现象(开发/调参要知道)

四、和前面成像知识的衔接

五、一句话总结

帧结构

一、定义

二、时间层级:P_clock → Tline → Tframe

1. Pixel Clock(像素时钟,P_clock)

2. Line Time(行时间,Tline)

3. Frame Time(帧时间,Tframe)

三、消隐:水平消隐与垂直消隐

1. 水平消隐(H-blank / Line Blanking)

2. 垂直消隐(V-blank / Frame Blanking)

3. 曝光与行时间的关系

四、空间帧结构(以 IMX689 类为例)

五、和卷帘曝光的衔接

六、一句话总结

曝光和噪声

一、曝光时间:定义

二、曝光 vs 运动模糊

三、场景经验与曝光取舍

四、噪声:定义与三类核心噪声

五、噪声从哪来(读出链路)

六、噪声随信号怎么变

七、曝光和噪声怎么连起来

八、一句话


cmos sensor

1. 定义

CMOS Sensor:相机核心元件,位于 镜头与 ISP 之间,把镜头汇聚的 光信号 转成 ISP 可处理的 电信号 / 数字信号。


2. 理论基础

信号变换主线:

光子 → 像元电荷 → 模拟电压 → 列放大 → ADC → 数字图像 → ISP

  • 像素阵列:完成光电转换
  • 行驱动 + 时序:决定读哪一行、何时读
  • 列放大 + 列 ADC:列并行读出并数字化(现代 CMOS 常见结构)
  • 时钟 / 偏置:保证电路稳定工作

3. 功能

模块作用

像敏单元阵列

感光

行驱动器

按行选通

列模拟读出

取出并放大模拟信号

时序控制逻辑

曝光与读出节拍

AD 转换器

模拟 → 数字

数据输出接口

向 ISP 送图

控制接口

配置曝光、增益、mode


4. Camera 中的作用

光线 → Lens → CMOS → ISP → HAL/App

  • 成像数据源:提供原始数字图(多为 RAW)
  • 3A 执行端:曝光 / 增益等最终落到 Sensor 寄存器
  • 规格边界:分辨率、帧率、噪声、动态范围等受 Sensor 能力约束

成像

一、定义

成像(Imaging):把场景中的光信息,转换成后续系统可用的数字图像信号的过程。

在 Camera 链路里,成像的核心发生在 Sensor:

光子 → 电荷 → 电压 →(放大)→ 数字码值 → 输出 RAW/数字图像

下雨接水——雨水是光子,桶是像素,接水过程是曝光;接完后量水深(读出)、倒空(复位),再接下一次。


二、核心概念

概念含义

像素 Pixel

最小感光单元,对应阵列中的一个点

PPD

Pinned Photodiode,钉扎光电二极管,感光并积累电荷,暗电流更低

曝光 Exposure

PPD 积累光生电荷的时间

FD

Floating Diffusion,浮置扩散节点,电荷在此转成电压

4T

四管像素:TG / RST / SF / SEL(现代 CIS 主流)

CDS

相关双采样:先采Vrst,再采Vsig,差分得有效信号

行选 / 列选

先选行接到列线,再经增益与 ADC 数字化

Active / Dummy / OPB

有效区 / 哑元区 / 光学黑区,职责不同

BLC

黑电平校正,用 OB 估计“无光基线”并扣除


三、理论知识

1. 单像素:4T + CDS(信号怎么来)

典型步骤(与课件一致):

  1. PPD 复位:RST、TG 打开,清掉 PPD 残荷
  2. 开始曝光:TG 关闭,PPD 积分光生电荷
  3. 采样复位电压Vrst:经 SF、SEL 读 FD
  4. 曝光结束并转移:TG 打开,电荷转入 FD,电压下降
  5. 采样信号电压Vsig

有效信号:

Vsignal=Vrst−VsigVsignal​=Vrst​−Vsig​

公开理论补充:

  • TG 把 积分 与 读出节点 分开,才能做真正的 CDS,压低复位噪声(kTC)
  • PPD 把电荷阱远离硅表面,有利于降暗电流、改善蓝光响应
  • 电荷需尽量 完全转移,否则会出现残像(lag)

物理叠层大致为:微透镜 → 彩色滤光片 → 晶体管区 → 光电二极管 → 硅衬底。


2. 阵列读出:电荷如何变成一帧图

  1. 像素内 电荷/电压转换(CVC)
  2. 行选:该行各像素接到各自列线
  3. 列选 + 可编程增益:选出列信号并放大(增益控制)
  4. ADC:模拟 → 数字
  5. 经接口(如 MIPI)输出;部分处理可在 Sensor 片内或后续 ISP 完成

现代手机更多是 列并行 ADC(每列一路转换),与“逐列开关扫一遍”是同一思想的高速实现。


3. 像素阵列分区:有效区不是全部

区域作用

Active

真正成像(如 8000×6000 ≈ 48M)

Opened Dummy

保证边缘工艺一致性;给 demosaic/滤波提供邻域

OPB(Optical Black)

遮光,只反映暗电流与电路偏置,供 BLC

补充理论:

  • 暗电流随 温度、曝光、增益、位置 变化
  • ISP 常按增益/温度用不同黑电平;Bayer 常按 R/Gr/Gb/B 分别估 OB
  • 黑电平不准会出现发灰、发黑不够、色偏、动态范围被吃掉等问题

四、一句话串起来

成像 = 像素桶接光子(曝光)→ 4T 转移并 CDS 得干净电压 → 行列读出放大 ADC 成数字 → 结合 Dummy/OPB 做边缘与黑电平支撑,最终输出可供 ISP 使用的图像数据。

卷帘曝光

一、定义

卷帘曝光(Rolling Shutter) 是 CMOS 传感器最常见的电子快门方式:

不是整幅图同时曝光,而是按行依次复位、依次读出。
某一行的 曝光时间 = 该行 Reset 到 Read 之间的时间间隔。

两路控制信号:

信号作用

Reset(复位)

清掉该行电荷,标记 开始曝光

Read(读出)

读出该行已积累电荷,标记 结束曝光

空间上看:Reset 行与 Read 行始终隔开固定行数,像两道帘幕从上往下滚。
时间上看:每一行曝光时长相同,但 开始/结束时刻逐行错开。


二、理论知识

1. 某一时刻阵列上有几类行(对应左图中间色块)

从上到下大致是:

  1. 已读取、自由曝光(白):本帧已读完
  2. 读出行(红):当前正在读
  3. 受曝光控制(黄):正在为本帧积分
  4. 复位行(绿):正在清电荷、开始新曝光
  5. 未读取、自由曝光(白):还没轮到

Reset 和 Read 像两把“扫描刷”,保持固定间距往下扫。

2. 时序:Sensor Line vs Time(对应右图斜带)

  • 纵轴:行号 0 → N−1
  • 横轴:时间
  • 一条斜带:各行开始曝光(Reset)
  • 平行的另一条斜带:各行结束曝光(Read)
  • 同一行上两斜带的水平距离 = 曝光时间(各行一样)
  • 首行与末行的时间差 ≈ 整帧读出时间(readout / scan time)

例:若每行读出 10 μs、共 2048 行,则顶到底大约晚 2 ms。运动畸变主要取决于 读出时间,不只取决于曝光时间。

3. 帘幕类比

高速快门时(如 1/1000 s),“前帘(Reset)”和“后帘(Read)”形成一条很窄的缝,整幅从未同时全开。
这就是机械焦平面快门的电子版,也是闪光同步难、高速运动会变形的原因。

4. 和全局快门对比

卷帘 Rolling全局 Global

曝光

逐行开始、逐行结束

所有像素同时开始、同时结束

一帧时刻

顶底不是同一瞬间

整幅同一瞬间

运动

易斜切、果冻、拉伸

几何更稳

闪光/频闪

易出现条带(半幅亮)

整幅可同步

代价

电路简单、功耗/噪声常更好、手机主流

像素更复杂、成本更高

还有一种 Global Reset:全部同时开始积分,但仍逐行结束读出——畸变减轻,但可能出现 上暗下亮(后面的行积分更久)。


三、常见现象(开发/调参要知道)

  • Skew 斜切:快摇镜头时竖线变斜
  • Jello 果冻:手抖/振动时画面像果冻晃
  • Smear 拉伸:高速物体被拉长
  • Banding 条带:闪光灯、PWM 灯只照亮部分行
  • Flash 同步难:高速时没有“全开”瞬间

静止场景几乎看不出;高速、振动、闪光时才会明显。

四、和前面成像知识的衔接

4T 像素讲的是 单行怎么积分、怎么 CDS 读出;
卷帘讲的是 这些行在时间上怎么排队:

单像素:Reset → 曝光积分 → 转移/CDS 读出

整阵列:第 0 行先 Reset/先读 → 第 1 行稍晚 → … → 最后一行最晚

所以:曝光时间由 Reset–Read 间隔 决定;果冻由 行与行之间的读出延迟 决定。

五、一句话总结

卷帘曝光 = CMOS 用 Reset/Read 两道扫描帘按行开关曝光;每行曝光时长相同,但时刻逐行错开,因而高速运动会产生果冻/斜切,闪光也难整幅同步。

帧结构

一、定义

帧结构(Frame Structure):CMOS 完成 一帧图像采集与输出 时,在时间和空间上如何组织数据。

它包含两层含义:

  1. 时间结构:像素时钟 → 行时间 → 帧时间(再叠加消隐)
  2. 空间/数据布局:一帧里不只是有效像素,还有嵌入行、PDAF、统计/陀螺等 metadata,以及行消隐、帧消隐

一句话:

一帧 = 按 Pixel Clock 吐出的若干行;每行有有效数据 + 行消隐;整帧有有效行 + 元数据行 + 垂直消隐。Hsync 管行,Vsync 管帧。


二、时间层级:P_clock → Tline → Tframe

时间层级

1. Pixel Clock(像素时钟,P_clock

  • ADC 读出 一个像素 所需时间,是 Sensor 时序的最小节拍
  • TP=1/P_clockTP​=1/P_clock

2. Line Time(行时间,Tline

  • 完成 一行 的复位、曝光相关操作、电荷转移、读出等所需时间
  • Tline=N×(1/P_clock)Tline=N×(1/P_clock)
  • NN 在调校/mode 配置时确定(对应 datasheet 里的LINE_LENGTH_PCK
  • 一行内部有 TX / RST / SEL 等脉冲;两次 TX 之间可对应最小积分Min_int
  • 课件中一行可有多种搭配:Reset M + Read D、Reset D + Read M、Reset N + Read N、Reset M + Read N(Dummy 行与有效行交错,服务卷帘与 CDS)

3. Frame Time(帧时间,Tframe

  • Tframe=H×TlineTframe=H×Tline
  • HH 是一帧总行数(有效行 + 消隐行等,对应FRAME_LENGTH_LINES
  • 帧率 FPS≈1/TframeFPS≈1/Tframe

对应同步信号:

  • Hsync:一行一个脉冲,周期 ≈Tline
  • Vsync:一帧一个周期,中间包含很多 Hsync,末尾常有V_blank

三、消隐:水平消隐与垂直消隐

消隐

1. 水平消隐(H-blank / Line Blanking)

  • 一行有效像素吐完后,到下一行开始前的空闲段
  • 给内部逻辑用(复位/读出相位切换等)
  • 拉长行周期Tline→ 每行曝光粒度变化,也会 间接改帧率

2. 垂直消隐(V-blank / Frame Blanking)

  • 一帧有效行结束后,给下一帧做准备
  • 最短通常 ≥ 1 × Tline
  • 拉长 V_blank 是调 FPS 的常用手段(总行数变多,Tframe变长,帧率下降)

3. 曝光与行时间的关系

卷帘下,曝光常按 行时间的整数倍 配置:

Texp=X×TlineTexp​=X×Tline

这与上一节「Reset 行与 Read 行隔开固定行数」是同一件事:隔了 XX 行,曝光就是 XX 个Tline


四、空间帧结构(以 IMX689 类为例)

空间帧结构

一帧在输出流里通常是一张「大表」:

区域作用

Embedded Data

帧头嵌入信息(寄存器/状态等)

Active Pixel

真正成像的 RAW(Bayer)

PDAF 行

相位对焦像素数据

User Defined

GYRO / FLICKER / AEHIST 等统计与辅助数据

Line Blanking

每行右侧的水平消隐

Frame Blanking

帧底垂直消隐

寄存器侧两个关键尺寸:

  • 横向总长:LINE_LENGTH_PCK(含有效像素 + 行消隐)
  • 纵向总长:FRAME_LENGTH_LINES(含有效行 + 嵌入/统计行 + 帧消隐)

同步:

  • Vsync:帧单位,FS(Frame Start)/ FE(Frame End)
  • Hsync:行单位,一帧内有很多个 Hsync
  • 脉宽、极性通常可配(VSYNC_WID/HSYNC_WID

软件解析 RAW 时,必须按这个布局 把有效像素和 metadata 拆开,不能把嵌入行、GYRO、直方图当成画面。


五、和卷帘曝光的衔接

P_clock 决定“吐一个像素多快”

Tline 决定“扫完一行(含消隐)要多久”

行间距 X 决定“曝光 = X × Tline”

Tframe 决定“一帧多久 → FPS”

Reset/Read 逐行错开 → 卷帘

所以:改曝光多半改 行间隔 / 积分行数;改帧率多半改 FRAME_LENGTH(V_blank)或 LINE_LENGTH(H_blank),并受 MIPI 带宽约束。


六、一句话总结

帧结构 = 用 P_clock 拼出行、用行拼出帧;消隐用来做内部操作并调节曝光/帧率;输出的一帧里既有画面 RAW,也有 PDAF/统计/嵌入数据,由 Hsync/Vsync 划界。

曝光和噪声

一、曝光时间:定义

曝光时间(Exposure Time):像素收集光子、进行积分的时长。
在卷帘里,它等于该行 Reset → Read 的间隔,常写成 X×TlineX×Tline。

物理含义:时间越长,桶里接的“雨水”(光子)越多,画面越亮;同时若物体在动,光斑会扫过更多像素。


二、曝光 vs 运动模糊

曝光与运动模糊

相对运动时,曝光窗口内同一物体的像会落在不同像素上,形成 运动模糊(拖影)。物体越快、曝光越长,拖得越厉害。

快门典型效果

1/2000 ~ 1/250 s

冻结动作,轮廓清楚

1/30 ~ 1/15 s

边缘开始糊

1/8 ~ 1/3 s

严重拖影,主体难辨

风车、弹琴的手,都是同一原理的直观例子。


三、场景经验与曝光取舍

场景与取舍

课件里的经验值:

  • 道路监控 ITS:通常 < 1/60 s,避免车糊成条
  • 飞鸟:大约 ≤ 1/125 s(约 10 ms) 才容易冻住翅膀
  • 子弹/超高速:到 μs ~ ns 量级

夜景车灯则是反向用法:1/13 s → 0.5 s → 2 s → 10 s,轨迹越来越长,静止景物仍相对清晰。

和噪声绑在一起的取舍:

  • 曝光加长:进光多、更亮;易糊;暗电流/热噪声随时间累积
  • 曝光缩短:动作冻住;更暗;往往要 加增益,读出噪声被一起放大

手机 AE 本质就是在 糊、亮、噪 三者里找平衡。


四、噪声:定义与三类核心噪声

噪声链路与组成

噪声:器件在处理过程中自己产生的、与目标景物无关 的扰动。

课件强调的三类:

符号名称含义

σR

读出噪声 Readout Noise

电路读出引入;设计决定;对应“改变 ADC 1 bit 大约要多少电子”的下限

σS

光子散粒噪声 Photon Shot

光子到达是随机的,服从泊松统计,随信号增大而增大

σD

暗电流散粒噪声 Dark Shot

无光时硅中热激发电子形成暗电流,仍有统计涨落

有效噪声(不相关项平方和开根):

σeff=σD2+σR2+σS2σeff​=σD2​+σR2​+σS2​​


五、噪声从哪来(读出链路)

按信号流,各段都会“加噪”:

环节常见噪声

复位 Reset

FPN、复位噪声(kTC,CDS 可压)

传感器感光

光子散粒、暗电流散粒、FPN、PRNU

像素内放大

热噪声、1/f、FPN

列电路

热噪声、1/f、FPN、复位噪声

片上放大

热噪声、1/f

ADC

量化噪声

FPN:固定图案噪声,帧间位置较稳。
PRNU:像素响应不均匀,强光下更明显。
1/f:低频闪烁噪声。


六、噪声随信号怎么变

在“平均信号 vs 噪声”的 log 图上,大致三段:

  1. 低信号 / 暗部:读出噪声托底,曲线接近水平
  2. 中等信号:光子噪声主导,大约 ∝S∝S​
  3. 高信号接近满阱:PRNU 一类乘性不均匀开始显眼

所以:暗处噪主要看 读出噪声 + 暗电流;亮处噪主要看 光子统计 + PRNU。加增益会把暗部读出噪声抬高。课件中 IMX689/766/789 一类指标会给 Read Noise、DR、SNR,夜景/Qbin 模式往往读出噪声更低、DR/SNR 更好。


七、曝光和噪声怎么连起来

曝光↑ → 光子↑ → 信号↑ → 光子噪声↑但 SNR 通常变好;暗电流↑;运动模糊↑

曝光↓ → 更暗 → 常加 Gain → 读出噪声被放大;动作更清晰

和前面知识的接口:

  • 曝光时长落在帧结构的 X×TlineX×Tline
  • 暗电流校正要靠阵列里的 OPB + BLC
  • 4T + CDS 主要打掉 复位噪声

八、一句话总结

曝光是“接光多久”:短则曝光短但易暗、易加增益变噪;长则更亮但易糊、暗电流升。噪声是链路各段叠加上的无关扰动,暗部看读出/暗电流,亮部看光子散粒和 PRNU。

← 返回列表