图像 ISP 处理流程以及新人学习图像的注意点

1 什么是 ISP ?

        ISP 全称 Image Signal Processing,即图像信号处理。

        景物通过光学图像投射到 sensor 表面后,光电转换为模拟电信号,消除噪声后经过 A/D 转换后变为数字图像信号。由于原始的图像是 Bayer 图像,因此需要通过一定的技术转换成一张色彩正常的 RGB 通道的图像。这个过程涉及到以下的基本流程:

1.1 BLC 模块

        BLC (Black Level Correction)模块为了校正黑电平(图像数据为0时的信号电平)。因为 A/D 芯片无法输出电压值极小的信号,以及 sensor 电路本身存在暗电流(没有光照条件下依然有一定的输出电压)。  

1.2 Demosaic 插值模块

        该模块实现 Bayer 数据转换成 RGB 数据的功能,通过颜色插值后使得每个像素都具有三个通道数据。

1.3 White Balance 模块

        Bayer 经过插值后的 RGB 数据显示通常偏向绿色。Bayer 数据中,绿色像素占总像素的一半(因为人的眼睛对于绿色更加敏感,这也是 Bayer 格式设计的初衷),需要对偏色进行修正。白平衡操作可以在颜色插值后进行,也可以在黑电平操作后进行。

1.4 CCM 模块

        CCM (Color Correction Matrix) 模块通过矩阵运算,调节图像的饱和度,颜色校正等功能。

1.5 Gamma 模块

        模块主要用于调节图像的对比度和亮度,通过 Gamma 曲线进行映射,获得新的像素值。

1.6 CSC 模块

        该模块通过矩阵运算并叠加偏移量,实现 RGB 向 YUV 数据的转换。为什么要转换呢?因为 YUV 数据分离了图片不同的信息,且由于采样方式不一样,压缩了数据,便于存储。

1.7 Sharpen 模块

        锐化模块提高图像的清晰度,但是作用太强会放大噪声,同时会造成白边和锯齿等现象。

1.8 DN 模块

        降噪模块用于降低图像的躁点。

2 新人学习 ISP 流程的注意点

  • 需要一定的编程基础,至少懂得一门语言。在这个基础上需要熟练掌握一门脚本和编程语言。推荐 Matlab 进行仿真工作,用 C 语言或者 C++ 进行工程工作。
  • 对自身工作具有一定的兴趣
  • 在初次编程过程中可能会遇到的问题:
  1. 如何读取数据
  2. 图像数据的类型
  3. 图像数据的结构
  4. 如何进行矩阵运算
  5. 计算过程中溢出的数据如何截断
  6. 各个图像的算法原理是什么,如何改进,不同算法之间的区别是什么
  7. 图像如何显示
  8. 尤其掌握 C 语言的基本语法(主要掌握指针使用和内存分配问题)等等。

 

你可能感兴趣的:(数字图像)