为了增加图片的对比度,我们可将该取值范围映射到整个区间。这里一般采用线性变换。
这个过程被称为Black Level Compensation。效果如上图所示,我们开始可以看清一些东西了。
由于Bayer Array的关系,每个点的光强都只是实际光强的一部分。由于接收的绿光较多,通常以绿光光强为基准,对红蓝光强进行修正。这个过程就是Green Balance。
理论上绿光强度应是红蓝光强的两倍,但由于各相机滤光片的性能不同,实际参数略有差异。比如上图相机的RGB修正参数为:[2.648438, 1.000000, 1.484375]
修正效果如下图所示:
sensor上可能有坏点存在(如上图中的白点),可以用中值滤波去除之。(参见《图像处理理论(二)》)
Black Level Compensation、Green Balance和Bad Pixel Correction,一般统称为Raw Data Process。这些功能现在通常由图像sensor直接提供,一般不在ISP的处理范畴。
由于RAW Data中的每个像素点只包含一种颜色,因此若要还原成彩色图片,就需要想办法补齐每个像素点缺失的色彩值。这个过程叫做Demosaic。
Demosaic的算法一般如下图所示:
简单来说就是各种插值算法。
Demosaic处理后的图片才是真正的彩色图片,如下图所示:
参考:
https://mp.weixin.qq.com/s/sPmPFdfONapA5Y53AI7hSA
小话Demosaic(一)
https://mp.weixin.qq.com/s/8gRzW4qsX6SBzKn8FJ-hJQ
小话demosaic(二)
白平衡的基本原理是在任意环境下,把白色物体还原成白色物体,也就是通过找到图像中的白块,然后调整R/G/B的比例。
AWB算法通常包括的步骤如下:
(1)色温统计:根据图像统计出色温;
(2)计算通道增益:计算出R和B通道的增益;
(3)进行偏色的矫正:根据给出的增益,算出偏色图像的矫正。
由于色温这个东西并不好测量,学界提出的各种模型也各有其局限,因此业界通常采用如下的简易算法实现AWB:
\[K=\frac{R_{aver}+G_{aver}+B_{aver}}{3}\] \[K_r=K/R_{aver}\] \[K_g=K/G_{aver}\] \[K_b=K/B_{aver}\] \[R_{new}=R*K_r\] \[G_{new}=G*K_g\] \[B_{new}=B*K_b\]由于人类眼睛可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,还有透镜等的影响,得到的RGB值颜色会存在偏差,因此必须对颜色进行校正。
经过AWB和Color Correction后的效果如下所示:
人眼对外界光源的感光值与输入光强不是呈线性关系的,而是呈指数型关系的。在低照度下,人眼更容易分辨出亮度的变化,随着照度的增加,人眼不易分辨出亮度的变化。而摄像机感光与输入光强呈线性关系。如下图所示:
为方便人眼辨识图像,需要将摄像机采集的图像进行gamma校正。修正后的效果如下:
参考:
http://www.cnblogs.com/pzxbc/archive/2011/12/26/2302572.html
Gamma矫正(Gamma correction)
http://blog.csdn.net/lichengyu/article/details/8457425
Gamma校正及其OpenCV实现
Denoise是指去除噪声,一般使用低通滤波器即可。
Sharpness是对图像边缘进行锐化。
Denoise & Sharpness或者后续更复杂的处理,都属于图像增强的范畴了。这里功能的多少主要取决于ISP的性能,并不是每个ISP都有。
720p->1080p->4K->8K
这里稍微注意一下就会发现,2K到哪里去了?
其实,1080p就是2K。早先的称呼中,数字表示的是垂直分辨率,也就是矩形的宽。比如1080p实际上是1920x1080。但后来的称呼大约是为了体现数量,改为了水平分辨率,也就是矩形的长。
参考:
www.cnetnews.com.cn/2016/0128/3072316.shtml
揭秘电视分辨率:1080p、2K、UHD、4K、8K,它们都是什么鬼?
上面提到的主要是普通相机的ISP,但从目前的趋势来看,由于汽车自动驾驶技术的目标逐渐趋于全自动驾驶,以人的视觉友好性为目的的图像色彩重建变得多余,而以计算机视觉友好性为目的的图像质量需求将会进一步增加。
3A技术指的是自动对焦(AF,Auto Focus)、自动曝光(AE,Auto Exposure)及自动白平衡(AWB,Auto White Balance)。
https://www.cnblogs.com/lifan3a/articles/5006772.html
相机的3A技术
http://www.cnblogs.com/agllero/p/4489689.html
Image Signal Processor
http://blog.csdn.net/yapingmcu/article/details/9215747
camera isp(Image Signal Processor)
http://blog.csdn.net/weijory/article/details/53306545
ISP算法概述
http://www.cnblogs.com/whw19818/
一个ISP的blog
https://github.com/codeauroraforum/gtec-demo-framework/tree/master/DemoApps/OpenVX/SoftISP
一个基于OpenVX的ISP软实现。
https://mp.weixin.qq.com/s/w2d1lRdQoKCrupJD2S4fDQ
长文详解RAW图的来龙去脉
印刷色和发光色的混合模式是不一样的。
发光色是发射光,可以做加法。如RGB模式。
印刷色是反射光,不能做加法,而要做减法。
印刷业多采用CMYK模式,并使用减色法配色。
人类的视觉基于红绿蓝三种视锥细胞的刺激值。
不同的细胞有不同的刺激函数,长这样:
细胞对入射光光谱和自己刺激函数做内积,就得到了刺激值。一个光被三种视锥细胞分别做内积,就得到了XYZ三个刺激值。
我们可以将RGB色系和XYZ色系对应起来得到一个非齐次方程组。
\[\begin{align} & K_{11}R+K_{12}G+K_{13}B=X \\ & K_{21}R+K_{22}G+K_{23}B=Y \\ & K_{31}R+K_{32}G+K_{33}B=Z \end{align}\]对于任意XYZ,理论上RGB方程都是有解的,但是,这个解可能是负数。
而负的RGB值,意味着像素需要发出能量为负的光。
这是不可能的。所以,RGB只能表示上图三角形内部的颜色,对外部无能为力。
https://www.zhihu.com/question/31212945
世界上(整个自然界)所有颜色都能用RGB组合而成吗?
https://www.zhihu.com/question/624732945
为什么古代紫色稀有?明明蓝红可以调出来?
1931年,法国巴黎,国际照明委员会CIE决定开会讨论照明的颜色标准化问题。
https://mp.weixin.qq.com/s/a1Bq2HkQav0_z8_q6IulLg
颜色科学进化史(1)
在RGB颜色空间中,红,绿,蓝是基本元素。RGB格式是显示器通常使用的格式。
然而,人类视觉系统(HVS)相比亮度来说对于颜色不是那么敏感的。通过把亮度与颜色信息分离,并对亮度值取更高的分辨率可以更有效地表示一个颜色图像。这就是所谓的YUV颜色空间。Y表示亮度,B-Y(即U)、R-Y(即V)是色差信息。
实际使用中,为了更有效率,又定义了YCbCr格式。两个Y、Cb和U、Cr和V的含义相同,但是表示方法不同。YCbCr在YUV的基础上,进行了比例和偏置变换。
相关的定义及转换标准是:ITU-R Recommendation BT.601(标清)和ITU-R Recommendation BT.709(高清)。
RGB和YUV都是针对设备的颜色空间,反映的是设备产生的光的物理特性。但是人眼对于光的颜色的感知是非线性的,因此又有了针对人眼的HSV/HSB、HSL颜色空间。
HSV/HSB为Hue(色相), Saturation(饱和度), Value/Brightness(明度)。
HSL为Hue, Saturation, Lightness(亮度)。
类似的还有Munsell Color System,即HCV:Hue, Chroma(色度), Value。
参考:
https://mp.weixin.qq.com/s/f0ppg3ow-XKNuP1eNjh1-w
色差计算进化史
https://zhuanlan.zhihu.com/p/103387082
色彩空间
https://mp.weixin.qq.com/s/SaCqrhd8RVeKGDqo6vhUjg
图像色彩空间与应用转换
https://mp.weixin.qq.com/s/OM6y9Za9OUTYcQfr43RoIQ
基于OpenCV的彩色空间互转
https://mp.weixin.qq.com/s/rzZU7bylqiPRGJwQ1zz4MQ
Camera和Display颜色评测色空间简介
Hough Transform最早是Paul V.C. Hough于1962年在一篇专利中提出的。1972年,Richard O. Duda和Peter E. Hart对其进行了扩展,并发表论文《Use of the Hough Transformation to Detect Lines and Curves in Pictures》。但是直到1981年,Dana H. Ballard发表《Generalizing the Hough transform to detect arbitrary shapes》之后,它才被人广泛使用。
Paul V.C. Hough,生平不详。只知道是个物理学家,曾在Brookhaven National Laboratory工作过。
Richard O. Duda,MIT博士,圣何塞州立大学教授。曾供职于SRI International。
Peter E. Hart,斯坦福大学博士。SRI International研究员。
Dana Harry Ballard,1946年生,UCI博士,德克萨斯大学教授。
这篇文章介绍了霍夫变换的发现史:
https://mp.weixin.qq.com/s/YvC6HVHdAQ3GI6U69gBDYA
霍夫变换是怎么发明的
如上图所示,一条直线的解析方程在x-y坐标系下是:
\[y=mx+b\]而在极坐标系下则为:
\[r= x\cos\theta + y\sin\theta\]上式中包含两个参数\(r,\theta\),由\(r-\theta\)组成的平面又被称作parameter space或Hough space。
对于一个给定点\((x_0,y_0)\)我们在\(r-\theta\)平面绘出所有通过它的直线, 将得到一条正弦曲线。如下图所示:
对于同一直线上的三点\((x_0,y_0),(x_1,y_1),(x_2,y_2)\),它们在\(r-\theta\)平面上的三条正弦曲线交于一点\((r,\theta)\),而这一点正好是该直线在极坐标系下的解析方程的参数值。如下图所示:
可以想像,如果该直线上的点更多一些,那么在\(r-\theta\)平面上就有更多的正弦曲线交于一点,最终情况将如下图所示:
由此,我们可以总结Hough Transform的一般过程:
1.首先对图片进行边缘化处理。
2.将边缘上的点映射到parameter space中。
3.追踪图像中每个点对应曲线间的交点. 如果交于一点的曲线的数量超过了阈值, 那么可以认为这个交点所代表的参数对在原图像中为一条直线。
上面说的是霍夫线变换,类似的还有霍夫圆变换。只不过圆的参数有三个,即:
\[(x_{center},y_{center},r)\]高维parameter space的积分,由于运算量比较大,因此又有霍夫梯度法之类的改进算法。
您的打赏,是对我的鼓励