http://antkillerfarm.github.io

HOG

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特征本身并不复杂,就是用图中黑色矩形区域内所有像素值的和减去白色矩形区域内所有像素值的和,得到的值称为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

ISP(Image Signal Processor),图像信号处理器,是运用在相机或者具备拍摄功能设备上的一种芯片。在相机成像的整个环节中,它负责接收感光元件(Sensor)的原始信号数据,可以理解为整个相机拍照、录像的第一步处理流程,对图像质量起着非常重要的作用。

ISP的一般流程如下所示:

下文以如下示例图片的处理流程为例,对整个流程做一个简单的概述。

图像sensor

相机的图像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相机):

RAW Data

图像sensor数字采样的结果,就是所谓的RAW Data。

RAW Data的取值范围取决于sensor的处理器位宽。比如12bit的范围就是0~4095。

考虑到噪点(由热/电噪声产生的光点)的存在,一般会给取值范围设一个>0的下限以过滤噪点,这就是Black Level。这里令Black Level=128,则取值范围为128~4095。

由于实际场景的光强度范围通常只占所有光强可见范围的很小一段,因此,RAW Data直接看起来就像是一块几乎纯色的图片。

比如下图所示的RAW Data,由于取值主要集中于低值区间,因此看起来就是黑乎乎的一片,什么也看不出来。

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处理后的图片才是真正的彩色图片,如下图所示:

AWB(Auto White Balance) & Color Correction

白平衡的基本原理是在任意环境下,把白色物体还原成白色物体,也就是通过找到图像中的白块,然后调整R/G/B的比例。

AWB算法通常包括的步骤如下:

(1)色温统计:根据图像统计出色温;

(2)计算通道增益:计算出R和B通道的增益;

(3)进行偏色的矫正:根据给出的增益,算出偏色图像的矫正。

由于色温这个东西并不好测量,学界提出的各种模型也各有其局限,因此业界通常采用如下的简易算法实现AWB:

K=Raver+Gaver+Baver3K=Raver+Gaver+Baver3

K=\frac{R_{aver}+G_{aver}+B_{aver}}{3}

Kr=K/RaverKr=K/Raver

K_r=K/R_{aver}

Kg=K/GaverKg=K/Gaver

K_g=K/G_{aver}

Kb=K/BaverKb=K/Baver

K_b=K/B_{aver}

Rnew=R∗KrRnew=R∗Kr

R_{new}=R*K_r

Gnew=G∗KgGnew=G∗Kg

G_{new}=G*K_g

Bnew=B∗KbBnew=B∗Kb

B_{new}=B*K_b

由于人类眼睛可见光的频谱响应度和半导体传感器频谱响应度之间存在差别,还有透镜等的影响,得到的RGB值颜色会存在偏差,因此必须对颜色进行校正。

经过AWB和Color Correction后的效果如下所示:

Gamma 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是对图像边缘进行锐化。

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软实现。

图像处理理论(四)——HOG, Haar, ISP相关推荐

  1. 《OpenCv视觉之眼》Python图像处理十四 :Opencv图像轮廓提取之Scharr算法和Canny算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  2. 【计算机视觉】数字图像处理(四)—— 图像增强

    数字图像处理(四)-- 图像增强 图像增强的定义 图像增强方法 一.图像增强的点运算 (一)灰度变换 1. 线性变换 2. 分段线性变换 3. 非线性灰度变换 对数变换 指数变换 (二) 直方图修整法 ...

  3. 图像处理理论(五)——SIFT

    SIFT 概述 SIFT算法是CV领域在DL进入之前的20年中,最重要的成果. 尺度不变特征转换(Scale-invariant feature transform或SIFT)是一种电脑视觉的算法用来 ...

  4. 《OpenCv视觉之眼》Python图像处理十九:Opencv图像处理实战四之通过OpenCV进行人脸口罩模型训练并进行口罩检测

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  5. 数字图像处理第四版PDF

    数字图像处理第四版PDF 要的私信(https://img-blog.csdnimg.cn/ce7b56995c444639a944d4630930ee07.png)(https://img-blog ...

  6. 数字图像处理第四章——图像复原(下)

    数字图像处理第四章 数字图像处理---图像复原 (三)仅有噪声的复原--空间滤波 3.1 空间噪声滤波器 3.2 自适应空间滤波 (四)退化函数建模 (五)维纳滤波 (六)约束的最小二乘法(规则化)滤 ...

  7. 数字图像处理实验四图像频域增强

    一.实验目的 (1)了解图像增强的目的及意义,加深对图像增强的感性认识,巩固所学的图像增强的理论知识和相关算法. (2)熟练掌握低通.高通.带通.同态滤波器的使用方法,明确不同性质的滤波器对图像的影响 ...

  8. 特征提取与检测(四) : HOG特征

    一.HOG简介 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯 ...

  9. 数字图像处理——第四章 频率域滤波

    数字图像处理--第4章 频率域滤波 文章目录 数字图像处理--第4章 频率域滤波 频率域 1.傅里叶级数原理 1.1.一维傅里叶变换 1.2.二维傅里叶变换 2.python×傅里叶级数 2.1.傅里 ...

最新文章

  1. linux命令head
  2. Visual Studio 智能提示功能消失解决办法
  3. Halcon知识 : 乘法图像融合
  4. 30岁的互联网人你靠什么而立?
  5. winPcap_2_编译环境*注意*
  6. 【Python基础】当变量有值时,为什么会出现UnboundLocalError?
  7. Linux 命令之 sudo -- 以其他用户身份来执行命令
  8. php不发送referer,php – 注意:未定义的索引:HTTP_REFERER
  9. jQuery仿京东首页广告图片切换图片轮播
  10. 1.12 改善你的模型的表现
  11. LINE: 在windows上运行原生linux程序 (2) : demo完成
  12. Vue路由及路由守卫
  13. 安卓平板python编程软件下载_10 个可以在平板电脑上使用的 Python 编辑器
  14. 简单的下载者木马分析
  15. 系统运维工程师面试的11大热门问题
  16. 计算机英语常见计算符号,常见计算机英语词汇解释
  17. vi设计管理手册的体系
  18. 二进制安装Kubernetes(k8s) v1.24.0 IPv4
  19. [2022.1.13]UPC-2021级新生个人训练赛第22场-9783 Problem H 铺地砖
  20. 9.Android 万能ViewHolder

热门文章

  1. Windows下在xampp中配置DVWA
  2. >mysql -uroot -p Enter password: ERROR 1045 (28000): Access denied ,被mysql连接问题折磨到问题解决,分享
  3. linux 查看强制位,linux强制位与冒险位
  4. java i o中文版_Java文件I/O的三种方法
  5. 安装了silverlight还是提示_win10系统安装.netframework3.5方法
  6. python中str函数_一文让你彻底搞懂Python中__str__和__repr__?
  7. react日期格式化实例
  8. springboot+sockjs进行消息推送(群发)
  9. RabbitMQ入门(三)-Publish/Subscribe(发布/订阅)
  10. vue学习笔记(1)-组件通信