数字图像处理之直方图均衡

直方图均衡化的原理在这里就不赘述了,网上有多此类的博文,也可以参考冈萨雷斯的《数字图像处理》(第三版)一书中的第三章中的相关介绍;

这里演示一下直方图均衡化的效果:

原图像如下:

经过直方图均衡化处理后:

可以看到图像的对比度整体有的很大的提升,原本模糊不清的细节也变得清晰起来

直方图均衡化的算法实现可以分为三个步骤:

第一步:获得原图像的概率密度函数(PDF)。

 1 for(i=0;i<rows;i++)
 2 {
 3     for(j=0;j<cols;j++)
 4     {
 5         n[Image[i][j]]++;        //遍历整幅图像
 6     }
 7 }
 8 for(i=0;i<L;i++)
 9 {
10     p[i]=n[i]/(rows*cols);
11 }  

其中,n[i]代表了灰度级为i的像素个数,那么p[i]的含义也就呼之欲出了,即为原始图像的概率密度函数(PDF)也称为归一化之后的直方图,L为图像的灰度级(典型取值如:256)

第二步:获得累计的归一化直方图

1 for(i=0;i<L;i++)
2 {
3     for(j=0;j<=i;j++)
4     {
5         c[i]+=p[j];
6     }
7 }

第三步:获得处理后的图像

1 for(i=0;i<rows;i++)
2 {
3     for(j=0;j<cols;j++)
4     {
5         result[i][j]=c[Image[i][j]]*(max - min) + min;
6     }
7 }

其中max, min分别代表原图像中的最大和最小灰度级(需要遍历图像获得,前面的代码中并没有加入获得max以及min的值的代码)

时间: 2024-08-24 05:30:58

数字图像处理之直方图均衡的相关文章

初始----python数字图像处理--:环境安装与配置

一提到数字图像处理编程,可能大多数人就会想到matlab,但matlab也有自身的缺点: 1.不开源,价格贵 2.软件容量大.一般3G以上,高版本甚至达5G以上. 3.只能做研究,不易转化成软件. 因此,我们这里使用python这个脚本语言来进行数字图像处理. 要使用python,必须先安装python,一般是2.7版本以上,不管是在windows系统,还是linux系统,安装都是非常简单的. 要使用python进行各种开发和科学计算,还需要安装对应的包.这和matlab非常相似,只是matla

结合实例与代码谈数字图像处理都研究什么?

图像处理(以及机器视觉)在学校里是一个很大的研究方向,很多研究生.博士生都在导师的带领下从事着这方面的研究.另外,就工作而言,也确实有很多这方面的岗位和机会虚位以待.而且这种情势也越来越凸显.那么图像处理到底都研究哪些问题,今天我们就来谈一谈.图像处理的话题其实非常非常广,外延很深远,新的话题还在不断涌现.下面给出的12个大的方向,系我认为可以看成是基础性领域的部分,而且它们之间还互有交叉 1.图像的灰度调节 图像的灰度直方图.线性变换.非线性变换(包括对数变换.幂次变换.指数变换等).灰度拉伸

学习数字图像处理_1

结束了数据结构的内容之后,在图书馆接着看数字图像处理的内容.教材以冈萨雷斯编写的<数字图像处理(第三版)>和<数字图像处理(matlab版)>为主.前期看的是后者,后者较薄,且以介绍matlab的各种图像处理相关函数和编程为主,原理讲的较少,前4章还能大概看懂程序,到图像复原这章由于基础知识不到位看的比较吃力,所以网上买了纯理论的第一本书.两本结合着看,前期还是以基础知识为主吧,matlab编程本身难度不大,主要是理解算法原理,虽然大部分算法matlab已经编好放在map工具箱中的

《数字图像处理原理与实践(MATLAB版)》一书之代码Part9

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part9,辑录该书第431至第438页之代码,供有需要读者下载研究使用.至此全书代码发布已经接近尾声,希望这些源码能够对有需要的读者有所帮助.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 首先给出的是原书P438所列之程序源

《数字图像处理原理与实践(MATLAB版)》一书之代码Part8

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part8,辑录该书第375至第415页之代码,供有需要读者下载研究使用.至此全书代码发布已经接近尾声,希望这些源码能够对有需要的读者有所帮助.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 P385-1 function y

数字图像处理作业使用OpenCV - 使用笔记

数字图像处理作业的输入图像全部都是灰度图像,所以汇总一下自己遇到的问题答案. OCV的图像容器是Mat<typename>,可以用imread(filename)读取图像,filename是c string,char*和const char*都行.灰度图像的typename是uchar,RGB图像的typename是Vec3b. Mat容器如果直接使用操作符赋值,只会复制一份信息头而不会复制包含数据的矩阵,由此而降低内存的浪费和速度,所以这样得到的多个Mat对象都指向同一个数据矩阵,换句话说,

数字图像处理1 、2基本原理

数字图像处理matlab版 冈萨雷斯 图书笔记系列,是个人读书笔记,写的不会太详细,具体内容要看课本(有例子和程序),这里只是罗列些基本的和重要的概念,方便复习,记忆和理解,弄点例子和练习. 什么东西都那么详细,是不现实的,大脑记不住,也太没效率.厚书可以慢看,但不能厚重的回忆,要把书读薄. 第一章 绪言和第二章 基本原理.对应课本,第1,2章. 解释了图像处理的含义,以及低,中,高级处理的对应内容. 数字图像是二维的,用函数表示为f(x, y),x行,y列,也可用二维矩阵表示. 注: Matl

OpenCV-跟我一起学数字图像处理之直方图均衡化

从这篇博文开始,小生正式从一个毫不相干专业转投数字图像处理.废话不多说了,talk is cheap. show me the code. 直方图均衡化目的 由于一些图像灰度的分布过于集中,这样会导致图像的层次不够分明,直方图均衡化就是为了让图像的灰度分布更均匀,图像的层次感更强. 数学原理 基于连续灰度分布的结论推导 直方图均衡化属于数字图像处理中灰度变换(intensity transformation)的内容,灰度变换的目的就是找到一个合适的映射函数s=T(r).将原图像的灰度值映射到新的

《数字图像处理原理与实践(MATLAB版)》一书之代码Part5

本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part5,辑录该书第225至第280页之代码(此处应部分读者之需求调整了代码发布的顺序--详细说明请见下面的文章链接),供有需要读者下载研究使用.代码执行结果请参见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MATLAB版)>一书代码发布的说明 http://blog.csdn.net/baimafujinji/article/details/40987807 P245 I = imread(