http://antkillerfarm.github.io
Histogram of oriented gradients是一种用于物体检测的算子。
HOG的计算步骤,如上图所示:
1.首先将图像均匀的分为若干个区域。这样的区域一般叫做Bin或Cell。
2.计算一个Cell中每个像素的梯度值。
3.将梯度值分为若干个区间,统计一个Cell中落在该区间的像素的个数,以得到直方图。
将整幅图所有Cell的HOG交给SVM或者AdaBoost之类的分类器,以获得待识别物体的HOG特征。
参考:
https://mp.weixin.qq.com/s/1l1OU81-BDlvyLZo6eM-4g
方向梯度直方图
https://buptldy.github.io/2016/03/31/2016-03-31-HOG%20Note/
《Histograms of Oriented Gradients for Human Detection》Note
Haar特征本身并不复杂,就是用图中黑色矩形区域内所有像素值的和减去白色矩形区域内所有像素值的和,得到的值称为Haar特征值。
同样的,将整幅图所有Cell的Haar特征值交给SVM或者AdaBoost之类的分类器,就得到了待识别物体的Haar特征。
从上面的描述可以看出:早期的算子主要从信号处理的角度出发,而HOG和Haar开始考虑使用统计学方法提取有效特征。这也是90年代后期,统计学被引入CV界的直接结果。
Alfréd Haar,1885~1933,匈牙利数学家。哥廷根大学博士,导师是David Hilbert。Franz Joseph University教授。
Franz Joseph University是一所现在已经不存在的大学,有“小哥廷根”的称号,因为这里的数学系有大量的哥廷根大学毕业生执教。大学所在地Kolozsvár,在二战前后,一会儿归罗马尼亚,一会归匈牙利。当1945年,罗马尼亚最终接管该地之后,将学校的校舍分给了一所罗马尼亚大学,而将学校教师迁往别处,另建了一所大学。
吐槽一下,罗马尼亚主动投靠元首,却弄的割地予人,实在是太讽刺了。PS:记得10年前在学校读书的时候,CV还从属于信号处理专业。但以今日的角度来看,恐怕从属于CS专业,似乎更合适一点。从招聘信息看,现在的CV工作,已经很少提及信号处理的能力了。
参考:
http://www.cnblogs.com/ello/archive/2012/04/28/2475419.html
浅析人脸检测之Haar分类器方法
https://mp.weixin.qq.com/s/g-F-D5PC75BjbaRBmifnZw
人脸Haar特征与快速计算神器:积分图
ISP(Image Signal Processor),图像信号处理器,是运用在相机或者具备拍摄功能设备上的一种芯片。在相机成像的整个环节中,它负责接收感光元件(Sensor)的原始信号数据,可以理解为整个相机拍照、录像的第一步处理流程,对图像质量起着非常重要的作用。
ISP的一般流程如下所示:
下文以如下示例图片的处理流程为例,对整个流程做一个简单的概述。
相机的图像sensor,一般可分为两种,如下图所示:
Foveon X3:Foveon公司的这种sensor(上图左侧)拥有三个感光层,可在不同的深度撷取RGB色光。
Foveon X3虽然色彩不失真,但制作工艺比较复杂,目前只用在少数(10款左右)高端相机中。
Bayer Array:绝大多数相机使用的是上图右侧所示的sensor。这种sensor由两层材料组成。下层是感光层,上层是滤光片。上层中RGB三色滤光片的排列方式被称为Bayer Array。
Bryce E. Bayer,1929~2012,美国科学家。 University of Rochester硕士。Kodak公司研究员。
一个Bayer Array的最小单元包含4个像素点(两个绿色滤光片+一个红色滤光片+1个蓝色滤光片)。两个绿色点呈对角分布,红色点和蓝色点占据剩余的空间。
绿色位于可见光频谱的中段,也是最常见的颜色,所以采样要多一些。
除了Bayer Array之外,还有Fuji Array(主要用于Fuji相机):
图像sensor数字采样的结果,就是所谓的RAW Data。
RAW Data的取值范围取决于sensor的处理器位宽。比如12bit的范围就是0~4095。
考虑到噪点(由热/电噪声产生的光点)的存在,一般会给取值范围设一个>0的下限以过滤噪点,这就是Black Level。这里令Black Level=128,则取值范围为128~4095。
由于实际场景的光强度范围通常只占所有光强可见范围的很小一段,因此,RAW Data直接看起来就像是一块几乎纯色的图片。
比如下图所示的RAW Data,由于取值主要集中于低值区间,因此看起来就是黑乎乎的一片,什么也看不出来。
为了增加图片的对比度,我们可将该取值范围映射到整个区间。这里一般采用线性变换。
这个过程被称为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处理后的图片才是真正的彩色图片,如下图所示:
白平衡的基本原理是在任意环境下,把白色物体还原成白色物体,也就是通过找到图像中的白块,然后调整R/G/B的比例。
AWB算法通常包括的步骤如下:
(1)色温统计:根据图像统计出色温;
(2)计算通道增益:计算出R和B通道的增益;
(3)进行偏色的矫正:根据给出的增益,算出偏色图像的矫正。
由于色温这个东西并不好测量,学界提出的各种模型也各有其局限,因此业界通常采用如下的简易算法实现AWB:
由于人类眼睛可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,还有透镜等的影响,得到的RGB值颜色会存在偏差,因此必须对颜色进行校正。
经过AWB和Color Correction后的效果如下所示:
人眼对外界光源的感光值与输入光强不是呈线性关系的,而是呈指数型关系的。在低照度下,人眼更容易分辨出亮度的变化,随着照度的增加,人眼不易分辨出亮度的变化。而摄像机感光与输入光强呈线性关系。如下图所示:
为方便人眼辨识图像,需要将摄像机采集的图像进行gamma校正。修正后的效果如下:
参考:
http://blog.163.com/hong.lg0518@126/blog/static/18907460200972711556304/
伽马校正(Gamma Correction)
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都有。
参考:
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软实现。