05 视觉传感器
这节课学习镜头下方的图像传感器。OV5640 集成了很多功能,把落到感光像素上的光子,最终转变为图像数据输出。
1. 从感光像素到图像数据
芯片中间的感光像素阵列由许多个像素单元组成。和其他传感器一样,它先把物理信号转成电信号,这里转换的是光信号。
图中可以看到,像素信号经过放大、ADC 采样后,还会经过 ISP 的处理,最后输出图像数据。ISP 是 Image Signal Processor,即图像信号处理器。
整个处理流程的参数由寄存器配置,OpenMV 底板上的 STM32H7 通过接口控制这些寄存器。OpenMV 又把相关操作封装到了 csi 模块中。
2. 一个像素的曝光周期
下图把像素单元简化为光电二极管、开关和电容。RST、TX 都可以先理解为开关。
预充电
预充电时,RST 和 TX 导通,光电二极管与电容 C 复位到初始状态。光电二极管本身也具有结电容。
预充电完成后,两个开关断开,进入曝光阶段。
曝光
曝光期间,光照射到光电二极管上,产生并积累光生电荷。曝光时间和光照强度会影响积累的电荷量。
采样
曝光结束后,TX 导通,把光电二极管中积累的电荷转移到读出节点,再断开 TX。
读出
读出阶段,电压信号经过放大器,再由 ADC 转化为数字信号。这样就完成了图中一个像素单元的曝光周期。
3. 彩色滤光阵列
前面的过程主要测量光照强度,但彩色图像还需要颜色信息。在像素阵列上方还有一层彩色滤光阵列:红色位置主要透过红光,绿色位置主要透过绿光,蓝色位置主要透过蓝光。
每个像素位置只测量一种颜色,但最终的彩色像素需要红、绿、蓝三种信息。因此可以利用相邻像素进行插值。
以图中的绿色位置为例,它的红色信息可以由左右两个红色像素取平均,蓝色信息可以由上下两个蓝色像素取平均。其他位置也按照周围的颜色排列,补齐缺少的颜色。
图中每四个位置有两个绿色、一个红色和一个蓝色,这种布局叫作拜尔模式。由这些采样值还原完整颜色的过程叫作去拜尔化,上面的取平均是双线性插值的直观例子。
它是 ISP 处理中的一环。除此之外,ISP 还会进行增益、校正、缩放、裁剪等处理。
4. 像素格式
获取颜色信息后,还要决定怎样把一个像素存进内存,这就是像素格式。本课程常用的是 RGB565 和 GRAYSCALE。
RGB565
RGB565 每个像素占两个字节,共 16 位:红色 5 位、绿色 6 位、蓝色 5 位。
与它类似,电脑上常见的 RGB888 是每个颜色占 8 位,共 24 位。RGB565 占用空间更少,也便于按 16 位数据处理,所以在嵌入式图像处理中很常见。
GRAYSCALE
灰度格式每个像素占一个字节,只表示亮度,效果类似黑白照片。
很多视觉任务主要关心亮度变化,例如边缘检测、扫码、模板匹配。分析彩色图像的某一个通道时,也可以把这个通道看成一幅灰度图。
图像文件
平时在电脑上看到的 PNG、JPG 等,是图像文件格式。在保存图像时,会在像素数据的基础上进行编码、压缩和封装。
下一节使用 csi 模块配置图像传感器,并继续看图像如何进入缓冲区。