《OpenCV3编程入门》学习笔记7 图像变换(五 )直方图均衡化
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 图像变换(五 )直方图均衡化相关推荐
- 原创 OpenCV3编程入门 学习笔记(总)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_36163358/article/ ...
- OpenCV3编程入门 学习笔记(总)
OpenCV3编程入门 学习笔记 2018.12.12-2018.12.29 此博客为在看过毛星云版<OpenCV3编程入门>后所总结的一本笔记,可供复习使用. 文章目录 OpenCV3编 ...
- Opencv3编程入门学习笔记(五)之通道分离(split)与合并(merge)
若要对Opencv中(BGR)颜色通道进行单一处理,那必然会涉及到通道分离(split)与合并(merge).那么本篇博客笔者记录了两个方法的使用方法和案例.案例来源于<Opencv3编程入门学 ...
- 【OpenCV3编程入门学习笔记】——第1章 邂逅OpenCV
邂逅OpenCV 文章目录 邂逅OpenCV 前言 1.1 OpenCV周边概念认知 1.1.1 图像处理.计算机视觉与OpenCV 1.1.2 OpenCV概述 1.1.3 起源及发展 1.1.4 ...
- Opencv3编程入门学习笔记(三)之访问图像像素的三种方法
访问图像像素的三种方法:指针访问,迭代器访问,动态地址访问.访问最快的为指针访问,以下算法在几毫秒,但指针访问容易造成内存泄漏:其次为迭代器访问:最后为动态地址访问. 以下程序是根据<OpenC ...
- 【OpenCV3编程入门学习笔记】——第3章 HighGUI图形用户界面初步
文章目录 前言 3.1 图形的载入.显示和输出到文件 3.1.1 OpenCV的命名空间 3.1.2 Mat类简析 3.1.3 图像的载入与显示概述 3.1.4 图像的载入:imread()函数 3. ...
- Opencv3编程入门学习笔记(四)之split通道分离Debug过程中0xC0000005内存访问冲突问题
这是笔者学习<Opencv3编程入门>的第四篇博客,这篇博客主要是解决在Windows系统下VS 2013中Debug含有split分离通道色彩函数时报出的0xC0000005内存访问冲突 ...
- Opencv3编程入门学习笔记(二)之显式创建Mat对象
以下总结是基于<Opencv3编程入门>一书4.1节总结的内容进行验证与总结,验证环境均为Windows10 ---VS2013 C++环境,验证Opencv3.0提供的开发包. 1. 方 ...
- Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)
全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...
- 01.Java 编程入门学习笔记20210307
Java 编程入门学习笔记-day01 第0章:编程入门 1.计算机的概述 计算机 = 硬件 + 软件 1.1硬件:冯诺依曼体系 CPU: CPU的衡量标准:速度的计量单位是赫兹(Hz),1Hz相当于 ...
最新文章
- 数据库索引是什么?新华字典来帮你!
- 实际操作之路考的这些事
- HTML+CSS+JS实现 ❤️酷炫3D瀑布流动画特效❤️
- sas java 虚拟机异常_深入理解JAVA虚拟机之异常诊断
- (转)支持Dubbo生态发展,阿里巴巴启动新的开源项目 Nacos
- Linux core dumps 的生成
- 安卓防盗软件_Android勒索软件分析
- 小白疑问3dsmax和maya的区别有什么?大佬来给你解答
- Esp8266 Node Mcu 一直乱码的问题详解
- dropbox 下载不了问题
- 谷歌邮箱服务器验证失败,Gmail错误:SMTP服务器需要安全连接,或者客户端未经身份验证。服务器响应为...
- DPM learn.cc编译
- 网红电商剧烈洗牌,机会将属于拥有“头部网红矩阵”的MCN机构?
- ZXing改横屏识别为竖屏识别
- 我国首次评选30名国医大师 享省部级劳模待遇
- 用lisp语言写一段cad提取坐标代码
- UWB TDOA一维定位解算
- 【愚公系列】2023年02月 WMS智能仓储系统-006.租户功能的配置
- 【Web技术】1005- 关于 JS 与 CSS 是否阻塞 DOM 的渲染和解析
- Linux网络收音机