下冰雹 · 2023年01月28日

摄像头如何获取彩色图片?谈谈ISP怎么实现全彩图

摄像头是如何获取彩色图片的?先和大家说下CMOS图像传感器的工作原理。下图是一个CMOS传感器典型电路,4T-APS电路图。该电路实现了光电信号的转换,捕捉到外部的图像信息。

image.png
接下来我们带大家简单认识下这个电路。

下图红色圈起来的部分是PD(光电二极管),作用实现光电转换。它的基本原理就是通过光子激发,使硅中的电子产生跃迁,形成光电转换。

image.png

下图红色圈起来的部分是FD(浮置扩散区),FD类似一个电容,他的作用是存储PD产生的电子。TG是控制PD电子传输到FD的开关。

image.png

下图红色圈起来的部分是Reset信号,他的作用是清空FD中的残留电子。

image.png

下图红色圈起来的部分是源随器RS,用来控制浮置扩散区的电子传输到信号线的开关。

image.png
我们看看4T-APS 电路的工作过程。

首先光照在PD上进行曝光。PD上积累电子。

image.png

第二步打开reset,清空FD上的残留电子,PD继续曝光。

image.png

第三步,关掉reset,关掉RS,打开TG。让电子传输到FD中。

image.png

第四步,关掉TG,打开RS,将光电转换信息传送到信号线上,完成一个图像像素的一次采集。

image.png

从上面的过程中我们可以看到,CMOS传感器能够采集到光线的强度。通过将CMOS传感器排布成阵列,不同位置采集到的光线强度不同,就可以获取图像信息。但是由于CMOS传感器只能采集强度信息,无法采集到色彩信息,如果我们不对来源的光线进行特殊处理,那么我们获取的是黑白图片。

怎么获取彩色图片呢?我们知道色彩是由红,绿,蓝三种基色组成,假如我们每个CMOS传感器只采集一种基色的光,最后拼接起来不就是彩色的?

想法有了,我们能不能在一个像素点布局三个CMOS传感器分别采集三种颜色的光?这在物理结构上非常难实现。我们退而求其次,用相邻的像素点采集不同的颜色,然后通过图像算法恢复每个像素点的不同颜色的分量。现在的问题变成如何在不同的像素点采集不同颜色的光。

1976年伊士曼·柯达公司的科学家Bryce Bayer发明了拜耳滤色器(Bayer Filter)。拜耳滤色器(Bayer Filter)是一种将RGB滤色器排列在光传感组件方格之上所形成的马赛克彩色滤色阵列,实现不同像素点采集不同颜色的光。

image.png

下面是一张相机获取图像的示意图。场景的光线通过摄像头聚焦后送到滤色器,经过滤色后送到图像传感器。最终获取每个像素点唯一色彩的图像原始数据。

image.png

根据不同的颜色滤镜阵列排布,获取的原始数据有四种排列格式。由于人眼对绿光比较敏感,所以Bayer在发明滤色器时使用两倍于红色或蓝色的绿色组件来模仿人眼的生理性质。

image.png

根据不同的颜色阵列的排布,上面bayer格式分为BGGR,GBRG,GRBG,RGGB四种格式。

CMOS 图像传感器获取的原始数据不是真彩图。如果我们硬要显示原始数据的图片,大概是下面的效果。

image.png

如何获取真彩图?下面需要ISP里面的demosaicing处理。其思想是从相邻的像素中通过插值的方法补全每个像素的R,G,B 分量。

在传统的ISP中有很多算法可以来做这个插值,包括最近邻域法,bilinear 插值,cubic 插值等

在处芯积律SOC V2.0的项目里面,我们采用了Hibbard原理的边缘检测和色差的CFA插值法。其基本思想是在图片的小平滑区域内,色差恒定。假设像素点P(i,j)邻近的一个像素点是P(m,n)则有:

image.png

我们现在以BGGR格式的bayer 数据为例。

BGGR的格式大概如下面格式

image.png

假设我们采集到的数据是下面格式

image.png

我们首先计算各个像素点的绿色分量,G23这个点的绿色分量就是CMOS传感器采集到的值。G33这个点的绿色分量怎么计算?,由于G32,G34,G23,G43的值都有,可以采用下面这种方式。

diffA\= abs(G32 - G34)

diffB\= abs(G23 - G43)

G33 = (G32 + G34) / 2, 当(diffA < diffB) 垂直方向差值较大,取水平方向均值

G33 = (G23 + G43) / 2, 当(diffA > diffB) 水平方向差值较大,取垂直方向均值

G33 = (G32 + G34 + G23 + G43) / 4, 当(diffA == diffB) 差值一样大,取均值

通过类似的方法,我们可以算出图像中大部分像素的G分量。

然后我们计算R分量。我们观察离R33最近的R值有R22,R24,R42,R44。

根据色差恒定原理

R22-G22=R33-G33,R24-G24=R33-G33,R42-G42=R33-G33,R44-G44=R33-G33。

由此我们可以得出 R22+R24+R42+R44-G22-G24-G42-G44=4(R33-G33);

最终可以计算出R33 为:

R33 = G33 + (R22 + R24 + R42 + R44) / 4 - (G22 + G24 + G42 + G44) / 4

类似的我们计算R34,最邻近的R值是R24,R44。通过色差恒定原理可以计算出

R34 = G34 + (R24 + R44) / 2 - (G24 + G44) / 2

B分量也采用类似的方法计算出来。如B34,邻近B34的B分量是B33,B35。通过色差恒定原理可以计算出

B34 = G34 + (B33 + B35) / 2 - (G33 + G35) / 2

用上述方法,我们可以恢复每个像素点的R,G,B分量从而获取全彩图。

image.png

在采集自然界的色彩方法上,人类采用非常巧妙的方法。在我们享受五彩斑斓的视频,相片时,我们也得感谢像Bayer这样的工程师为此做出的贡献。

以上是我们本篇文章的所有内容,感谢大家阅读。处芯积律 SOC V2 项目中更多技术细节我们后续文章会陆续揭晓。

关于SOC V2.0 的项目介绍,大家可以看这里。

SOC V2.0项目较SOC V1.0有哪些改进?

作者: 梨果爱秋天
文章来源:处芯积律

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏。
迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
10974
内容数
1216
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息