本文主要介绍了灰度直方图相关的处理,包括以下几个方面的内容:

  • 利用OpenCV计算图像的灰度直方图,并绘制直方图曲线
  • 直方图均衡化的原理及实现
  • 直方图规定化(匹配)的原理及实现

图像的灰度直方图

直方图规定化的实现

直方图规定化的实现可以分为一下三步:
- 计算原图像的累积直方图
- 计算规定直方图的累积直方图
- 计算两累积直方图的差值的绝对值
- 根据累积直方图差值建立灰度级的映射

void HistSpecify(const Mat& src, const Mat& ref, Mat& result){Histogram1D hist1D;Mat src_hist = hist1D.getHistogram(src);Mat dst_hist = hist1D.getHistogram(ref);float src_cdf[256] = { 0 };float dst_cdf[256] = { 0 };// 直方图进行归一化处理src_hist /= (src.rows * src.cols);dst_hist /= (ref.rows * ref.cols);// 计算原始直方图和规定直方图的累积概率for (int i = 0; i < 256; i++){if (i == 0){src_cdf[i] = src_hist.at<float>(i);dst_cdf[i] = dst_hist.at<float>(i);}else{src_cdf[i] = src_cdf[i - 1] + src_hist.at<float>(i);dst_cdf[i] = dst_cdf[i - 1] + dst_hist.at<float>(i);}}// 累积概率的差值float diff_cdf[256][256];for (int i = 0; i < 256; i++)for (int j = 0; j < 256; j++)diff_cdf[i][j] = fabs(src_cdf[i] - dst_cdf[j]);// 构建灰度级映射表Mat lut(1, 256, CV_8U);for (int i = 0; i < 256; i++){// 查找源灰度级为i的映射灰度// 和i的累积概率差值最小的规定化灰度float min = diff_cdf[i][0];int index = 0;for (int j = 1; j < 256; j++){if (min > diff_cdf[i][j]){min = diff_cdf[i][j];index = j;}}lut.at<uchar>(i) = static_cast<uchar>(index);}// 应用查找表,做直方图规定化LUT(src, lut, result);}

总结

图像的灰度直方图能够很直观的展示图像中灰度级的整体分布情况,对图像的后续处理有很好的指导作用。- 直方图的均衡化的是将一幅图像的直方图变平,使各个灰度级的趋于均匀分布,这样能够很好的增强图像对比度。直方图均衡化是一种自动化的变换,仅需要输入图像,就能够确定图像的变换函数。但是直方图的均衡化操作也有一定的确定,在均衡化的过程中对图像中的数据不加选择,这样有可能会增强图像的背景;变换后图像的灰度级减少,有可能造成某些细节的消失;会压缩图像直方图中的高峰,造成处理后图像对比度的不自然等。- 直方图规定化,也称为直方图匹配,经过规定化处理将原图像的直方图变换为特定形状的直方图(上面中的示例,就是将图像的直方图变换为另一幅图像的直方图)。它可以按照预先设定的某个形状来调整图像的直方图,运用均衡化原理的基础上,通过建立原始图像和期望图像之间的关系,选择地控制直方图,使原始图像的直方图变成规定的形状它可以按照预先设定的某个形状来调整图像的直方图。直方图规定化是在运用均衡化原理的基础上,通过建立原始图像和期望图像之间的关系,选择地控制直方图,使原始图像的直方图变成规定的形状,从而弥补直方图均衡化的一些缺点.

图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配) - Brook_icv - 博客园

OPencv 灰度直方图、直方图规定化相关推荐

  1. c++ opencv 图像处理:直方图处理(直方图均衡化,直方图匹配(规定化))

    文章目录 前言 一.直方图(histogram) 二.直方图处理 1.直方图均衡化 2.直方图匹配(规定化) 三.opencv函数总结 1.equalizeHist图像均衡化 2.calcHist获取 ...

  2. 使用Python,OpenCV计算图像直方图(cv2.calcHist)

    使用Python,OpenCV计算图像直方图(cv2.calcHist 1. 效果图 2. 原理 2.1 什么是图像直方图? 2.2 计算直方图 2.3 可视化蒙版区域 3. 源码 参考 这篇博客将介 ...

  3. python图像处理:直方图的规定化(直方图匹配)

    写在前面 因为笔者数字图像处理的作业是要求用VB来做规定化的处理,笔者写出来后想看看python有什么库可以实现,毕竟像均衡化之类的操作都可以通过py的cv2库里的函数解决,但是在CSDN上查询的时候 ...

  4. Opencv学习笔记——直方图与模板匹配

    文章目录 一.直方图 1.画直方图 2.mask的使用 3.直方图均值化 4.自适应直方图均衡化 二.模板匹配 1.匹配单个对象 2.匹配多个对象 一.直方图 直方图是像素点数值分布的统计图形表示,也 ...

  5. OpenCV+python:直方图的概念及绘制(Histogram)

    1,直方图的概念 图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的.纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比.图像是由 ...

  6. opencv python 直方图反向投影_python OpenCV学习笔记直方图反向投影的实现

    本文介绍了python OpenCV学习笔记直方图反向投影的实现,分享给大家,具体如下: 它用于图像分割或寻找图像中感兴趣的对象.简单地说,它创建一个与我们的输入图像相同大小(但单通道)的图像,其中每 ...

  7. opencv 绘制图像直方图,实现直方图均衡化

    直方图 直方图简单来说就是图像中每个像素值的个数统计,比如说一副灰度图中像素值为0的有多少个,1的有多少个--直方图是一种分析图像的手段: 直方图计算 opencv库计算直方图 使用 cv.calcH ...

  8. Python OpenCV 图像处理之直方图的应用,取经之旅第 26 天

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. Python OpenCV 基础知识铺垫 cv2.compareHist 函数 橡皮擦的小节 基础知识铺垫 上篇博客 Py ...

  9. 【Python OpenCV】图像直方图 calcHist方法 equalizeHist方法

    [Python OpenCV]图像直方图 calcHist方法 equalizeHist方法 (一)图像直方图 图像的构成是有像素点构成的,每个像素点的值代表着该点的颜色(灰度图或者彩色图).所谓直方 ...

  10. Python使用openCV把原始彩色图像转化为灰度图、使用OpenCV把图像二值化(仅仅包含黑色和白色的简化版本)、基于自适应阈值预处理(adaptive thresholding)方法

    Python使用openCV把原始彩色图像转化为灰度图.使用OpenCV把图像二值化(仅仅包含黑色和白色的简化版本).基于自适应阈值预处理(adaptive thresholding)方法 目录

最新文章

  1. Matlab 图论最短路问题模型代码
  2. python从入门到精通视频教程百度云-python从入门到精通视频教程百度云资源
  3. Mysql主从异常 表被回滚_oracle表回滚到一个指定时间的操作语句 oracle 误删除数据恢复...
  4. openstack万兆交换机设置mtu值
  5. php pdo mysql存储过程_MySQL从PHP PDO中的存储过程检索变量
  6. 两台邮件服务器共用一个公网地址,两个不同域邮件服务器的互通
  7. 打表巧解蛇形方阵(洛谷P5731题题解,Java语言描述)
  8. 【无人驾驶】基于毫米波雷达的自动紧急刹车系统设计
  9. 解决Macbook安装win10/win11时遇到的WDF_Violation 蓝屏错误问题 - 安装Bootcamp驱动蓝屏
  10. 服务器没有立即响应请求,服务器没有及时响应或控制请求
  11. 编程之美——1.2 中国象棋将帅问题(转)
  12. css中overflow属性失效,页面始终不能滚动显示溢出的内容
  13. python画美国队长盾牌——turtle库
  14. pdn阻抗测试_毫欧级电源分配网络PDN的输出阻抗和传输阻抗测量
  15. Windows 10 Build 21332:纯净安装移除 Paint 3D 应用
  16. AE已支持M1芯片mac安装(After Effects 20直装版M1安装方法)M1芯片处理器安装AE问题教程
  17. 数字孪生电梯模型构建方案
  18. [经验]Class MediaTransCoder is implemented in both One of the two will be used. Which one is undefined
  19. 招行信用卡利息怎么算
  20. 基于机器学习的人民日报和微博等与疫情有关话题数据两极情感分析

热门文章

  1. java wsdl文件生成代码_如何用myeclipse将wsdl文件生成java代码
  2. 操作 神通数据库_国产神通数据库操作备忘(Linux)
  3. Scratch(十八):潜艇大战
  4. 用html制作毕业论文设计,个人网页的设计与制作毕业论文
  5. Matlab归一化方法
  6. 微信小程序列表渲染(循环渲染)
  7. mysql数据库巡检方案_美团 MySQL 数据库巡检系统的设计与应用
  8. Android屏幕共享与直播-red5流媒体服务器搭建
  9. 日志系统模块基础、C语言实现一个日志模块、zlog日志模块基础
  10. layui里面layer弹窗渲染layerdate,时间控件不出现,闪现问题,F12才出来