点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达本文转自|机器学习算法那些事

引言

之前写过很多图像直方图相关的知识跟OpenCV程序演示,这篇算是把之前的都回顾一波。做好自己的知识梳理。

图像直方图

图像直方图是图像的基本属性之一,也是图像像素数据分布的统计学特征,常见的图像直方图可以分为二值图像的直方图表示如下:

上图a是4x4的二值图像,b是对应的直方图,可以看出X轴表示像素范围(0-黑色、1-白色),Y轴表示像素值出现的频次,即分布。

对灰度图像来说,它的像素值取值范围会扩展到0~255之间,其直方图可以表示如下:

从上面的图中可以发现灰度图像的直方图依然是X轴表示像素值范围、Y轴表示各个像素值出现频次,即像素分布。

彩色图像有红色、绿色、蓝色三个通道,其直方图表示稍微复杂一点,要对每个通道进行直方图计算跟表示,图示如下:

可以看出彩色图像的三个通道各自对应一个直方图分布。

直方图阈值化

OpenCV中支持的两种阈值计算的二值化方法

  • THRESH_OTSU

  • THRESH_TRIANGLE

均是基于图像直方图实现图像二值化分割,其中OTSU阈值分割(大津)对直方图为双峰的灰度图像效果比较好,图示如下:

而三角法对直方图分布单峰的图像分割效果比较好,图示如下下:

直方图均衡化

直方图均衡化是一种通过提升图像对比度实现图像增强的方法,它跟最基础的基于像素差值放缩改变对比度的方法效果更好。图示如下:

从上图中可以看出,最左侧列是输入图像,是低对比度图像,左侧二列为直接改变像素值获得对比度提升图像,左侧三列是通过直方图均衡化完成对比度提升,最右侧一列也是通过直方图均衡化完成,不过是基于局部直方图均衡化。OpenCV中支持两种直方图均衡化方法分别是:

  • 正常的直方图均衡化(全局直方图均衡化)

  • 对比度受限的自适应直方图均衡化(CLAHE-局部自适应直方图均衡化)

特别需要注意的是OpenCV的直方图均衡化函数都只支持单通道八位的图像、对RGB彩色图像来说,要实现直方图均衡化提升对比度必须先转换到HSV色彩空间,然后对亮度通道V进行直方图均衡化之后再转换到RGB色彩空间显示。图示如下:

直方图对比

图像直方图还可以实现图像相似性简单分析与查找,其原理是对两张图像生成的直方图分布数据,进行归一化之后比较,根据数据像素程度,从而判定图像内容的相似程度,该方法可靠性虽然不高,但胜在快捷方便。OpenCV中支持的直方图比较的方法有如下:

相关函数为:

compareHist(
InputArray    H1,
InputArray    H2,
int    method
)

参数解释

  • H1表示第一张图的直方图

  • H2表示第二张图的直方图

  • method表示直方图比较的方法,支持卡方、相关性,交叉、巴氏距离

直方图反向投影

图像反向投影的最终目的是获取ROI然后实现对ROI区域的标注、识别、测量等图像处理与分析,是计算机视觉与人工智能的常见方法之一。反向投影通常是彩色图像投影效果会比灰度图像效果要好,原因在于彩色图像带有更多对象细节信息,在反向投影的时候更加容易判断、而转为灰度图像会导致这些细节信息丢失、从而导致分割失败。最常见的是基于图像直方图特征的反向投影,正是因为直方图反向投影有这样能力,所以在经典的MeanShift与CAMeanShift跟踪算法中一直是通过直方图反向投影来实现已知对象物体的定位。

需要注意的是,直方图反向投影是基于颜色的,所以会对RGB彩色图像转换到HSV色彩空间,然后基于H跟S两个通道生成2D直方图数据分布,如下图所示:

其他类型图像直方图与直方图缺陷

除了图像像素分布直方图,还有一些其他类型基于图像梯度跟角度的直方图类型,总结如下:

-图像像素直方图
-图像梯度直方图
-图像角度直方图

后面两种类型的直方图在SIFT跟HOG特征提取的算法中都有应用,但是同时直方图只是数据统计信息,没有包含图像空间信息,所以通过直方图无法正确描述图像的结构化信息。它的缺点图示如下:

上图说明直方图数据完全一致的图像,但是图像的空间结构完全不同,根本没有相似性可言,所以图像直方图信息只是图像的基本属性之一,但是不是图像的唯一特征。同样作为图像的基本属性之一,直方图应用范围非常广泛,是最基础的图像特征向量数据之一,常规的直方图归一化即可得到PDF数据。

好消息,小白学视觉团队的知识星球开通啦,为了感谢大家的支持与厚爱,团队决定将价值149元的知识星球现时免费加入。各位小伙伴们要抓住机会哦!

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲

在「小白学视觉」公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲

在「小白学视觉」公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

没想到图像直方图有这么多应用场景相关推荐

  1. 科学家们竟用乐高观察细胞,网友:万万没想到啊

    杨净 子豪 发自 凹非寺 量子位 报道 | 公众号 QbitAI 玩乐高还能玩出个显微镜?! 原本以为是一个普普通通的玩具. 没想到,还真能当成显微镜来用,是能看到细胞的那种. 真·高端新玩法! 比如 ...

  2. 没想到,因为这场AI大会,我也可以凡尔赛一把

    杨净 发自 凹非寺 量子位 报道 | 公众号 QbitAI 没想到,小小编辑的我,竟这样不经意凡尔赛了. 事情是这样,刚有朋友"求"我--量子位小编,要一张大会的现场票. 说官方渠 ...

  3. 【杂谈】万万没想到,有三还有个保密的‘朋友圈’,那里面都在弄啥!

    万万没想到,有一天我们也会标题党,透过标题看本质,今天说的确实是那么回事儿也. 一直以来我们都有一个不公开的私密社区叫有三AI知识星球,但是经常遇到一些朋友,甚至是加入季划的同学都在问我,那是个啥?看 ...

  4. python画简便的图片-用python简单处理图片(5):图像直方图

    我们先来看两个函数reshape和flatten: 假设我们先生成一个一维数组: vec=np.arange(15) print vec 显示为: [ 0 1 2 3 4 5 6 7 8 9 10 1 ...

  5. 图像处理大型科普——图像直方图

    图像处理大型科普--图像直方图 偶尔跟在浙大读研的湖大一姐谈起轮廓识别,她正在做一个能把衣服分类成不同款式的应用,衣服平摊好,然后用手机一扫,马上就能告诉你这是T-SHIRT还是裙子,什么?你敢说这玩 ...

  6. 用Scrapy爬取分析了7万款App,结果万万没想到!

    作者 | 苏克 来源 | 第2大脑 这是新年的第一篇原创干货. 摘要:使用 Scrapy 爬取豌豆荚全网 70,000+ App,并进行探索性分析. 写在前面:若对数据抓取部分不感兴趣,可以直接下拉到 ...

  7. Python分析了 7 万款 App,万万没想到

    摘要:使用 Scrapy 爬取豌豆荚全网 70,000+ App,并进行探索性分析. 写在前面:若对数据抓取部分不感兴趣,可以直接下拉到数据分析部分. 1 分析背景 之前我们使用了 Scrapy 爬取 ...

  8. Python爬虫新手教程:Python分析了 7 万款 App,万万没想到

    摘要:使用 Scrapy 爬取豌豆荚全网 70,000+ App,并进行探索性分析. 写在前面:若对数据抓取部分不感兴趣,可以直接下拉到数据分析部分. 1 分析背景 之前我们使用了 Scrapy 爬取 ...

  9. Python爬虫新手教程:Python分析了 7 万款 App,万万没想到!

    摘要:使用 Scrapy 爬取豌豆荚全网 70,000+ App,并进行探索性分析. 写在前面:若对数据抓取部分不感兴趣,可以直接下拉到数据分析部分. 1 分析背景 之前我们使用了 Scrapy 爬取 ...

最新文章

  1. 通过源码分析Android 的消息处理机制
  2. gridview 导出到excel,repeater类似
  3. Filling Shapes
  4. sizeWithFont 不是线程安全。
  5. android 原生开发 3d地图 下载_arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)...
  6. 经典卡尔曼滤波器直接调用代码(Matlab)
  7. WorldList5
  8. PCB绘图要点QA汇总
  9. sm4 前后端 加密_sm4加密
  10. kali-网站克隆工具-httrack
  11. mysql索引(七)唯一索引
  12. 使用域名访问服务器网站,使用域名访问网站是啥意思
  13. appcan ajax mysql_APPCAN MAS接口之AJAX
  14. 判断是否是正确的EMAIL格式
  15. 疫情影响下普惠金融风险与对策
  16. nodejs项目mysql使用sequelize支持存储emoji
  17. Java io流 解压缩多个文件 损坏问题解决
  18. PARSEC benchmark 编译
  19. 苹果11计算机怎么打开语音,iPhone11怎么打开Siri 语音唤醒方法介绍
  20. 直到黎明 Until Dawn 后感

热门文章

  1. 微信是把“杀猪刀”,还改变了我的表情包
  2. AI助力清华博士进入周杰伦战队,预告AI应用迎来黄金时代?
  3. 资源 | 想用Python学机器学习?Google大神替你写好了所有的编程示范代码
  4. 盘点 HashMap 源码中的那些优雅的设计!
  5. 没错,老板让我写个 BUG!
  6. Java泛型背后是什么?
  7. CPU 的一些基本知识总结
  8. 初识 ElasticSearch,一个上天下地的搜索引擎 No.158
  9. 鱼佬:我的数据挖掘之路!
  10. CMU赵越:异常检测的算法、案例和落地