Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >OpenCV图像处理(十六)---图像直方图

OpenCV图像处理(十六)---图像直方图

作者头像
用户5410712
发布于 2022-06-01 11:15:38
发布于 2022-06-01 11:15:38
85910
代码可运行
举报
文章被收录于专栏:居士说AI居士说AI
运行总次数:0
代码可运行

比热容(Specific Heat Capacity,符号c),简称比热,亦称比热容量,是热力学中常用的一个物理量,用来表示物质吸热或散热本领。比热容越大,物质的吸热或散热能力越强。它指单位质量的某种物质升高(或下降)单位温度所吸收(或放出)的热量。其国际单位制中的单位是焦耳每千克开尔文[J/( kg· K )],即令1KG的物质的温度上升1开尔文所需的热量。根据此定理,最基本便可得出以下公式:

物质的比热容越大,相同质量和温升时,需要更多热能。以水和油为例,水和油的比热容分别约为4200 J/(kg·K)和2000 J/(kg·K),即把相同质量的水加热的热能比油多出约一倍。若以相同的热能分别把相同质量的水和油加热的话,油的温升将比水的温升大。

前言

在上一期的文章中,我们学习了图像的轮廓特征,主要学习了轮廓检测函数和框选函数。今天,我们将继续学习图像的新知识--直方图。

一、直方图

图像直方图简介:

在介绍图像直方图之前,我们先来回顾一下数学中直方图的含义,还记得初中的时候,我们学习过用来表示样本数据的趋势或者分布的统计图吗?折线图和直方图就是代表之一,我们知道折线图是用来表示数据的行走趋势(简单说就是高高低低的一条折线),直方图是用来表示数据中各个类型的数量的(比如说 ,一堆人民币包含了各种数值的钞票,用直方图来表示,你将会观察到10元的有多少张,20元有多少张)的统计图,那么,图像中的直方图是否也是类似的呢?我们看看一下吧,直方图简单来说就是图像中每个像素值的个数统计,比如说一副灰度图中像素值为0的有多少个,1的多少个……直方图是一种分析图片的手段,当然,图像中比较常见的颜色格式是彩色和灰度的,针对灰度图像直方图,我们可以这样理解,灰度直方图是图像中像素灰度集的一种统计反应。它能够描述图像中灰度的分布情况,直观地展现出图像中灰度所占多少。直方图横轴表示像素的灰度范围(比如说 0~255),纵轴表示的是像素的数量或者密度。

1.1 原始图像

灰度图:

1.2 代码实践

直方图实现一:pyplot提供了类似matlab的绘图框架,

  • import matplolib.pyplot as plt
  • plt.hist hist(图像原始数据,像素的范围) 图像的灰度级是0-255,一共256个。因为该直方图函数需要一维数据,所以需要用到ravel()函数,将多维数组降为一维数组。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:utf-8
import cv2
# 导入matplotlib.pyplot包,我们需要用到它的函数
import matplotlib.pyplot as plt

# 以灰度模式读入图片
gray_img = cv2.imread("./fig.jpg", cv2.IMREAD_GRAYSCALE)
cv2.imshow("gray_img", gray_img)

# 调用hist函数绘制直方图
plt.hist(gray_img.ravel(), 256)
# 显示直方图
plt.show()

cv2.waitKey()
cv2.destroyAllWindows()

效果展示:

直方图解读:从图中我们能够很清晰的观察到,灰度值为50左右的像素有2500多个,其余的在100个左右。分布相对均匀。

直方图实现二:openv已经为我们准备好了绘制直方图函数,

hist = cv2.calcHist(images, channels, mask, histSize, ranges, accumulate)

参数

  • images : 原始图像
  • channels : 指定通道

通道编号需要用中括号括起来

输入图像是灰度图时,它的值为[0]

彩色图像可以使[0],[1],[2]分别对应通道B,G,R。

  • mask : 掩码图像

统计整幅图像的直方图,设为None。

统计图像某一部分的直方图时,需要掩码图像

histSize : BINS的数量

ranges : 像素值返回RANGE

像素值范围,例如:[0, 255]

accumulate : 累计标识

默认值为false

如果被设置为true,则直方图在开始分配时不会被清零

该参数允许从多个对象中计算单个直方图,或者用户实施更新直方图

多个直方图的累计结果,用户对一组图像计算直方图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#coding:utf-8
# 导入matplotlib.pyplot包,我们需要用到它的函数
import matplotlib.pyplot as plt
import cv2
# 以灰度模式读入图片
gray_img = cv2.imread("./fig.jpg", cv2.IMREAD_GRAYSCALE)

#调用cv2.calcHist()函数绘制直方图
hist = cv2.calcHist([gray_img], [0], None, [256], [0, 255])

# 用绿色绘制
plt.plot(hist, color="g")
plt.show()

效果展示:

直方图解读:通过直方图可以观察到,与上一种绘制结果差不多,仅仅是表现方式不一样,上面的直方图使用长矩形的方式展现的,下面的直方图更侧重于用数学函数,而且是连续的函数进行表达。

直方图的作用:从上面的实例我们可以了解到,其实每一个图像的直方图是不一样的,由此,直方图可以用来进行比较不同的图像,不过直方图用到最多的是,均衡化,何为均衡化,简单地说,使得图像的像素值尽量分布均匀,而不是高低差落较大,这样的好处是,能够更好的观察图像的细节部分,如果想要继续学习更多知识,我们下期文章或许可以推出哦,大家敬请关注!

结语

今天的文章分享结束了,图像直方图能够让我们直观的看到像素的分布情况,也可以用在精度不是很高的图像识别问题,希望大家下去学会相关函数的使用,实践方知其所以然。

编辑:玥怡居士|审核:小圈圈居士

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-05-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT进阶之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
请问博主有文本绘制的工程源码吗?? 我注册成功了字体,好像都没有实际效果。用的还是默认字体
请问博主有文本绘制的工程源码吗?? 我注册成功了字体,好像都没有实际效果。用的还是默认字体
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
[Python图像处理] 十一.灰度直方图概念及OpenCV绘制直方图
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类、目标检测应用。
Eastmount
2022/08/31
2.4K0
Opencv 图像处理:图像通道、直方图与色彩空间
将彩色图像,分成b 、g 、r 3个单通道图像。方便我们对 BGR 三个通道分别进行操作。
timerring
2022/11/02
2.3K0
Opencv 图像处理:图像通道、直方图与色彩空间
15: 直方图
简单来说,直方图就是图像中每个像素值的个数统计,比如说一副灰度图中像素值为0的有多少个,1的有多少个……:
CodecWang
2021/12/07
8530
15: 直方图
opencv里面直方图的意义
直方图是一种图表类型,在计算机视觉领域通常用来指反映图片的亮度,色彩,强度在整个图片里面的分布情况。直方图我们可以理解成另一种理解图片的方式。
我是攻城师
2018/05/10
1.7K6
opencv里面直方图的意义
【从零学习OpenCV 4】图像直方图绘制
经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。
小白学视觉
2019/12/13
1.1K0
Python opencv图像处理基础总结(三) 图像直方图 直方图应用 直方图反向投影
图像直方图是反映一个图像像素分布的统计表,其横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征。直方图的显示方式是左暗又亮,左边用于描述图像的暗度,右边用于描述图像的亮度。
叶庭云
2020/09/17
4.3K0
Python  opencv图像处理基础总结(三)  图像直方图  直方图应用  直方图反向投影
直方图均衡化的原理及实现途径_请简述图像直方图均衡的原理
图像的灰度直方图就描述了图像中灰度分布情况, 能够很直观的展示出图像中各个灰度级所占的多少。图像的灰度直方图是灰度级的函数, 描述的是图像中具有该灰度级的像素的个数: 其中, 横坐标是灰度级, 纵坐标是该灰度级出现的率。如下图所示
全栈程序员站长
2022/09/27
5.2K0
直方图均衡化的原理及实现途径_请简述图像直方图均衡的原理
OpenCV图像处理(十七)---图像直方图均衡化
欧姆定律是指在同一电路中,通过某段导体的电流跟这段导体两端的电压成正比,跟这段导体的电阻成反比。该定律是由德国物理学家乔治·西蒙·欧姆1826年4月发表的《金属导电定律的测定》论文提出的。
用户5410712
2022/06/01
4360
OpenCV图像处理(十七)---图像直方图均衡化
万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文
期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
全栈程序员站长
2022/11/04
2.2K0
万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文
OpenCV 图像变换之 —— 直方图均衡化
相机和图像传感器不仅可以适应场景中自然产生的对比度,还可以管理图像传感器在可用的光照水平下的曝光程度。在标准相机中,设置快门和镜头光圈以确保传感器既不太多也不太少。然而,对于传感器的可用动态范围,特定图像中的对比度范围往往太大。因此,捕获需要更长曝光时间的黑暗区域(例如阴影)和需要更短曝光的明亮区域之间存在权衡,以避免饱和“白化”。在许多情况下,在同一个图像中二者不可兼得。
为为为什么
2022/08/09
6050
OpenCV 图像变换之 —— 直方图均衡化
使用OpenCV实现图像增强
首先我们获取了一个LPG气瓶图像,该图像取自在传送带上运行的仓库。我们的目标是找出LPG气瓶的批号,以便更新已检测的LPG气瓶数量。
小白学视觉
2020/08/10
1.7K0
python——opencv入门(一)
和Python一样,当前的OpenCV也有两个大版本,OpenCV2和OpenCV3。相比OpenCV2,OpenCV3提供了更强的功能和更多方便的特性。不过考虑到和深度学习框架的兼容性,以及上手安装的难度,这部分先以2为主进行介绍。
py3study
2020/01/13
9790
OpenCV—python 颜色直方图与直方图均衡化[通俗易懂]
cv2.calcHist(image,channels,mask,histSize,ranges) -> list
全栈程序员站长
2022/09/27
3.6K0
opencv 特征值_直方图阈值图像分割
  像素值高于阈值时,给这个像素赋予一个新值(可能是白色),否则我们给它赋予另外一种颜色(也许是黑色)。这个函数就是 cv2.threshhold()。这个函数的第一个参数就是原图像,原图像应该是灰度图。第二个参数就是用来对像素值进行分类的阈值。第三个参数就是当像素值高于(有时是小于)阈值时应该被赋予的新的像素值。 OpenCV提供了多种不同的阈值方法,这是有第四个参数来决定的。这些方法包括: • cv2.THRESH_BINARY • cv2.THRESH_BINARY_INV • cv2.THRESH_TRUNC • cv2.THRESH_TOZERO • cv2.THRESH_TOZERO_INV
全栈程序员站长
2022/09/19
6860
opencv 特征值_直方图阈值图像分割
[python opencv 计算机视觉零基础到实战] 十二 直方图
在了解图像直方图前我们需要了解一个matplotlib库,matplotlib库和numpy可谓是一对好伴侣,就像泡面伴侣火腿肠一样。
1_bit
2022/01/06
1.2K0
[python opencv 计算机视觉零基础到实战] 十二 直方图
【python opencv】直方图查找、绘制和分析
那么直方图是什么?您可以将直方图视为图形或绘图,从而可以总体了解图像的强度分布。它是在X轴上具有像素值(不总是从0到255的范围),在Y轴上具有图像中相应像素数的图。
西西嘛呦
2020/08/26
1.4K0
【python opencv】直方图查找、绘制和分析
图像相似程度
算法:图像相似程度是通过图像直方图、汉明距离、平均哈希法、感知哈希法等来计算相似程度。
裴来凡
2022/05/29
9010
图像相似程度
数字图像处理学习笔记(十一)——用Python代码实现图像增强之线性变换、对数变换、幂律变换、分段线性变换、灰度级分层、直方图均衡化、平滑滤波器、锐化滤波器
在数字图像处理学习笔记(八)中,已对图像增强之线性变换、对数变换、幂律变换、分段线性变换、灰度级分层等做过详细理论论述,本文将对上述理论知识做实践方面的实现。
荣仔_最靓的仔
2021/02/02
4.3K0
数字图像处理学习笔记(十一)——用Python代码实现图像增强之线性变换、对数变换、幂律变换、分段线性变换、灰度级分层、直方图均衡化、平滑滤波器、锐化滤波器
【从零学习OpenCV 4】直方图比较
经过几个月的努力,小白终于完成了市面上第一本OpenCV 4入门书籍《从零学习OpenCV 4》。为了更让小伙伴更早的了解最新版的OpenCV 4,小白与出版社沟通,提前在公众号上连载部分内容,请持续关注小白。
小白学视觉
2019/12/13
1.2K0
OpenCV 系列教程5 | OpenCV 图像处理(中)
霍夫变换是一种特征提取技术,主要应用于检测图像中的直线或者圆。 OpenCV 中分为霍夫线变换和霍夫圆变换。
机器视觉CV
2019/11/12
1.7K0
OpenCV 系列教程5 | OpenCV 图像处理(中)
推荐阅读
相关推荐
[Python图像处理] 十一.灰度直方图概念及OpenCV绘制直方图
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验