目录
前言
1.摄像头模组(CCM)
1.1 摄像头模组的组成部分
1.2 镜头
1.3 音圈马达(VCM)
1.4 红外滤光片(IR Filter)
1.5 图像传感器(Sensor)
1.6 柔性印刷电路板(FPCB)2.CMOS SENSOR
2.1 sensor简介
2.2 sensor pattern
2.3 sensor结构
2.3.1 lmage sensor core
2.3.2 lmage sensorprocessor;
2.3.3 image output interface
原文参考:ISP从算法到硬件设计——从CCM到sensor结构 - 知乎 (zhihu.com)
优秀参考:博客地址 ------------文章:车载摄像头 – ISP
前言
ISP(lmage signal Processor):图像信号处理器,是摄像头系统中的一个重要组件;
ISP图像信号处理器的主要功能包括:
1. 白平衡(White Balance):调整图像的色温,确保图像中的白色看起来是白色,而不是偏蓝或偏黄。
2. 自动曝光(Auto Exposure):根据场景的光照情况自动调整曝光时间和光圈大小,以保证图像亮度适中。
3. 自动对焦(Auto Focus):根据图像内容自动调整镜头对焦,使图像清晰。
4. 锐化(Sharpening):增强图像的细节,使图像更加清晰锐利。
5. 降噪(Noise Reduction):减少图像中的噪点,提高图像质量。
6. 色彩校正(Color Correction):校正图像中的色彩偏差,使色彩更加真实和准确。
7. 图像压缩(Image Compression):将处理后的图像数据进行压缩,以减小数据量并方便存储或传输。
ISP的性能和算法质量直接影响着摄像头的成像质量和性能表现。
优秀的ISP可以提供更加真实、清晰和色彩鲜艳的图像输出,同时具备快速、准确的自动调节功能,为用户提供更好的拍摄体验。
它负责对从图像传感器采集到的原始图像信号进行处理和优化,以产生最终的高质量图像或视频输出。ISP通常集成在摄像头模块中,与图像传感器紧密配合,对图像数据进行实时处理和增强。
此外一个重要的功能就是控制sensor,修复摄像头的一些缺陷,比如暗电流,镜头畸形等等。那么了解一些摄像头模组结构和一些常用的sensor接口是设计ISP硬件IP的前提了。
那么我们从摄像头模组(CCM)开始。。
1. 摄像头模组(CCM)
1.1 摄像头模组的组成部分
摄像头模组CCM: CMOS camera module。
我们常说的sensor只是真正用的摄像头的一部分,核心部分。真正的摄像头其实由很多部分组成。但是现在很多时候大家说的sensor,其实并没有严格分开sensor和CCM的区别。但是我们工程师还是要区分清楚。
下面是手机上常用的摄像头的结构:
去掉外面的玻璃保护片部分摄像头模组如下:
可以看到,相机模组是由很多部分组成的,主要分为以下几个部分:
- 镜头(Lens)
- 音圈马达(VCM)
- 红外滤光片(IR Filter)
- 图像传感器(Sensor)
- 柔性印刷电路板(FPCB)
1.2 镜头
一般镜头(Lens)都是有几片透镜组成,分为塑料透镜(P)和玻璃透镜(G)。
常用的镜头结构有:1P, 2P, 1G1P, 2G2P, 4G等,透镜越多,成本越高。
玻璃透镜成本高,成像好。
作用:将图像捕捉后,呈现在图像感光器上。(小孔成像)
1.3 音圈马达(VCM)
全称Voice Coil Motor,电子学里面的音圈电机,是马达的一种。因为原理和扬声器类似,所以叫音圈电机,具有高频响、高精度的特点。
其主要原理是在一个永久磁场内,通过改变马达内线圈的直流电流大小,来控制弹簧片的拉伸位置,从而带动上下运动。
手机摄像头广泛的使用VCM实现自动对焦功能,通过VCM可以调节镜头的位置,呈现清晰的图像。如下图所示:
1.4 红外滤光片(IR Filter)
IR Filter 主要作用是透过人眼可见光波段(380~700nm),滤除非可见光。防止Sensor产生偏色、波纹等,提高色彩还原度。
为了给大家一个直观印象,滤光片如下所示,注意,这不是CCM用的红外滤光片,只是类似的。
1.5 图像传感器(Sensor)
图像传感器是摄像头的核心部件。
Image sensor(图像传感器)是一种半导体芯片,其表面有几十万到几百万个光电二极管,光电二极管受到光照就会产生电荷,将光线转换成电信号。其功能类似于人的眼睛,因此sensor性能的好坏将直接影响到camera的性能。
这也是我们重点关注的部分。后面会详细介绍sensor的结构。
1.6 柔性印刷电路板(FPCB)
FPCB负责将摄像头的其他组件与主处理器连接起来。除了前面说到的传输信号控制镜头移动来调焦之外,还有一个主要功能就是将图像传感器的原始数据传输到主控制器。
一种FPCB如下图所示:
好了,走马观花似的介绍了一下CCM的组成部分,主要是为了科普一下。其实不是做模组的专业人员也不用了解太多。
CCM中对图像影响最大的是镜头和Sensor了。一个好的镜头对成像影响很大,“单反毁三代”很多就是毁在玩镜头上,看着几万上十万的镜头,还是我们的sensor比较可爱。
那么我们下面介绍CMOS sensor。
2. CMOS SENSOR
可能大家在教科书上看到过CCD Sensor和CMOS sensor,但是其实现在基本是CMOS sensor一统江湖了。我们做ISP的了解CMOS sensor就好。
2.1 sensor简介
sensor是摄像头的核心,负责将通过Lens的光信号转换为电信号,再经过内部AD转换为数字信号。
sensor是怎么把光转换成电的呢?因为用到了光电二极管。如下图所示:
光照到光电二极管上面,光强就转换成了二极管的电流。通过并行的电容存储起来,就转换成了对应的电压。光照越强,照射时间越久,那么电容的电压就越大。某个时候我们把电容两端的电压通过AD转换成数字信号,就可以得到一个电信号的数字化的值了。
这只是粗略的介绍了一下电到光的转换。可能不是十分准确。但是基本转换就是这样。
这个光电二极管就是sensor感光的最基本的结构了。
2.2 sensor pattern
如果把上面的光电二极管排列成一个矩形,那么就可以得到一个光电二极管的矩形阵列,这样我们就可以得到一个区域的电信号数字化值了。如下图所示:
景物通过小孔成像,投射到一个阵列的sensor上面,通过每个点的光电二极管的感光值,然后经过AD转换就可以得到一个矩形的数字化值了。
把这些数字化的值按照某种规定,比如最大255表示白色,最小0表示黑色,0~255之间的值就表示某种强度的灰色值,那么在屏幕或者纸面上显示出来,就是一副黑白图像了。
这就是黑白图像的成像原理。
好了,我们能够成像了,但是我们的世界是如此多彩,黑白图怎么能够表现出如此美丽的我们呢?神说,要有色彩。工程师说,好,我来创造色彩。
怎么表现色彩了,很简单,牛顿已经告诉我们了,用棱镜可以把白光分成多个颜色,而且光的三原色就是红绿蓝,我们只需要记录这三种颜色就可以了。那么彩色摄像机1.0的结构就出来了。
如下图所示:
光通过镜头进来,我们先通过棱镜把它分成三种颜色,红,绿,蓝。每种颜色用一颗光电二极管阵列记录下来,合起来就是一幅图了。so easy。
好了,产品经理兴高采烈的拿着老大批准的方案去找工程师了,然后就被工程师揍成了猪头。
方案是挺好,工程实现的时候却做不下去了。为什么?
第一: 如果三个色彩要拼成一副图像,那么棱镜分解后的光到每个感光阵列的角度和距离要是一模一样的。这个工程实现十分困难,在sensor发明的那个年代肯定是做不到的。
第二:为了得到一幅彩色图像,需要三个感光阵列,成本太高。要知道,黑白相机刚出来的时候,能玩的起的都是高富帅。
怎么办呢?有没有更好的办法呢?当然有,我们的主角Bayer出现了,提出了Bayer pattern。那就是在每个光电二极管前面加一个滤光单元,只允许红绿蓝其中一种颜色透过。如下图所示:
Bayer Pattern工作原理
光源经过 *Bayer Filter* 后,只有特定颜色的光可以穿过相应颜色的滤波器
RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据。
Bayer pattern又叫RGGB pattern,如下所示:
对于二极管的感光阵列(又叫image array),每4个点作为一个整体。其中一个点只能通过红色光,一个点只能通过蓝色光,两个点能通过绿色光。这就是Bayer patten。
Image array可以看作Bayer pattern的不断复制:
这样,我们只要知道第一个点是通过什么光:红,绿,还是蓝,就能知道image array每个点的滤光情况了。
然后,根据Image array + sensor patten我们就可以得到每个点的红,绿,蓝的值了。怎么得到了,这就是我们ISP需要做到,插值或者叫去马赛克。
比如,第一个点是蓝色,那么我们可以通过它周围的绿色点预测出第一个点的绿色的值大概是多少,同样红色值也是如此。怎么预测呢?这就是图像算法的魅力了。无中生有,厉害吧!
插值或者去马赛克是ISP的一个主要模块,后面会详细介绍它的算法和硬件实现,现在大家知道需要插值才能得到每个点的红绿蓝信息就够了。
可能有的读者很奇怪,为什么Bayer patten绿色点是俩个给,而红色蓝色点是是一个呢?那是因为人眼对绿色的敏感程度恰好是红色或者蓝色的两倍,这样把两个点分给绿色最符合人眼的习惯,也就能得到最符合人眼的视觉的图像了。
最近几年,随着手机,车载等各个方面的创新,各种其他的Pattern层出不穷,比如:RGGB/RCCB/RCCG/RGBIR Pattern
每种pattern都有自己的优缺点,都是为了解决某个特殊需求而产生的。但是,最成熟和最应该掌握的还是RGGB Bayer patten。所以下面我们还是先围绕Bayer patten来介绍,有机会再解释自其他的各种非Bayer patten。
2.3 sensor结构
各家的sensor结构都类似,只是在细微处有差别,个别功能不一样。下面是一个OV的sensor结构图:
sensor 主要由以下几个部分组成:
\1. Image sensor core
\2. Image sensor processor;
\3. image output interface
\4. Control bus
2.3.1 Image sensor core
Image sensor core主要由Image array, AMP & gain control, ADC组成;
像素阵列(image array)就是我们前面提到的,由光电二极管组成的阵列,当然实际的电路每个像素远远不止一个二极管那么简单。
一个典型的sensor的版图如下:
可以看到像素阵列占了整个芯片大部分的面积。像素阵列对应的就是一个个的像素点,也就是我们成像看到的每个像素。
这里说一下,Image array是模拟电路,很难做到很先进的工艺,比如40nm这种水平,而且并不是工艺越先进越好。但是sensor的数字部分比如内部的图像处理和接口逻辑却是纯数字逻辑,这部分却可以做到很先进的工艺比如16nm。所以现在一个方向是sensor里面由于数字部分的工艺越来越先进,反而能塞下更多的数字处理的部分。有些厂商就在这些方面发力,在sensor内部做一些前处理,让sensor输出的图像质量更好。
简化一下这个floorplan如下:
可以看到,像素阵列可以分为Optical Black区域,Active Pixel区域和Dummy border区域。
一般一个sensor的Image array的点的个数会大于实际成像的图像。比如一个1920x1080的sensor,可能实际的Image array的点数是1948x1108;为什么会这么做呢?一是Image array角落的进光量很少,一般会去掉一部分角落的像素点;二是会增加一些功能性的区域,比如Optiacl Black区域用来作为暗电流的对照,留下dummy border 作为后续数字处理的时间余量和传递一些额外信息,比如embedded data告诉外部sensor的曝光值等等;
每个像素的模型如上图的右边所示,主要是光电二极管和电容。一些特性sensor,比如多次曝光可能会由两个电容,但是基本结构就是这样。
Image array另外一个比较重要的就是读出电路了。如下图所示:
其实就是每次选择一行像素输出给后续的数字逻辑,所以图像都是按行逐行输出。来源就是这里的读出模式。
虽然这里的ADC只画了一个,但是真正的CMOS SENOR的ADC是有一行那么多。这和CCD结构有很大区别:
上面是CCD sensor,由于结构原因,CCD只能有一个ADC;而CMOS sensor有一行的ADC。这样在数据输出上,CMOS可以做到很高的帧率,而CCD却很难做到高像素和高帧率。这也是CMOS代替CCD的一个原因之一吧。
很老的sensor ADC的8bit的,代表我们sensor输出的像素每个点是8bit,解析力就是0~255;
现在的sensor一般是10bit,好一点的是12bit,解析力大大提升,图像质量也就线性增加了。有的同学可能很奇怪,为什么不用更高bit的ADC, 比如16bit ADC, 20bit ADC, 这样图像质量不就更好么?Sensor厂商只能说: 臣妾做不到啊!笔者曾经听说,一个公司买一个高精度的ADC IP就花了3亿,而且别人还不愿意卖。如果让sensor厂商去用高精度ADC,可能我们都买不起sensor了。
现在的sensor提高输出图像位数都是通过多次曝光合成HDR的方式来解决这个问题的,这个后面的文章再讲。
还有一个重要的部件是模拟放大器(AMP)和放大器控制。这个功能十分简单粗暴。我们知道每个像素点的值越大,代表这个点越亮。AMP就是直接在每一个点的值上面乘以一个倍数值,比如1.5倍,2.0倍,0.8倍等。这样就可以在暗的时候调亮,在太亮的时候调暗一点。
这个倍数就是Analog gain,对应的另外的一个概念是Digitail Gain。Analog gain可以通过外部来控制sensor的寄存器来控制。
可以看到Image sensor core部分主要是模拟电路,通过ADC转换成数字电路。所以这部分也叫做sensor的模拟部分。
2.3.2 Image sensor processor;
Image sensor processor其实就相当于sensor内部的“mini ISP”, 主要完成一些必要的功能。在500万像素以下,sensor甚至内部完成了整个isp的功能,直接输出YUV图像,外部不再需要ISP处理,但是图像质量一般。随着像素越来越多,sensor功耗限制,现在大尺寸的sensor都是输出RAW格式,内部只做一些必要的处理。比如DPC, LENC等。
这里想说的是,你看到的只是sensor厂商想让你看到的,可能内部还做了其他模块,对你不可见而已。比如内部偷偷做了一个去噪,这样输出噪声水平就低很多(哈哈,我太坏了)。
2.3.3 image output interface
手机,车载sensor常见的接口主要是DVP和MIPI。 DVP是比较老的并行接口;MIPI是高速串行接口。另外安森美自己搞了一个HiSPi接口,但是只有他家自己在用,和MIPI差不多。接口对比如下:
DVP接口:
Digital Video Port: DVP是比较老sensor支持的接口,但是现在的sensor一般都兼容。
DVP采用并行输出方式,d数据位宽有8bit、10bit、12bit、16bit,是CMOS电平信号(重点是非差分信号),PCLK最大速率为96MHz,接口和时序如下图:
HSYNC:horizonal synchronization,行同步信号
VSYNC:vertical synchronization,帧同步信号;
D:像素数据,视频数据,具体位宽不同sensor不一样,一般和ADC位宽一样;
VSYNC代表一帧开始,HSYNC代表一行数据有效,D就是输出的pixel数据的值;这里有两点需要特别注意:
\1. VSYNC在不同的sensor是不一样的,比如OV的sensor和上图一样,VSYNC是一个长脉冲;但是ON/SONY的DVP接口一般是一个电平,从帧开始到帧结束一直为高;
\2. HSYNC在一行之内一直为高,也就是说HSYNC每个cycle就指示了一个有效像素,像素输出必须连续有效。这和Image Array读出行为是一致的,按行连续读。
ISP内部模块之间的接口其实和DVP接口很像,但是一般会增加一个data valid信号,让一行之内数据可以不连续,方便设计。后面介绍ISP设计的时候会再详细解释一下。
MIPI 接口;
MIPI(移动行业处理器接口)是Mobile Industry Processor Interface的缩写。
MIPI联盟是一个开放的会员制组织。2003年7月,由美国德州仪器(TI)、意法半导体(ST)、英国ARM和芬兰诺基亚(Nokia)4家公司共同成立。MIPI联盟旨在推进手机应用处理器接口的标准化 。该组织结集了业界老牌的软硬件厂商包括最大的手机芯片厂商TI、影音多媒体芯片领导厂商意法、全球手机巨头诺基亚以及处理器内核领导厂商ARM、还有手机操作系统鼻祖Symbian。随着飞思卡尔、英特尔、三星和爱立信等重量级厂商的加入,MIPI也逐渐被国际标准化组织所认可 。
由于对更高的图像分辨率、更大的颜色深度和更快的帧速率的需求,今天的主机处理器到摄像机传感器接口的带宽已经达到了极限。但是对于具有跨越多个产品代的性能目标的设计人员来说,更多的带宽是远远不够的。移动行业需要一个标准的、健壮的、可扩展的、低功耗的、高速的、低成本的摄像机接口来支持移动设备的广泛的成像解决方案
MIPI联盟相机工作小组创造了一个清晰的设计路径,不仅是今天的带宽足够灵活来解决挑战但“特性和功能”挑战的行业,每年生产超过十亿手机用户广泛,应用程序和成本点。
MIPI CSI-2和MIPI CSI-3是原MIPI相机接口标准的继承者。这两种标准都在不断演变。两者都是高能力的架构,可以为设计师和制造商提供服务最终消费者——更多的选择和更大的价值,同时保持标准接口的优势。
MIPI CSI2协议和MIPI DPHY的相关知识内容太多,后面会写专门的文章来详细解释。
作为半个MIPI 专家(自封的),这里可以偷偷的告诉你一个工程经验,以后面试别人的时候问一问就可以知道别人到底有没有真的做过MIPI(可能做过也不知道),那就是:
MIPI DPHY 的传输距离一般不超过20cm
因为最开始是用在手机上的,20cm足够了(可能iphone20不够,哈哈);随着MIPI 应用越来越广泛,比如用在电脑上,用在汽车上,那么这个限制就很致命了。怎么解决呢?以后再告诉你。
------------------------------------------
版权声明:
本文作者: 烓围玮未。 主要从事ISP/MIPI/SOC/车规芯片设计
首发于知乎专栏:芯片设计进阶之路
ISP从算法到硬件设计——从CCM到sensor结构 - 知乎 (zhihu.com)
同步微信公众号:芯片设计进阶之路(x_chip)
转发无需授权,请保留这段声明。
------------------------------------------
参考链接:
摄像头的原理、组成、选型及应用 - 知乎 (zhihu.com)
Sensor ISP 图像信号处理系统_rgb888的sensor isp-CSDN博客
ISP(图像信号处理)学习之CAMIF :camera interface 摄像头接口简介_xil-camif-CSDN博客