灰度直方图

一幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的一个重要特征。图像的灰度直方图就描述了图像中灰度分布情况,能够很直观的展示出图像中各个灰度级所占的多少。

图像的灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率。

灰度直方图的计算公式如下:

p(rk)=nk/MN

其中,rk是像素的灰度级,nk是具有灰度rk的像素的个数,MN是图像中总的像素个数。

直方图均衡化 Histogram Equalization

假如图像的灰度分布不均匀,其灰度分布集中在较窄的范围内,使图像的细节不够清晰,对比度较低。通常采用直方图均衡化及直方图规定化两种变换,使图像的灰度范围拉开或使灰度均匀分布,从而增大反差,使图像细节清晰,以达到增强的目的。

直方图均衡化,对图像进行非线性拉伸,重新分配图像的灰度值,使一定范围内图像的灰度值大致相等。这样,原来直方图中间的峰值部分对比度得到增强,而两侧的谷底部分对比度降低,输出图像的直方图是一个较为平坦的直方图。

均衡化算法

直方图的均衡化实际也是一种灰度的变换过程,将当前的灰度分布通过一个变换函数,变换为范围更宽、灰度分布更均匀的图像。也就是将原图像的直方图修改为在整个灰度区间内大致均匀分布,因此扩大了图像的动态范围,增强图像的对比度。通常均衡化选择的变换函数是灰度的累积概率,直方图均衡化算法的步骤:

计算原图像的灰度直方图 P(Sk)=nknP(Sk)=nkn,其中nn为像素总数,nknk为灰度级SkSk的像素个数

计算原始图像的累积直方图 CDF(Sk)=∑i=0knin=∑i=0kPs(Si)CDF(Sk)=∑i=0knin=∑i=0kPs(Si)

Dj=L⋅CDF(Si)Dj=L⋅CDF(Si),其中 DjDj是目的图像的像素,CDF(Si)CDF(Si)是源图像灰度为i的累积分布,L是图像中最大灰度级(灰度图为255)

灰度直方图均衡化实现的步骤

1.统计灰度级中每个像素在整幅图像中的个数

2.计算每个灰度级占图像中的概率分布

3.计算累计分布概率

4.计算均衡化之后的灰度值

5.映射回原来像素的坐标的像素值

示例说明

来看看通过上述步骤怎样实现的拉伸。假设有如下图像:

得图像的统计信息如下图所示,并根据统计信息完成灰度值映射:

映射后的图像如下所示:

灰度直方图均衡化实现

//img_size为图像大小//Image_Use为图像数组

//Use_ROWS为行,Use_Line为列

float img_size = Use_ROWS * Use_Line * 1.0;int count_data[256],huidu_data[256]; //计数统计、均衡化的灰度值

float midu_data[256],leijimidu_data[256]; //概率密度、累计概率密度//数组初始化

memset(count_data, 0, sizeof(count_data));

memset(midu_data,0.0, sizeof(midu_data));

memset(leijimidu_data,0.0, sizeof(leijimidu_data));

memset(huidu_data,0.0, sizeof(huidu_data));//1.统计灰度级中每个像素在整幅图像中的个数

for(int i = 0; i < Use_ROWS; i++)

{for(int j = 0; j < Use_Line; j++)

{

count_data[Image_Use[i][j]]++;

}

}//2.计算每个灰度级占图像中的概率分布

for(int i = 0; i < 256; i++)

{

midu_data[i]= count_data[i]/img_size;

}//3.计算累计分布概率

leijimidu_data[0] = midu_data[0];for(int i = 1; i < 256; i++)

{

leijimidu_data[i]= midu_data[i]+leijimidu_data[i-1];

}//4.计算均衡化之后的灰度值

for(int i =0; i <256; i++)

{

huidu_data[i]= (int)(255 *leijimidu_data[i]);

}//5.映射回原来像素的坐标的像素值

for(int i = 0; i < Use_ROWS; i++)

{for(int j = 0; j < Use_Line; j++)

{

Image_Use[i][j]=huidu_data[Image_Use[i][j]];

}

}

原始图像:

直方图均衡化后的图像:

直方图规定化

参考:

java 灰度直方图_【数字图像处理】灰度直方图、直方图均衡化、直方图规定化...相关推荐

  1. python绘制灰度图片直方图-python数字图像处理(9):直方图与均衡化

    在图像处理中,直方图是非常重要,也是非常有用的一个处理要素. 在skimage库中对直方图的处理,是放在exposure这个模块中. 1.计算直方图 函数:skimage.exposure.histo ...

  2. python 灰度直方图_数字图像处理灰度变换之灰度直方图及python实现

    图像灰度直方图 灰度直方图是图像灰度级的函数,用来描述每个灰度级在图像矩阵中的像素个数或者占有率.直方图显示图像数据时会以左暗右亮的分布曲线形式呈现出来.横坐标是灰度级,纵坐标是该灰度级出现的频率.图 ...

  3. python绘制灰度图片直方图-python数字图像处理实现直方图与均衡化

    在图像处理中,直方图是非常重要,也是非常有用的一个处理要素. 在skimage库中对直方图的处理,是放在exposure这个模块中. 1.计算直方图 函数:skimage.exposure.histo ...

  4. 8bit黑白图像的灰度值范围是_数字图像处理基本知识

    1.数字图像: 数字图像,又称为数码图像或数位图像,是二维图像用有限数字数值像素的表示.数字图像是由模拟图像数字化得到的.以像素为基本元素的.可以用数字计算机或数字电路存储和处理的图像. 2.数字图像 ...

  5. 什么叫做形态学图像处理_数字图像处理在二值形态学及其灰度形态学方面的应用.ppt...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp图形图像 数字图像处理在二值形态学及其灰度形态学方面的应用.pp ...

  6. 图像分割的java程序_基于java的图像分割(数字图像处理)

    [实例简介] 基于java的图像分割(数字图像处理),程序中包含 全局阈值分割,Roberts边缘检测分割,灰度图像,直方图. [实例截图] [核心代码] ImageProcess └── Image ...

  7. JAVA网关实现_网关实现灰度发布

    一.背景 互联网产品开发有个非常特别的地方,就是不停的升级,升级,再升级.采用敏捷开发的方式,基本上保持每周或者每两周一次的发布频率,系统升级总是伴随着各种风险,新旧版本兼容的风险,用户使用习惯突然改 ...

  8. winpcap基本原理及常见应用_数字图像处理原理及应用教学大纲

    课程基本信息 课程代码:080706E3S3004 学 分 数:3学分 学 时 数:48学时(讲课36,实验12) 课程类别:专业方向课.必修课 开课学期:6学期 主讲教师:陈天华 修订日期:2020 ...

  9. 数字图像处理与python实现_数字图像处理学习(2)—— 图像直方图均衡与图像匹配(python实现)...

    数字图像处理学习(2)-- 直方图均衡与图像匹配 1. 直方图均衡(Histogram Equalization) 1.1 直方图均衡化概念 1.2 直方图均衡实现简单思路 1.3 直方图均衡实现代码 ...

  10. matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21

    数字图像处理期末复习2018-12-21 愉快先生 0.204 · 字数 5547 · 阅读 1834 2018-12-22 19:35 (数字图像冈萨雷斯第二版教材) 一.基本原理 图像的读取.存储 ...

最新文章

  1. 亿级PV,常见性能优化策略总结与真实案例
  2. python有时候没有智能提示_python没有报错提示
  3. 如何设置MySQL的时区?
  4. Java环境变量的配置 (Win10环境下)
  5. 设备树与驱动的关系_Linux CommonClock Framework分析之四 gpio clk gate驱动实现
  6. VMware关闭虚拟机系统后不见了
  7. linux一句话问答(网络无关篇+网络相关篇+程序开发篇+经典图书)
  8. Python 字符串和列表的转化 ,简单到尖叫
  9. 支付宝开放新玩法:搜商家可领消费券
  10. 递归下降分析器的设计java_数据结构(Java版)教与学(48和60学时教学大纲)
  11. 怎么购买企业邮箱,才不被坑?
  12. 【GNN】百度「NLP」面试的一点总结
  13. ubuntu 下android设备找到fastboot驱动
  14. 飞克速读软件的训练法
  15. 信息论与编码之信源编码详解
  16. 微信无法定位 请打开定位服务器,微信定位开了还是无法定位(定位打开了无法获取位置)...
  17. 山西省太原市、运城市、大同等市全面推行建筑工地劳务实名制
  18. 国家何时整治程序员的高薪现象???
  19. 使用python脚本监控服务器显卡使用情况
  20. Jquery鼠标点击后变色,点击另一个按钮颜色还原

热门文章

  1. GMT5在linux下的中文支持
  2. 教你手写DMA传输数据(看完这篇你就会手动写啦,保姆级讲解)---- 2020.3.31
  3. java输出排列整齐,java 每次输出有单个数字和好几位数字时候 排列不整齐。。这个不知道有没有办法解决的?...
  4. C语言控制台打印输出整齐问题
  5. 五款电动车充电器原理图(重点图2分析过程UC3842的VCC启动电压和稳定供电电压说明,12V由稳压二极管得到做外围电源LM358比较器可被控制输出12V 和0V切换)UC3842电源管理芯片详解
  6. 如何更换程控交换机的人工铃声
  7. Linux SPI 字符设备 驱动例子
  8. 解决联想电脑所有浏览器主页被篡改成百度网址导航
  9. 教您画化学装置图,看完就会了
  10. 【前端】语义化标签详解