直方图与bin

1、bin的含义
直方图中bin的含义:计算颜色直方图需要将颜色空间划分为若干小的颜色区间,即直方图的bin,通过计算颜色在每个小区间内德像素得到颜色直方图,bin越多,直方图对颜色的分辨率越强,但增加了计算机的负担。即(上图所分10个竖条区域,每个竖条区域称为一个bin)
(2)简单来说直方图就是对数据进行统计,将统计值组织到一系列事先定义好的bin中。bin中的数值就是从数据中计算出的特征的统计量,这些数据可以是诸如梯度、方向、色彩或任何其他特征。无论如何,直方图获得的是数据分布的统计图。直方图实际上是一个方便表示图像特征的手段。
2、cvCreateHist()创建一个直方图函数理解
dim:表示几维空间,即一般彩色图像是3通道的,dim=3,故灰度图像为1通道,则dim=1。dim=2,说明只计算彩色通道中的其中两个通道。
sizes:表示的是bin的个数,上图有10个bin,则sizes=10。
type:CV_HIST_ARRAY,CV_HIST_SPACRSE虚疏矩阵:如果在矩阵中,多数的元素为0,则称矩阵为虚疏矩阵。
ranges:上图最右边的数字100,就是说ranges范围为0~100。如果是灰度图像一般设为0~255,sizes=256,则每个 bin就表示一个灰度级的统计。在函数中ranges是bin范围的数组,即bin范围为一个数组,ranges为一个数组的数组。
uniform:决定ranges,uniform=0是均匀直方图,非0时不均匀直方图。
3、直方图归一化
归一化处理并没有改变图像的对比度
归一化处理很简单,假设原图像是8位灰度图像,那么读入的像素矩阵最大值为256,最小值为1
定义矩阵为I
J=I/256,就是归一化的图像矩阵,就是说归一化之后所有的像素值都在[0,1]区间内
以灰度图像来说,就是一个每个bin中的像素数分别除以整幅图像总的像素数,得出一个在[0,1]区间数,即概率数。
4、直方图处理流程:首先
1、首先创建一个直方图
CvHistogram* cvCreateHist(
int dims, //直方图维数
int* sizes,//直翻图维数尺寸
int type, //直方图的表示格式
float** ranges=NULL, //图中方块范围的数组
int uniform=1 //归一化标识
);
2、计算图像直方图cvCalcHist();
3、归一化直方图cvNormalizeHist();
4、通过访问直方图元素bin的值(归一化后已变为在【0~1】区间数)在一张图片上显示出直方图来。注意最终呈现的直方图是我们通过矩形自我绘制的,不是自动有函数可生成的。
一般默认bin的最大值为图像的最高高度。
直方图与bin的更多相关文章
- opencv6.4-imgproc图像处理模块之直方图与模板
接opencv6.3-imgproc图像处理模块之边缘检测 九.直方图的相关操作 直方图是图像中像素强度分布的图形表达方式:它统计了每一个强度值所具有的像素个数 上图是一个灰色图像,通过对图像的每个不 ...
- 图像检索:一维直方图+EMD距离
EMD距离具体介绍已经在在这里已经给出. 思路:我们把一张图像的归一化的一维直方图作为signature的权值,也就是一般在比較两幅图像颜色直方图的EMD距离时,每一行的坐标一样,仅仅是权重值不一样. ...
- opencv直方图拉伸
1.首先计算出一幅图像的直方图 //计算直方图 cv::MatND ImageHist::getHist(const cv::Mat &image){ cv::Mat im; if(image ...
- OpenCV学习(25) 直方图(2)
在OpenCV中,也可以对三通道的图像,比如BGR,HSV等计算直方图.方法和计算单通道图像直方图相似,下面的代码描述了如何计算一个BGR三通道图像的直方图,需要注意的是,因为是三通道,每个通道取值都 ...
- OpenCV学习笔记(十) 直方图操作
直方图计算 直方图可以统计的不仅仅是颜色灰度, 它可以统计任何图像特征 (如 梯度, 方向等等).直方图的一些具体细节: dims: 需要统计的特征的数目, 在上例中, dims = 1 因为我们仅仅 ...
- opencv直方图该怎么画
图像直方图是反映图像中像素分布特性的统计表,一般显示如下: 其中横坐标代表的是图像像素的种类,或者说是灰度级,纵坐标代表的是每一级灰度下像素数或者该灰度级下像素数在所有图像总像素数总所占的百分比. 直 ...
- (转)颜色直方图, HSV直方图, histogram bins
原文链接:https://www.xuebuyuan.com/3256564.html 一个histogram,通常可以用一个列向量表示(例子中的a,b),列向量里面的每一个值就是一个bin(a,b) ...
- kaggle数据挖掘竞赛初步--Titanic<数据变换>
完整代码: https://github.com/cindycindyhi/kaggle-Titanic 特征工程系列: Titanic系列之原始数据分析和数据处理 Titanic系列之数据变换 Ti ...
- python3验证码机器学习
python3验证码机器学习 文档结构为 -- iconset -- ... -- jpg -- captcha.gif -- py -- crack.py 需要的库 pip3 install pil ...
随机推荐
- 高能天气——团队Scrum冲刺阶段-Day 2
高能天气--团队Scrum冲刺阶段-Day 2 今日完成任务 于欣月:实现滑动界面视图,天气预报UI组件的初步优化 滑动界面 实现代码 //Activity中 //请求新选择城市的天气信息 navBu ...
- 高能天气——团队Scrum冲刺阶段-Day 7 总结
高能天气--团队Scrum冲刺阶段-Day 7 总结 今日完成任务 于欣月:修改项目说明书,帮助修改应用 余坤澎:进行应用整合的收尾工作 康皓越:进行应用整合的收尾工作 范雯琪:修改项目说明书,完成项 ...
- ServletContextListener 详解
1.首先来看一看源码 该类的源码 public interface ServletContextListener extends EventListener { /** * Receives noti ...
- Python学习——set集合的补充
set 是一个无序且不重复的元素集合>>> num = {1,2,3,4,5} 1.add()添加一个元素 >>> num.add(6) >>> ...
- poj 3071 概率dp
转自:cxlove 题目:有2^n个队,相邻的两两打淘汰赛,,求最后哪个队夺冠的概率最大 dp[i][j]表示第i轮的时候,第j去支队伍赢的概率. 那么dp[i][j]的前提就是i-1轮的时候,j是赢 ...
- SQL Server Management Studio 教程二: 创建新登录名
1.先用windows身份登录SQL server2008 2.打开[安全性],右击[登录名],选择[新建登录名] 3.[常规]选项页面中,修改如下位置设置,默认数据库可以是其他数据库,不一定是mas ...
- CentOS 7搭建KVM在线管理面板WebVirtMgr
系统版本:CentOS 7.4 WebVirtMgr版本:master分支的20180720版本,下载链接(链接:https://pan.baidu.com/s/1kl060hPHDGbwJUR_iM ...
- 在Asp.net core返回PushStream
最近用asp.net core webapi实现了一个实时视频流的推送功能,在Asp.net中,这个是通过PushStreamContent来实现的. 基于对asp.net core的知识,随手写了一 ...
- W3wp.exe占用CPU及内存资源
问题背景 最近使用一款系统,但是经常出现卡顿或者用户账号登录不了系统.后来将问题定位在了服务器中的“w3wp.exe”这个进程.在我们的用户对系统进行查询.修改等操作后,该进程占用大量的CPU以及内存 ...
- 百度外卖接口调试 C#版
主类 class Program { static void Main(string[] args) { string cmdStr = &qu ...