cv::Mat histogramEqualization(cv::Mat img){
int rows=img.rows;
int cols=img.cols;
cv::Mat grayScale=cv::Mat::zeros(cv::Size(,),CV_32SC1);
cv::Mat grayScaleSum=cv::Mat::zeros(cv::Size(,),CV_32SC1);
cv::Mat _output=cv::Mat::zeros(cv::Size(,),CV_8UC1);
cv::Mat output=cv::Mat::zeros(img.size(),CV_8UC1);
float cofficient=256.0/(rows*cols); for(int i=;i<rows;++i){ // 计算不同灰度值的个数。
for(int j=;j<cols;++j){
int index=int(img.at<uchar>(i,j));
grayScale.at<int>(,index)+=;
}
} for(int j=;j<;++j){
if(j==)grayScaleSum.at<int>(,j)=grayScale.at<int>(,);
else grayScaleSum.at<int>(,j)=grayScaleSum.at<int>(,j-)+grayScale.at<int>(,j);
} for(int i=;i<;++i){
float q=cofficient*grayScaleSum.at<int>(,i)-;
if(q>=)_output.at<uchar>(,i)=uchar(floor(q)); // floor(x)Largest integer not greater than X.
else _output.at<uchar>(,i)=;
} for(int i=;i<rows;++i){
for(int j=;j<cols;++j){
int p=img.at<uchar>(i,j);
output.at<uchar>(i,j)=_output.at<uchar>(,p);
}
}
return output;
} int main(){
cv::Mat img=cv::imread("/home/nan/图片/openimage/girl.jpg",cv::IMREAD_GRAYSCALE);
cv::imshow("img",img);
//cv::Mat output= equalHist(img);
cv::Mat output= histogramEqualization(img);
cv::imshow("全局直方图均衡化",output);
cv::waitKey();
return ;
}

opencv C++全局直方图均衡化的更多相关文章

  1. opencv:图像直方图均衡化

    // 直方图均衡化 Mat gray, dst; cvtColor(src, gray, COLOR_BGR2GRAY); equalizeHist(gray, dst); imshow(" ...

  2. opencv图像直方图均衡化及其原理

    直方图均衡化是什么有什么用 先说什么是直方图均衡化,通俗的说,以灰度图为例,原图的某一个像素为x,经过某个函数变为y.形成新的图.新的图的灰度值的分布是均匀的,这个过程就叫直方图均衡化. 图像直方图均 ...

  3. OpenCV计算机视觉学习(9)——图像直方图 & 直方图均衡化

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 1, ...

  4. S0.6 直方图均衡化

    S0.6 直方图均衡化 直方图均衡化能提高图像的质量 累积直方图 这是后面均衡化所要知道的先验知识. 如果说直方图统计的是等于像素值的数量,那么累积直方图统计的就是小于等于像素值的数量 均衡化步骤 我 ...

  5. 直方图均衡化的 C++ 实现(基于 openCV)

    这是数字图像处理课的大作业,完成于 2013/06/17,需要调用 openCV 库,完整源码和报告如下: #include <cv.h> #include <highgui.h&g ...

  6. opencv 5 图像转换(3 重映射 仿射变换 直方图均衡化)

    重映射 实现重映射(remap函数) 基础示例程序:基本重映射 //---------------------------------[头文件.命名空间包含部分]------------------- ...

  7. opencv 彩色图像亮度、对比度调节 直方图均衡化

    直接上代码: #include <Windows.h> #include <iostream>// for stand I/O #include <string> ...

  8. OpenCV——直方图均衡化(用于图像增强)

    #include <opencv2/opencv.hpp> #include <iostream> #include <math.h> using namespac ...

  9. OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)

    http://blog.csdn.net/dcrmg/article/details/53677739 1. 基于直方图均衡化的图像增强   直方图均衡化是通过调整图像的灰阶分布,使得在0~255灰阶 ...

随机推荐

  1. 第二章-数据绑定和第一个AnglarJS Web应用

    Angularjs中的数据绑定 AngularJS创建实时模板来代替视图,而不是将数据合并进模板之后更新DOM.任何一个独立视图组件中的值都是动态替换的.这个功能可以说是AngularJS中最最重要的 ...

  2. 新来的老大,剑走偏锋,干掉AOP做操作日志,实现后我们都惊呆了

    前言 用户在操作我们系统的过程中,针对一些重要的业务数据进行增删改查的时候,我们希望记录一下用户的操作行为,以便发生问题时能及时的找到依据,这种日志就是业务系统的操作日志. 本篇我们来探讨下常见操作日 ...

  3. 【Ubuntu】Ubuntu系统启动过程中,输入用户名与密码后登录一直卡在紫色界面问题(未解决,最后通过重装系统)

    0. 前言 由于本电脑为公用电脑,可能由于其他人点了图像界面中推荐的内核更新,导致原来安装的NVIDIA显卡驱动 430 与升级后的 5.0 内核不兼容,从而导致输入用户名后登录一直卡在紫色界面.在排 ...

  4. [PHP自动化-进阶]004.Snoopy VS CURL 模拟Discuz.net登陆

    引言:采集论坛第一步就是要模拟登陆,由于各个站点登录表单各不相同,验证方式又是多种多样,所以直接提交用户名密码到登录页面就比较繁琐. 所以我们采用cookie来模拟登陆无疑是最佳捷径. 今天我们要处理 ...

  5. QueryRunner的添加与查询操作

    Apache-DBUtils实现CRUD操作,commmons-dbutils是Apache组织提供的开源JDBC工具类, 封装了针对于数据库的增删改查操作,Class QueryRunner Tes ...

  6. 02 . Redis哨兵

    Redis高可用概述 ​ 在 Web 服务器中,高可用 是指服务器可以 正常访问 的时间,衡量的标准是在 多长时间 内可以提供正常服务(99.9%.99.99%.99.999% 等等).在 Redis ...

  7. Rocket - diplomacy - MixedNode

    https://mp.weixin.qq.com/s/zgeAI2n-2cHJi7-Ra5rYZA   介绍MixedNode的实现.     1. 类定义   ​​ ​​   2. inner/ou ...

  8. hdl - HLS vs. Generator

    https://mp.weixin.qq.com/s/n_4RKlOddr_p2S_wODvFbw     介绍硬件建模的各个层次,以及基于RTL进一步提高层次的方法.   1. 物理版图   直接画 ...

  9. jchdl - RTL实例 - Counter4

    https://mp.weixin.qq.com/s/xtvMj5f-Uvx3vesVnH0P_A   计数器.   参考链接 https://github.com/wjcdx/jchdl/blob/ ...

  10. Shell 脚本(五) Shell 工具 及 企业面试题

    个人博客网:https://wushaopei.github.io/    (你想要这里多有) 十.Shell工具(重点) 1.cut cut 的工作就是“剪”,具体的说就是在文件中负责剪切数据用的. ...