ISP 之 Pipeline
什么是 ISP
主流的 CMOS 和 CCD sensor 几乎都是输出 Bayer mosaic 格式的 RAW
数据,这种数据格式是无法直接观看的,必须转换成常见的 RGB 或 YUV
格式才能被主流的图像处理软件支持。对于 camera 产品而言,一般还需要将 RGB
或 YUV 图像进一步转换成 JPEG
格式以方便进行存储。上述图像处理过程统称图像信号处理(Image Signal
Processing,ISP),广义的 ISP 包含了 JPEG 和 H.264/265
图像压缩处理,而狭义的 ISP 仅包括从 RAW 格式变换到 RGB 或 YUV
的处理过程。
一个典型的 ISP 流水线由一系列处理模块组成,这些模块首尾相连,在几百
MHz
的时钟驱动下同时高速运转,图像数据不断从一个模块转移至下一个模块,直到完成所有的算法处理,最终以
YUV 或 RGB 的形式从流水线的末级流出
ISP。下图所示的是一个支持常见基本功能的 ISP 流水线。
从图中可以看到,图像数据在 ISP
内部经历了两次颜色空间变换,第一次变换发生在 Demosaic 模块,它把像素从即
RAW ...
Lens 之像差
几何像差(Geometrical
Aberration)
几何像差分析单波长光线在光学系统(透镜组)中,由于透镜表面不同位置上折光能力的差异造成的成像面上,光点位置产生偏离造成物、像关系不共轭的现象。
Spherical aberration(球差)
孔径增大后,轴上点大光线和近轴光线在像空间与光轴交点位置不一致,引起的效应就是球差。
球面像差是发生在经过透镜折射或面镜反射的光线,接近中心与靠近边缘的光线不能将影像聚集在一个点上的现象。当平行的光线由镜片的边缘通过时,它的焦点位置比较靠近镜片,而由镜片的中央通过的光线,它的焦点位置则较远离镜片(这种沿着光轴的焦点错开的量,称为纵向球面像差)。口径愈大的镜头,这种倾向愈明显。
焦点随离轴高度而改变。
球差是球面镜的本性。
镜片组合或非球面可减少球差。
矫正
凹凸透镜补偿法:采用增加透镜的方法,增加凹凸面,从而减小球差的大小。
非球面透镜校正:制作成本高昂。
Coma(彗差)
彗形像差,又称彗星像差,表示上下光线关于主光线的不对称度,即:
\[
K_{T}^{'} = y{'} - \frac{1}{2}(y_{A}^{'} ...
Lens 之 Vignetting
自然暗角
原因
对着亮度均匀的景物,图像画面四角有变暗的现象,叫做失光或暗角(Vignetting)。暗角对于任何镜头都不可避免,这是由于镜头对于光学折射不均匀造成的。
\[
I_{A'} = \cos_{\alpha }^{4} I_{o'}
\]
其中 \(\alpha \equiv chief - ray - angle
\equiv CRA\) 即主光线角度。需要注意的是,CRA 通常适用于 CMOS 或
CCD 之类的电子元件,对于传统的胶片底片不太受此参数影响,通常光学镜头中,
$CRA^{} $ 。 其中相对照度:
\[
RI = \frac{I_{A'}}{I_{o'}}
\]
这是由于光线出瞳后,轴上主光线到成像面的距离短于离轴主光线到成像面的距离,导致在成像面上不同位置光线呈现出相应的强度衰减,在成像面上,会出现中间亮四周暗的现象,称之为暗角(自然暗角)不同视场的相对照度,即是衡量暗角大小的参数。在相同的物面亮度下,通过
RI 与视场角的关系,即可对成像相对照度进行评估,即 $RI - $ 图:
解决
可以通过 Autoshading 功能在 CCD 或者 C ...
Lens 之光学基础
前言
光学系统大的分类:
几何光学 ->
光线(像磁场线一样,其实不存在为了更好的研究其宏观特性而人为设计出来的)。
物理光学 -> 光波 (分析光的波函数)。
量子光学 -> 光子 (em...)。
折射系数 (index of
refraction)
在几何光学的模型中,材料的光学性质是由材料的折射系数确定的,我们用字母
n 来代表折射系数。n 是一个关于波长 \(\lambda\)的函数,不同波长的 n
不一样,也就是色散 (dispersion)。
折射系数与光速的关系为:
\[
n = \frac{真空中光速}{介质中光速} = \frac{c}{v}
\]
前提:
介质是均匀的 (homogenous),即 n 在介质任意一点都是一样的。
介质是各向同性的 (isotropic),即 n
在光传播的任何方向都是相同的。
因为 \(v =
\frac{c}{n}\),我们可以把光从 A 传播到 B 所需的时间写成:
\[
t_{AB} = \int_{A}^{B} \frac{ds}{v} = \frac{1}{c} \int_{A}^{B} ...
Lens 之景深
景深的计算
相机景深:其指的是在某个物距之间,还能够清晰成像的距离:
如果 sensor
刚好在像距的位置上,物体的一个点,成的像也就是一个点。如果 sensor
在像距的前面或者后面,这个点也就成了一个圆,专业术语叫弥散圆。当这个圆大到一定的程度的时候,照片也就糊了。
景深公式依据下列 6 个关系式:
\[
d = \frac{f}{N} \tag1
\]
其中 d 为光圈直径,f 为焦距,N
代表镜头设定的光圈值(2.8、4、5.6、8、11、22)等。
光学透镜成像公式(这个在光学原理一节有介绍,要通过相似三角形推导):
\[
\frac{1}{s} + \frac{1}{v} = \frac{1}{f} \tag2
\]
其中 v 代表像距、s 代表物距。
后物体的成像公式:
\[
\frac{1}{D_N} = \frac{1}{v_N} = \frac{1}{f} \tag3
\]
前物体的成像:
\[
\frac{1}{D_F} = \frac{1}{v_F} = \frac{1}{f} \tag4
\]
\[
\frac{v_N - v}{v_F} = \frac{ ...
Sensor 的特性与噪声
CMOS sensor 的响应特性
理想 CMOS sensor 的响应特性下图所示:
横坐标是光强,纵坐标是 cmos
输出信号,直线的斜率决定了单位输入能够激励的响应大小,这个斜率称为增益系数(gain)。sensor
会提供一组接口用于调节实际生效的增益值。
而实际的 sensor
只能是在一段有限的区间内保持线性响应,对于幅度过小或者过大的输入信号会不能如实地表示。
下图是实验测量的输入输出曲线,横坐标是入射到 sensor
的光子数,纵坐标是 sensor 输出的数值(Digital Number, DN)。
以上关系用公式描述就是:
\[
S(N,t) = q(\lambda) \cdot N \cdot t
\]
其中,\(S(N, t)\) 是 sensor
的一个像素采集到的电子数, \(q(λ)\) 是
sensor 在波长λ处的光电转换效率,N 是单位时间内入射到 sensor
表面的光子数(波长λ的单色光),t 是曝光时间。
sensor 最终输出的像素值是使用 ADC 对 S(N,t) 进行采样和 AD
转换得到的量化值,该值会有 PV(Pixel ...
Sensor 的结构
sensor 的硬件结构
每个像素的结构
Microlens(微透镜)。
每个像素点的最上方有个微透镜,增加透光量。有镜头就有 CRA
的问题,超出一定角度的光线无法被收集,需要和镜头进行匹配。
Photodiode(硅感光区)捕获光子,激发光生电子。
势阱,用电场捕获、存储光生电子。
电路,将电荷数量变换为电压信号,以及复位、选择、读出逻辑。
滤光膜,选择性透过三种波长中的一种。
细说 CRA
CRA 是 Chief Ray Angle
的缩写,意思是主光角。从镜头的传感器一侧,可以聚焦到像素上的光线的最大角度被定义为一个参数,称为主光角
(CRA)。对于主光角的一般性定义是:此角度处的像素响应降低为零度角像素响应的
80%。
我们在挑选 Lens 的时候会有一个 CRA 的参数,在选择 sensor
的时候同样有一个 CRA 的参数,一般我们要求 Lens 的 CRA 曲线与 senosr 的
CRA 曲线完全匹配,如果实在不能匹配,我们也要求在同样的像高位置,CRA
相差不能超过 3 度,而且最好是 Lens 的 CRA 比 sensor 的 CRA
小,否则将会导致成像 ...
Odriver 之测速
传感器
绝对磁编码器
绝对磁编码器比较简单,直接读寄存器就可以。实际使用中需要配合径向冲磁的磁铁使用,且最好能远离其他可能造成磁场变化的器件;其次需要注意角度更新频率,动态特性等参数。
线性霍尔传感器
对于线性霍尔传感器一般是需要进行校准的,其使用方法一般是两个传感器呈
80 度对称分布,同样需要配合径向冲磁的磁铁使用。
当磁铁旋转一周的时候,线性霍尔的传感器的输出应该正好是一个正弦信号,但是正弦的幅值需要校准,让传感器旋转一周分别获取最大值和最小值,这样就可以重构一周的信号与位置的关系。单个传感器就可以获取全部位置角度的信息,但是单个传感器存在一个问题,就是在正弦波的极点处值的变化非常小,而在线性区域变化则比较明显,因此使用两个传感器呈
90 度摆放则可以解决这个问题。如下图:
如果 a 传感器取 sin 值为 hall_sin,b 传感器取 cos 值为
hall_cos,则最终的角度为 atan2f(hall_sin, hall_cos)。
123456789101112131415161718192021/** * @brief Hall Sensor read ang ...
odriver 之 SVM
源码
SVM 函数的 alpha 和 beta 的值是经过了标幺化,基准值为
(最大相电压),也就是说 alpha 和 beta 的范围是 [-1,1]。约束:alpha-beta
向量的大小不得大于 $ $。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118// Compute rising edge timings (0.0 - 1.0) as a function of alpha-beta// as per the magnitude invariant clarke transform// The magnitude of the alp ...
FOC 电流采样
采样点
在基尔霍夫定律下,三相电流的合应该等于
0,因此只需要获取亮相电流就可以重构出完整的三相电流。
对于 STM32 一般通过高级定时器的 channel4 作为 ADC
的触发源,对于下桥臂电流采样,需要在下桥臂 MOS
管导筒的时候才能去采样,而且需要在 MOS
管导通时间以及电流稳定后才能采样到比较可靠的电流。
当 \(\Delta_1\) 大于两倍的
$T_{dead} + T_{on} + T_{ring} + T_{conv} $ 那么在 PWM Freq Middle
时刻出发 ADC 转换也是足够转换 3 相中任意的一相。
当 \(\Delta_1\) 大于$T_{dead} +
T_{on} + T_{ring} + T_{conv} 那么从 CCRmax 之后开始转换也是可以转换 3
相中任意的一相。
当 \(\Delta_2\) > \(\Delta_0\) > \(\Delta_1\)
那么导通最短的那一相就没有足够的转换时间了,那么只能转换导通时间长的那两相。
\(\Delta_1\) < \(\Delta_0\) 和 \(\Del ...