ISP芯片架构及算法初理解

ISP芯片入门

此篇基于
《基于IC设计的实用ISP介绍》
《ISP基本框架及算法介绍》(重点推荐,算法原理也可从中找到)等
进行整理归纳,仅作搬运,不定期更新,欢迎补充。

前言

光通过光学系统入射到探测器的感光区域,探测器经过光电转换,将Bayer 格式的原始图像送给ISP,ISP 经过算法处理,输出空间域图像数据给后端的视频采集单元。其中ISP 由ISP逻辑及运行在其上的固件组成,逻辑单元除了完成算法处理外,还会统计出当前图像的实时信息。固件通过获取ISP 逻辑的图像统计信息,重新计算,反馈控制光学系统,探测器和ISP 逻辑,进而完成自动光圈、自动曝光、自动白平衡等一系列功能,以达到自动调节图像质量的目的。

ISP芯片架构及算法初理解_第1张图片

ISP

ISP全称Image Signal Processing,即图像信号处理。本片所述的ISP主要是针对前端图像传感器输出的信号的后期处理,具体指的是从不同的 sensor输出信号过前级模数处理后的bayer pattern格式数据,到转换成通用的YUV等格式数据的过程,通常用于USB摄像头/监控摄像头/手机/平板等芯片设计中,依赖于ISP才能在不同的光学条件下都能较好的还原现场细节,ISP技术在很大程度上决定了摄像机的成像质量。

ISP主要包括对亮度,色彩和细节三个部分的优化处理。亮度是指对图像整体的亮度调整,涉及到的算法有:自动曝光AE(Auto Exposure),黑电平校正BLC (Black Level Correction),镜头阴影校正LSC (Lens Shading Correction),Gamma,HDR (High Dynamic Ranger)等。涉及到色彩的算法有:白平衡AWB (Auto WhiteBalance),色彩校正Color Correction Matrix,饱和度Saturation,色相Hue等。细节的算法主要有:去噪Denoise,插值interpolation,缩放zoom,边缘增强EE (edge enhance)等。还有一些其他相对特殊的算法,例如自动对焦AF (Auto Focus),防闪烁anti-flick等。

一个简化的ISP算法框架如下图

ISP芯片架构及算法初理解_第2张图片

ISP各个基本算法是相对独立的,但是在整体效果呈现上,又是相互关联的。举例来说,LSC这个算法把要图像四周的拉亮,这就导致图像四周的Noise比较大, 而Noise较大的话,edge enhance就要对四周的像素做特殊处理,使得Noise不会被放大,这会导致图像中心相对清晰,四周相对模糊。各个ISP算法模块,内在是有一些确定的逻辑关系的,上图中的框架结构,有些顺序是可以改变,有些则不可以改变,有些改变会导致算法复杂度提升。同时ISP算法中有不少特性是相互对立矛盾的,例如清晰度和噪声,AWB中的稳定度和精确度,AE中的收稳定性和收敛速度等,这些对立的特性,要根据具体需求或者实际应用场景去做平衡。

常见算法

ISP算法的目的是要让CMOS成像接近人眼的感受效果,所以首先要比较人眼成像和CMOS成像的差异。从图像亮度这方面来看,最重要的就是曝光,其次有针对显示器特性的Gamma映射,针对CMOS sensor 特性的Black Level Correction,针对镜头透光性的Lens shading Correction,以及anti-flick等。与色彩相关最重要的function是自动白平衡AWB和色彩校正矩阵Color Correction Matrix,其他有饱和度Saturation,色相Hue。

Automatic Exposure(AE)

不同场景下,光照的强度有着很大的差别。人眼有着自适应的能力因此可以很快的调整,使自己可以感应到合适的亮度。而图像传感器却不具有这种自适应能力,因此必须使用自动曝光功能来确保拍摄的照片获得准确的曝光从而具有合适的亮度。

AE 模块实现的功能是:根据自动测光系统获得当前图像的曝光量,再自动配置镜头光圈、sensor快门及增益来获得最佳的图像质量。自动曝光的算法主要分光圈优先、快门优先、增益优先。光圈优先时算法会优先调整光圈到合适的位置,再分配曝光时间和增益,只适合p-iris 镜头,这样能均衡噪声和景深。快门优先时算法会优先分配曝光时间,再分配sensor增益和ISP 增益,这样拍摄的图像噪声会比较小。增益优先则是优先分配sensor增益和ISP 增益,再分配曝光时间,适合拍摄运动物体的场景。

自动曝光的实现一般包括三个步骤:光强测量、场景分析和曝光补偿。光强测量的过程是利用图像的曝光信息来获得当前光照信息的过程。按照统计方式的不同,分为全局统计,中央权重统计或者加权平均统计方式等。全局统计方式是指将图像全部像素都统计进来,中央权重统计是指只统计图像中间部分,这主要是因为通常情况下图像的主体部分都位于图像的中间部分;加权平均的统计方式是指将图像分为不同的部分,每一部分赋予不同的权重,比如中间部分赋予最大权重,相应的边缘部分则赋予较小的权重,这样统计得到的结果会更加准确。场景分析是指为了获得当前光照的特殊情况而进行的处理,比如有没有背光照射或者正面强光等场景下。对这些信息的分析,可以提升图像传感器的易用性,并且能大幅度提高图像的质量,这是自动曝光中最为关键的技术。目前常用的场景分析的技术主要有模糊逻辑和人工神经网络算法。这些算法比起固定分区测光算法具有更高的可靠性,主要是因为在模糊规则制定或者神经网络的训练过程中已经考虑了各种不同光照条件。在完成了光强测量和场景分析之后,就要控制相应的参数使得曝光调节生效。主要是通过设定曝光时间和曝光增益来实现的。通过光强测量时得到的当前图像的照度和增益值与目标亮度值的比较来获得应该设置的曝光时间和增益调整量。在实际情况下,相机通常还会采用镜头的光圈/快门系统来增加感光的范围。

Automatic Focus(AF)

自动对焦方面知识,可参考:

自动对焦模块理论基础及其硬件实现浅析(一)
自动对焦模块理论基础及其硬件实现浅析(二
自动对焦模块理论基础及其硬件实现浅析(三)
自动对焦模块理论基础及其硬件实现浅析(四)

Anti-Flick

Flick是由于我们平常所用的交流电是50Hz或者60Hz(美国)的正弦波形,荧光灯辐射能量与此相关,人眼察觉不出来(神经网络刷新频率太低,还是视觉残留效应?),但是CMOS sensor可以观察到,当拍摄被荧光灯照射的场景时就会容易有flick现象。如下图。这是一种垂直方向的正弦波,而且会随着时间滚动。
要解释flick的成因,先要了解CMOS Sensor的曝光方式。Sensor 通常有全局曝光global shutter和滚动曝光rolling shutter两种。Global shutter是指整个Frame pixel在同一时间开始曝光,同一时间结束曝光,然后把数据通过接口传输出来,等数据传输完成之后,再开始下一个Frame的曝光。Rolling shutter是指Frame中各条line上的pixel 按照顺序依次开始曝光,先曝光完成的line 先传输,不必等整个frame都曝光完成。

大部分sensor都支持这两种曝光模式,相比较而言,可以看到rollingshutter对时间的利用率较高,大部分时间可以被利用起来进行曝光。Rolling shutter的缺陷是当有物体高速移动的时候,拍摄到的物体会有变形,矩形变成平行四边形,这可以依照上图原理推断出来。Global shutter不会变形,主要用于拍照片,对fps没有太多要求,单张照片也不存在flick的问题。Rolling shutter用于拍视频,所以会存在flick问题。

Flick的原因在于荧光灯发出的能量在时间上是不均匀的,以我们国家50Hz为例,电压为50Hz正弦波,做平方运算转换到荧光灯的辐射能量,为100Hz的半弦波形状,如下图。假设某个frame的曝光时间为0.025s,即2.5个半弦波,由于采用rolling shutter,每条line的起始曝光时间不一致,Line A和line B可吸收的能量也不相同,Line B 要比Line A亮一些。这样在整个Frame 中就会有垂直方向的波浪纹。如果相邻Frame的间隔不是0.01s的整数倍,那么每条Line 在不同Frame接收的能量也会变化,这样看到的现象是波浪纹会随着时间在画面上滚动。
ISP芯片架构及算法初理解_第3张图片

解决flick的方法很简单,只要限制曝光时间是0.01s的整数倍,那么任意像素吸收的能量都是一样的。然而在户外光照较强的时候,曝光时间为0.01s的时候就会导致过曝,户外也没有荧光灯,不需要强加这个限制,所以在ISP中需要一个检测机制,能够检测出flick的存在,当发现这种flick的时候才对曝光时间进行限制。

Automatic White Balance(AWB)

自动白平衡功能就是模拟了人类视觉系统的颜色恒常性特点来消除光源颜色对图像的影响。首先介绍一下色温的概念。色温源自普朗克定义的黑体受热辐射,单位是K(kelvin),用于定义光源颜色,热黑体辐射体与光源的色彩相匹配时的开尔文温度就是光源的色温。来看一下色温的大致范围:
ISP芯片架构及算法初理解_第4张图片

这是一份在XYZ色彩空间的光源色温曲线,可以看到色彩偏红时色温较低,色彩偏蓝则色温较高。一般烛光在1800K,阴天为5000K,晴天为6500K,蓝色天空在10000K以上。在实际场景中,光源的颜色未必刚好在这条色温曲线上,很可能有一些偏差。

AWB要做的事情,是要让白色的物体,在任何色温条件下,都显示成白色,这是sensor色彩校正的第一步。这里先要说明一下人眼就有非常快速和精准的AWB,以至于我们很少察觉到。举例来说,有一张白纸,不论在什么环境下,我们人眼都会认为是白色的,只有在光源色温大幅度且快速切换的一瞬间(例如开灯/关灯),才会感觉到白纸会变色一下,然后马上又变白了。而CMOS sensor拍摄到的图片,受色温的影响很大,而且Sensor 本身对RGB三个分量的敏感度也不一样(figure3.1.2),因此sensor输出的原始图片和人眼所见差异很大。AWB算法就是要克服sensor本身特性和人眼的不一致,以及解决色温对图像色彩的影响。Sensor输出原本色彩和经过ISP校准后的色彩对比如figure3.1.3. 这里ISP中色彩处理包括AWB和CCM.
ISP芯片架构及算法初理解_第5张图片

Bad Pixel Correction(BPC)

所谓坏点,是指像素阵列中与周围像素点的变化表现出明显不同的像素,因为图像传感器是成千上万的元件工作在一起,因此出现坏点的概率很大。一般来讲,坏点分为三类:第一类是死点,即一直表现为最暗值的点;第二类是亮点,即一直表现为最亮值的点:第三类是漂移点,就是变化规律与周围像素明显不同的像素点。由于图像传感器中CFA的应用,每个像素只能得到一种颜色信息,缺失的两种颜色信息需要从周围像素中得到。如果图像中存在坏点的话,那么坏点会随着颜色插补的过程往外扩散,直到影响整幅图像。因此必须在颜色插补之前进行坏点的消除。

盐椒噪声是一种在图像中产生黑点或白点的脉冲噪声,这类噪声往往和图像信号内容不相关,与邻域周边像素灰度值差别明显。中值滤波能够较好的滤除盐椒噪声(冲激噪声)。对于Sensor坏点来说,在一定程度上也可以看做是盐椒噪声,因此,坏点校正也可以使用中值滤波进行滤除。

另一种是建立坏点像素链表进行固定位置的坏像素点修复, 这种方式是 OTP 的方式。

Black Level Correction(BLC)

Black Level 是用来定义图像数据为 0 时对应的信号电平。由于暗电流的影响, 传感器出来的实际原始数据并不是我们需要的黑平衡( 数据不为0) 。 所以,为减少暗电流对图像信号的影响,可以采用的有效的方法是从已获得的图像信号中减去参考暗电流信号,或者更确切是:模拟信号很微弱的时候,有可能不能被A/D转换出来,导致光线很暗的时候,图像暗区细节丢失。因此,sensor一般会在A/D转换之前,给模拟信号一个偏移量,以确保输出的图像保留足够多的细节。而黑电平校正主要是通过标定的方式确定这个偏移量。使得后续ISP模块的处理在保持线性一致性的基础上进行。

一般情况下, 在传感器中,实际像素要比有效像素多, 像素区头几行作为不感光区( 实际上, 这部分区域也做了 RGB 的 color filter) , 用于自动黑电平校正, 其平均值作为校正值, 然后在下面区域的像素都减去此矫正值, 那么就可以将黑电平矫正过来了。

黑电平校正是在一倍系统增益的情况下标定计算而来,有些sensor在高倍增益和低倍增益时,OB相差会比较大。这个时候就需要获取不同增益环境下的遮黑RAW数据,分析R/Gr/Gb/B四个通道下的mean值。分析出来的均值即为各个通道的OB值。如果需要微调,即可在标定的OB上进行。例如:低照度下偏蓝,即可根据所在的ISO范围将B通道的幅度增加,减轻偏蓝现象。

Brightness

亮度调整是一般摄像头都有的基本属性。通常都是在YCbCr空间对图像每个像素的Y都加上一个ΔY,ΔY可正可负。这样在增加亮度的时候会有明显的缺陷,图像的饱和度会降低,图像变白,视觉效果变差。根据RGB和YCbCR的转换公式可以分析出相同的结论:在Y上增加ΔY,等价于在R/G/B三个分量加上相同的ΔY。 我们常说的色彩鲜艳程度,非常近似于R/G/B之间的相互比例关系。当ΔY为正时,相当于R/G/B之间比例关系趋向于1,即差异变小,所以色彩变淡。那么要保持R/G/B比例关系,对R/G/B用乘法最好了,一样可以提高亮度。不过乘法也自己的问题,一是容易让较大的数据溢出,二是对暗处的亮度提升不明显。因此最好是加法和乘法做个融合,把亮度调整挪到RGB空间做,会有不错的效果。这里给出一个计算公式,对RGB三个分量独立计算,假设用户调整亮度为ΔY,x=R或者G或者B,ΔY 和R/G/G的取值范围都在0~255之间,a为可调参数,范围在0~1,建议为1/4.
f(x, ΔY) = x + aΔY + x(1-a)*ΔY /256
我这个算法命名为基于色彩分量自身的亮度调整算法,效果图如下:
ISP芯片架构及算法初理解_第6张图片
减小亮度的时候,也有类似的问题,直接对Y做减法的时候,暗处的内容就会丢失比较严重,同样可以采取在RGB空间加法和乘法结合的方式。

Color Correction Matrix(CCM)

色彩校正矩阵CCM 通常在RGB domain 进行,并且在AWB之后。AWB把白色校正了,相应的其他色彩也跟着有明显的变化,可以说色彩基本正确了,只是饱和度有点低,色彩略有点偏差。CCM就是要保持白色(灰色)不变,把其他色彩校正到非常精准的地步。

一般颜色校正的过程是首先利用该图像传感器拍摄到的图像与标准图像相比较,以此来计算得到一个校正矩阵。该矩阵就是该图像传感器的颜色校正矩阵。在该图像传感器应用的过程中,及可以利用该矩阵对该图像传感器所拍摄的所有图像来进行校正,以获得最接近于物体真实颜色的图像。

一般情况下,对颜色进行校正的过程,都会伴随有对颜色饱和度的调整。颜色的饱和度是指色彩的纯度,某色彩的纯度越高,则其表现的就越鲜明;纯度越低,表现的则比较黯淡。RGB三原色的饱和度越高,则可显示的色彩范围就越广泛。

一般在不同增益环境下CCM的饱和度会有所不同。例如,低照度小我们可以适当调低CCM饱和度以减轻低照度下色噪。因此,一般ISP会留出接口以便对不同增益下CCM饱和度调整,对一倍增益校正出的CCM参数进行插值计算,计算得到不同增益下较为合适的CCM参数。

Denoise

使用 cmos sensor 获取图像,光照程度和传感器问题是生成图像中大量噪声的主要因素。同时, 当信号经过 ADC 时, 又会引入其他一些噪声。 这些噪声会使图像整体变得模糊, 而且丢失很多细节, 所以需要对图像进行去噪处理空间去噪传统的方法有均值滤波、 高斯滤波等。

但是, 一般的高斯滤波在进行采样时主要考虑了像素间的空间距离关系, 并没有考虑像素值之间的相似程度, 因此这样得到的模糊结果通常是整张图片一团模糊。 所以, 一般采用非线性去噪算法, 例如双边滤波器, 在采样时不仅考虑像素在空间距离上的关系, 同时加入了像素间的相似程度考虑, 因而可以保持原始图像的大体分块, 进而保持边缘。

Demosaic------颜色插值

光线中主要包含三种颜色信息,即R、G、B。但是由于像素只能感应光的亮度,不能感应光的颜色,同时为了减小硬件和资源的消耗,必须要使用一个滤光层,使得每个像素点只能感应到一种颜色的光。目前主要应用的滤光层是bayer GRBG格式。如下图所示:
ISP芯片架构及算法初理解_第7张图片

这样,经过滤色板的作用之后,每个像素点只能感应到一种颜色。必须要找到一种方法来复原该像素点其它两个通道的信息,寻找该点另外两个通道的值的过程就是颜色插补的过程。由于图像是连续变化的,因此一个像素点的R、G、B的值应该是与周围的像素点相联系的,因此可以利用其周围像素点的值来获得该点其它两个通道的值。目前最常用的插补算法是利用该像素点周围像素的平均值来计算该点的插补值。如下图所示,左侧是RAW域原始图像,右侧是经过插值之后的图像。
ISP芯片架构及算法初理解_第8张图片

Gamma

Gamma全称是Gamma矫正,最初起源是CRT屏幕的非线性,研究CRT电子枪的物理表明,电子枪的输入电压和输出光之间满足5.2幂函数关系,即荧光屏上显示的亮度正比于输入电压的5/2次方,这种关系源于阴极、光栅和电子束之间的静电相互作用。由于对于输入信号的发光灰度,不是线性函数,而是指数函数,因此必需校正。

但是实际情况是,即便CRT显示是线性的,伽马校正依然是必须的,是因为人类视觉系统对于亮度的响应大致是成对数关系的,而不是线性的。人类视觉对低亮度变化的感觉比高亮度变化的感觉来的敏锐,当光强度小于1lux时,常人的视觉敏锐度会提高100倍。伽马校正就是为了校正这种亮度的非线性关系引入的一种传输函数。校正过程就是对图像的伽玛曲线进行编辑,检出图像信号中的深色部分和浅色部分,并使两者比例增大,从而提高图像对比度效果,以对图像进行非线性色调编辑。由于视觉环境和显示设备特性的差异,伽马一般取2.2~2.5之间的值。当用于校正的伽马值大于1时,图像较亮的部分被压缩,较暗的部分被扩展;而伽马值小于1时,情况则刚好相反。

现在常用的伽马校正是利用查表法来实现的,即首先根据一个伽马值,将不同亮度范围的理想输出值在查找表中设定好,在处理图像的时候,只需要根据输入的亮度,既可以得到其理想的输出值。在进行伽马校正的同时,可以一定范围的抑制图像较暗部分的噪声值,并提高图像的对比度。还可以实现图像现显示精度的调整,比如从l0bit精度至8bit精度的调整。

Green Balance(GB)

由于感光器件制造工艺和电路问题,Gr,Gb数值存在差异,将出现格子迷宫现象可使用均值算法处理Gr,Gb通道存在的差异,同时保留高频信息。另外一个说法是:Sensor芯片的Gr,Gb通道获取的能量或者是输出的数据不一致,造成这种情况的原因之一是Gr,GB通道的半导体制造工艺方面存在差异,另一方面是Microlens的存在,特别是sensor边缘区域,GB,Gr因为有角度差异,导致接收到的光能不一致。如果两者差异比较大,就会出现类似迷宫格子情况。主要是考虑G周围的G的方法进行平均化。

High Dynamic Range (HDR)

HDR的本意是高动态范围图像压缩。 我们知道一般CMOS sensor拍摄到的照片动态范围较人眼小很多,所以通过不同曝光时间拍摄同一场景的多张照片,实现动态范围扩展。首先明确曝光时间和图像亮度成正比,在已知多张照片曝光时间的条件下,可以把多张照片合成一张高动态范围的图片。举例来说,原始照片中图像内容的亮度范围都是0~255,合成之后亮度范围可能变成了0~1023,这幅高动态照片确实可以呈现所有的图像细节,不过一般显示器的显示范围只有0~255,无法直接显示出来。采用等比例压缩成0~255的话,图像细节丢失比较严重,于是出现了各种压缩动态范围的算法,既能完整呈现图像,又不损失细节。借用百度的图片。
ISP芯片架构及算法初理解_第9张图片

通常我们所说的HDR都是指照片而不是视频,也就是说拍摄好几张不同曝光的照片存在系统的DRAM中,然后由CPU来计算合成,这是由SW来实现的,通常所需时间是秒级。HDR算法种类很多,效果较好的算法也意味着较高的计算复杂度。现在视频拍摄也需要HDR,CPU就容易算不过来,我这里分析一下由数字IC设计来实现HDR的可行性。

要视频HDR,首先需要CMOS sensor支持长短曝光模式,以长/短两种曝光图像合成为例,据我所知有两种输出格式,如下图
ISP芯片架构及算法初理解_第10张图片

对于依次传输的模式,要做二合一融合,必须要把长曝光的整幅图像先存起来,用SRAM的话显然面积会非常庞大,成本太高,因此需要存到系统的DRAM中,等短曝光的图像收到的时候再从DRAM中取出来。这样会占用DRAM的1个Frame存储空间,以及1次读Frame和1次写Frame的带宽。对于混合传输模式,除了可以同样采取把长曝光数据存储到DRAM中的方法以外,也具有把数据放入SRAM的可能性,这要看混合传输时block 大小。以FHD为例,假设先传输100 line的长曝光图像数据,再传输100 line的短曝光图像数据,需要把1920100=192K个pixel存储到SRAM中,为了减小size,通常会在Bayer pattern domain做HDR合成,以pixel为10-bit为例,Totalsize为192K10/8=240K bytes,成本或许可以接受。

HDR算法种类较多,我这里大概介绍一下基本思想。有基于直方图统计特征,进行亮度重新映射的方法,类似于直方图均衡化。有局部处理法,结合整体图像亮度和局部区域对比度,保留细节又压缩范围。有转换到对数域(人眼对亮度的敏感度类似对数关系)进行压缩的方法。有对图像进行分层,分为基础层和细节层,保留细节层,对基础层进行范围压缩的方法。各种方法可以相互融合借鉴,对于IC设计来说,最关键的还是性价比。

Lens Shading Correction(LSC)

由于相机在成像距离较远时,随着视场角慢慢增大,能够通过照相机镜头的斜光束将慢慢减少,从而使得获得的图像中间比较亮,边缘比较暗,这个现象就是光学系统中的渐晕。由于渐晕现象带来的图像亮度不均会影响后续处理的准确性。因此从图像传感器输出的数字信号必须先经过镜头矫正功能块来消除渐晕给图像带来的影响。同时由于对于不同波长的光线透镜的折射率并不相同,因此在图像边缘的地方,其R、G、B的值也会出现偏差,导致CA(chroma aberration)的出现,因此在矫正渐晕的同时也要考虑各个颜色通道的差异性。

常用的镜头矫正的具体实现方法是,首先确定图像中间亮度比较均匀的区域,该区域的像素不需要做矫正;以这个区域为中心,计算出各点由于衰减带来的图像变暗的速度,这样就可以计算出相应R、G、B通道的补偿因子(即增益)。

出于节约成本的考虑以及尺寸方面的原因,手机相机镜头向小型化和低成本方向发展。由于摄像头尺寸小,制造材料品质低,拍摄的图像在靠近边缘处会出现亮度衰减的现象。因此要对 Bayer raw 图像进行镜头衰减校正,以降低计算负荷。使用 LUT 分段线性近似法代替模拟曲线和多项式运算。每种颜色都有自己的 LUT,因此亮度衰减和色偏问题可同时得到解决。

针对不同增益下的LSC校正强度也会有所不一样。低照度下相对会比正常光照情况下校正强度要小一些。因此,ISP会预留接口以便对不同增益下的LSC强度进行调整。抑或者预留接口控制图像不同区域的LSC校正强度。例如:从中心区域开始往图像四周校正强度逐级减弱。

RGBToYUV

YUV 是一种基本色彩空间, 人眼对亮度改变的敏感性远比对色彩变化大很多, 因此, 对于人眼而言, 亮度分量 Y 要比色度分量 U、 V 重要得多。 另外,YUV色彩空间分为YUV444,YUV422,YUV420等格式,这些格式有些比原始RGB图像格式所需内存要小很多,这样亮度分量和色度分量分别存储之后,给视频编码压缩图像带来一定好处。

Sharp

CMOS输入的图像将引入各种噪声,有随机噪声、量化噪声、固定模式噪声等。ISP降噪处理过程中,势必将在降噪的同时,把一些图像细节给消除了,导致图像不够清晰。为了消除降噪过程中对图像细节的损失,需要对图像进行锐化处理,还原图像的相关细节。

为了避免把Noise enhance出来,sharp在实现中还需要判断当前像素处于光滑区域还是物体边缘。当处于光滑区域的时候,则不要做sharp运算,或者做的幅度很小;只有在较明显的边缘上才做处理,这样避免不了边缘上的noise的影响,所以在锐利度s设定较大的时候,可以发现边缘上会有Noise闪动跳跃的情况。为了缓解这种Noise的跳跃,通常会对f(d, g, s)做最大值和最小值限制保护,并且沿着edge 方向做低通滤波来缓解Noise。

sharp大致流程为先判断平坦区域还是边缘,对平坦区域可以不做或者少做sharp(甚至做smooth处理),对边缘要判断幅度大小,边缘方向,选则相对应的高通滤波器处理,最后对enhance的幅度做一定程度的保护处理。

Wide Dynamic Range(WDR)

动态范围(Dynamic Range)是指摄像机支持的最大输出信号和最小输出信号的比值,或者说图像最亮部分与最暗部分的灰度比值。普通摄像机的动态范围一般在1:1000(60db)左右,而宽动态(Wide Dynamic Range,WDR)摄像机的动态范围能达到1:1800-1:5600(65-75db)。

宽动态技术主要用来解决摄像机在宽动态场景中采集的图像出现亮区域过曝而暗区域曝光不够的现象。简而言之,宽动态技术可以使场景中特别亮的区域和特别暗的区域在最终成像中同时看清楚。

3DNR

3dnr 是结合空域滤波和时域滤波的一种降噪算法。大概思路是检测视频的运动水平,更具运动水平的大小对图像像素进行空域滤波和时域滤波的加权,之后输出滤波之后的图像。

你可能感兴趣的:(isp,芯片)