opencv中直方图均衡函数cv::equalizeHist()的使用!!严格用程序进行了验证!
2017-04-27 13:56
225 查看
最近开始学习OPENCV,通过验证书中的例程,从网上寻找别人的例程和解释,我发现人们多半都是不负责的,各种转载!你们有没有真正验证过????????
先给一个别人关于cv::equalizeHist()的使用
找了很多博客 都是如下写的 然后给个例程! 可是你真的有验证过嘛?你得到的均衡的直方图真的能按照这个公式算出来嘛???
qualizeHist
灰度图象直方图均衡化
void cvEqualizeHist( const CvArr* src, CvArr* dst );
src
输入的 8-比特 单信道图像
dst
输出的图像与输入图像大小与数据类型相同
函数 cvEqualizeHist 采用如下法则对输入图像进行直方图均衡化:
1. 计算输入图像的直方图 H
2. 直方图归一化,因此直方块和为255
3. 计算直方图积分:
4. 采用H'作为查询表:dst(x,y)=H'(src(x,y))进行图像变换。
-------------------------------
我的例子!8X9的矩阵 得到直方图
135 25
158 15
255 32
归一化累积直方图
135 25/72
158 40/72
255 72/72
乘上255得到对应的像素
135 88
158 141
255 255
按照别人博客里的方法 得到的新的图像矩阵为:
255 255 255 255 141 141 141 141 141
255 255 255 255 141 141 141 141 141
255 255 255 255 141 141 141 141 141
255 255 255 255 88 88 88 88 88
255 255 255 255 88 88 88 88 88
255 255 255 255 88 88 88 88 88
255 255 255 255 88 88 88 88 88
255 255 255 255 88 88 88 88 88
但是!很明显!我们得到的均衡后的矩阵并不是这个!而是
我找了很久的资料! 原来是把
给拉伸到了0-255的范围里!!!!所有人都没有讲!!!!导致走了很多弯路想明白!!!不过也印象深刻
方法:
拉伸后灰度=(当前灰度-最小灰度)×255/(255-最小灰度) 所以 88对应的灰度=(88-88)×255/(255-88)=0
141对应的灰度=(141-88)×255/(255-88)=81;
255对应的灰度=(255-88)×255/(255-88)=255;
所以得到的最终的均衡图像矩阵为
先给一个别人关于cv::equalizeHist()的使用
找了很多博客 都是如下写的 然后给个例程! 可是你真的有验证过嘛?你得到的均衡的直方图真的能按照这个公式算出来嘛???
qualizeHist
灰度图象直方图均衡化
void cvEqualizeHist( const CvArr* src, CvArr* dst );
src
输入的 8-比特 单信道图像
dst
输出的图像与输入图像大小与数据类型相同
函数 cvEqualizeHist 采用如下法则对输入图像进行直方图均衡化:
1. 计算输入图像的直方图 H
2. 直方图归一化,因此直方块和为255
3. 计算直方图积分:
4. 采用H'作为查询表:dst(x,y)=H'(src(x,y))进行图像变换。
-------------------------------
我的例子!8X9的矩阵 得到直方图
135 25
158 15
255 32
归一化累积直方图
135 25/72
158 40/72
255 72/72
乘上255得到对应的像素
135 88
158 141
255 255
按照别人博客里的方法 得到的新的图像矩阵为:
255 255 255 255 141 141 141 141 141
255 255 255 255 141 141 141 141 141
255 255 255 255 141 141 141 141 141
255 255 255 255 88 88 88 88 88
255 255 255 255 88 88 88 88 88
255 255 255 255 88 88 88 88 88
255 255 255 255 88 88 88 88 88
255 255 255 255 88 88 88 88 88
但是!很明显!我们得到的均衡后的矩阵并不是这个!而是
我找了很久的资料! 原来是把
给拉伸到了0-255的范围里!!!!所有人都没有讲!!!!导致走了很多弯路想明白!!!不过也印象深刻
方法:
拉伸后灰度=(当前灰度-最小灰度)×255/(255-最小灰度) 所以 88对应的灰度=(88-88)×255/(255-88)=0
141对应的灰度=(141-88)×255/(255-88)=81;
255对应的灰度=(255-88)×255/(255-88)=255;
所以得到的最终的均衡图像矩阵为
相关文章推荐
- ASP.NET - 如何:使用自定义函数对 ASP.NET 服务器控件进行验证
- 关于PHP程序使用file_get_content()函数进行抓取PHP程序与smarty结合编译过程中产生的静态文件,抓取不了?连接超时?(地址映射)
- Django中使用def clean()函数对表单中的数据进行验证
- Opencv使用cv::matchTemplate进行模板匹配
- 数学建模_使用ginput函数提高CV模型程序的运行速度
- opencv2 直方图之calchist函数使用
- 在后端是PHP程序的情况下,保持前端Javascript和PHP之间传值的统一编码可以使用以下函数进行处理:
- jgGrid中的editrules使用函数来进行验证
- 编写一个程序,要求用户输入最多10个高尔夫成绩,并将其存储在一个数组中。 程序允许用户提早结束输入,并在一行上显示所有成绩,然后报告平均成绩。 请使用3个数组处理函数来分别进行输入、显示和计算
- 【Python OpenCV】图像直方图 calcHist方法 equalizeHist方法
- 关于PHP程序使用file_get_content()函数进行抓取PHP程序与smarty结合编译过程中产生的静态文件,抓取不了?连接超时?(地址映射)
- 使用truelicense进行Java程序license控制 经过扩张可以验证license 开始结束日期,验证绑定给定mac地址
- 关于PHP程序使用file_get_content()函数进行抓取PHP程序与smarty结合编译过程中产生的静态文件,抓取不了?连接超时?(地址映射)
- opencv3_java 图形图像的均衡Equalize equalizeHist
- 您可以在您的asp程序中使用如下函数来进行在线发信
- ios--OpenCV--cvCompareHist使用直方图模型(CvHistogram)比对两张图片
- 使用 PHP 过滤器(Filter)进行严格表单验证
- 怎样在TI stellaris lm3sxxx 程序中使用C语言printf()函数进行串口输出
- 一次配置 使用opencv库中的函数编写程序需要配置环境
- opencv学习笔记1—equalizeHist 函数(直方图均衡化)