7.5 直方图均衡化

7.5.1 概念

1.图像增强处理,图像的像素灰度变化是随机的,直方图图像高低不齐,用一定算法使直方图大致平和,通过拉伸像素强度分布范围来增强图像对比度
2.均衡化处理后的图像只能是近似均匀分布,图像动态范围扩大了,本质是扩大了量化间隔,减小了量化级别,因此,原来灰度不同的像素处理后可能变得相同,形成一片相同灰度区域,各区域之间有明显的边界,从而出现了伪轮廓
3.源图像对比度高,均衡化后对比度降低;原图像对比度低,均衡化后对比度提高;均衡化后再均衡化,图像不变

7.5.2 直方图均衡化:equalizeHist()函数

1.函数原型:

void equalizeHist(InputArray src, OutputArray dst)

2.参数说明:
(1)输入图像,8位单通道图像
(2)输出图像
3.原理:
  把直方图的每个灰度级进行归一化处理,求每种灰度的累积分布,得到一个映射的灰度映射表,根据相应的灰度值来修正原图中的每个像素
4.步骤:
(1)计算输入图像的直方图H
(2)进行直方图归一化,直方图的组距为255
(3)计算直方图积分:
                 
(4)以H’作为查询表进行图像变换
                

7.5.3 直方图均衡化示例

#include<opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main()
{//载入原图Mat srcImage = imread("4.jpg");if (!srcImage.data){printf("载入原图失败~!\n");return false;}Mat dstImage;dstImage.create(srcImage.size(), srcImage.type());//转为灰度图并显示cvtColor(srcImage, srcImage, COLOR_BGR2GRAY);imshow("【原始图】", srcImage);//直方图均衡化equalizeHist(srcImage, dstImage);//显示效果图imshow("【效果图】直方图均衡化", dstImage);waitKey(0);return 0;
}

运行效果:

《OpenCV3编程入门》学习笔记7 图像变换(五 )直方图均衡化相关推荐

  1. 原创 OpenCV3编程入门 学习笔记(总)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_36163358/article/ ...

  2. OpenCV3编程入门 学习笔记(总)

    OpenCV3编程入门 学习笔记 2018.12.12-2018.12.29 此博客为在看过毛星云版<OpenCV3编程入门>后所总结的一本笔记,可供复习使用. 文章目录 OpenCV3编 ...

  3. Opencv3编程入门学习笔记(五)之通道分离(split)与合并(merge)

    若要对Opencv中(BGR)颜色通道进行单一处理,那必然会涉及到通道分离(split)与合并(merge).那么本篇博客笔者记录了两个方法的使用方法和案例.案例来源于<Opencv3编程入门学 ...

  4. 【OpenCV3编程入门学习笔记】——第1章 邂逅OpenCV

    邂逅OpenCV 文章目录 邂逅OpenCV 前言 1.1 OpenCV周边概念认知 1.1.1 图像处理.计算机视觉与OpenCV 1.1.2 OpenCV概述 1.1.3 起源及发展 1.1.4 ...

  5. Opencv3编程入门学习笔记(三)之访问图像像素的三种方法

    访问图像像素的三种方法:指针访问,迭代器访问,动态地址访问.访问最快的为指针访问,以下算法在几毫秒,但指针访问容易造成内存泄漏:其次为迭代器访问:最后为动态地址访问. 以下程序是根据<OpenC ...

  6. 【OpenCV3编程入门学习笔记】——第3章 HighGUI图形用户界面初步

    文章目录 前言 3.1 图形的载入.显示和输出到文件 3.1.1 OpenCV的命名空间 3.1.2 Mat类简析 3.1.3 图像的载入与显示概述 3.1.4 图像的载入:imread()函数 3. ...

  7. Opencv3编程入门学习笔记(四)之split通道分离Debug过程中0xC0000005内存访问冲突问题

    这是笔者学习<Opencv3编程入门>的第四篇博客,这篇博客主要是解决在Windows系统下VS 2013中Debug含有split分离通道色彩函数时报出的0xC0000005内存访问冲突 ...

  8. Opencv3编程入门学习笔记(二)之显式创建Mat对象

    以下总结是基于<Opencv3编程入门>一书4.1节总结的内容进行验证与总结,验证环境均为Windows10 ---VS2013 C++环境,验证Opencv3.0提供的开发包. 1. 方 ...

  9. Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)

    全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...

  10. 01.Java 编程入门学习笔记20210307

    Java 编程入门学习笔记-day01 第0章:编程入门 1.计算机的概述 计算机 = 硬件 + 软件 1.1硬件:冯诺依曼体系 CPU: CPU的衡量标准:速度的计量单位是赫兹(Hz),1Hz相当于 ...

最新文章

  1. 数据库索引是什么?新华字典来帮你!
  2. 实际操作之路考的这些事
  3. HTML+CSS+JS实现 ❤️酷炫3D瀑布流动画特效❤️
  4. sas java 虚拟机异常_深入理解JAVA虚拟机之异常诊断
  5. (转)支持Dubbo生态发展,阿里巴巴启动新的开源项目 Nacos
  6. Linux core dumps 的生成
  7. 安卓防盗软件_Android勒索软件分析
  8. 小白疑问3dsmax和maya的区别有什么?大佬来给你解答
  9. Esp8266 Node Mcu 一直乱码的问题详解
  10. dropbox 下载不了问题
  11. 谷歌邮箱服务器验证失败,Gmail错误:SMTP服务器需要安全连接,或者客户端未经身份验证。服务器响应为...
  12. DPM learn.cc编译
  13. 网红电商剧烈洗牌,机会将属于拥有“头部网红矩阵”的MCN机构?
  14. ZXing改横屏识别为竖屏识别
  15. 我国首次评选30名国医大师 享省部级劳模待遇
  16. 用lisp语言写一段cad提取坐标代码
  17. UWB TDOA一维定位解算
  18. 【愚公系列】2023年02月 WMS智能仓储系统-006.租户功能的配置
  19. 【Web技术】1005- 关于 JS 与 CSS 是否阻塞 DOM 的渲染和解析
  20. Linux网络收音机

热门文章

  1. docker 容器访问宿主机的解决方式
  2. 【C#】数组的最大最小值
  3. dataframe重命名
  4. tf.get_variable
  5. linux pytorch 快速安装
  6. LeetCode简单题之密钥格式化
  7. LLVM与Clang编译图例
  8. 数据结构算法 简单的面试思考题
  9. 2021年大数据常用语言Scala(十九):基础语法学习 iterator迭代器
  10. Leetcode812.Largest Triangle Area最大三角形面积