Antkillerfarm Hacking V7.0

图像处理理论(六)——颜色空间, 霍夫变换, Eigenface

2017-12-25

ISP(续)

Black Level Compensation

为了增加图片的对比度,我们可将该取值范围映射到整个区间。这里一般采用线性变换。

这个过程被称为Black Level Compensation。效果如上图所示,我们开始可以看清一些东西了。

Green Balance

由于Bayer Array的关系,每个点的光强都只是实际光强的一部分。由于接收的绿光较多,通常以绿光光强为基准,对红蓝光强进行修正。这个过程就是Green Balance。

理论上绿光强度应是红蓝光强的两倍,但由于各相机滤光片的性能不同,实际参数略有差异。比如上图相机的RGB修正参数为:[2.648438, 1.000000, 1.484375]

修正效果如下图所示:

Bad Pixel Correction

sensor上可能有坏点存在(如上图中的白点),可以用中值滤波去除之。(参见《图像处理理论(二)》)

Black Level Compensation、Green Balance和Bad Pixel Correction,一般统称为Raw Data Process。这些功能现在通常由图像sensor直接提供,一般不在ISP的处理范畴。

Demosaic

由于RAW Data中的每个像素点只包含一种颜色,因此若要还原成彩色图片,就需要想办法补齐每个像素点缺失的色彩值。这个过程叫做Demosaic。

Demosaic的算法一般如下图所示:

简单来说就是各种插值算法。

Demosaic处理后的图片才是真正的彩色图片,如下图所示:

参考:

https://mp.weixin.qq.com/s/sPmPFdfONapA5Y53AI7hSA

小话Demosaic(一)

https://mp.weixin.qq.com/s/8gRzW4qsX6SBzKn8FJ-hJQ

小话demosaic(二)

AWB(Auto White Balance) & Color Correction

白平衡的基本原理是在任意环境下,把白色物体还原成白色物体,也就是通过找到图像中的白块,然后调整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 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是对图像边缘进行锐化。

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图的来龙去脉

颜色空间

YUV & YCbCr & RGB

在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(高清)。

HSV/HSB & HSL

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的积分,由于运算量比较大,因此又有霍夫梯度法之类的改进算法。

参考:

http://www.cs.jhu.edu/~misha/Fall04/GHT1.pdf

Hough Transform

http://blog.csdn.net/poem_qianmo/article/details/26977557

OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑

http://blog.csdn.net/tianwaifeimao/article/details/17678669

基于LSD的直线提取算法

https://mp.weixin.qq.com/s/WV78mvRn-cYm11cL4l2ScA

开源、快速、高精度的椭圆检测—你值得拥有!

https://mp.weixin.qq.com/s/QEX46FBulPeGEwdlp469hg

基于霍夫变换进行线检测

https://mp.weixin.qq.com/s/pG-7p74-VGT9JpN-cS3i_Q

南开大学提出深度霍夫变换:语义线检测新方法

Eigenface

Eigenface是M. Turk和A. Pentland于1991年提出的人脸识别算法。

Matthew A. Turk,Virginia Tech本科(1982)+CMU硕士(1984)+MIT博士(1991)。UCSB教授。

Alex Paul “Sandy” Pentland,1952年生,MIT博士(1982)。MIT教授。

论文:

《Face recognition using eigenfaces》

计算Eigenface

Step 1:假设有M张训练照片\(I_1,\dots,I_M\),每张照片的尺寸为NxN,将照片\(I_i\)转换成1维vector \(\Gamma_i\)。显然,\(\Gamma_i\)的大小是\(N^2\)。

Step 2:计算均值vector \(\Psi\)(也就是常说的平均脸(average face/mean face)):

\[\Psi=\frac{1}{M}\sum_{i=1}^M\Gamma_i\]

Step 3:计算图片与均值的差:

\[\Phi_i=\Gamma_i-\Psi\]

Step 4:计算协方差矩阵:

\[C=\frac{1}{M}\sum_{n=1}^M\Phi_n \Phi_n^T=AA^T(N^2\times N^2 \text{matrix})\]
Fork me on GitHub