直方图均衡化

1.对于有G个灰度级(一般是256)大小的M*N图像,创建一个长为G的数组H,并初始化为0.

2.形成直方图:扫描每个像素,增加相应的H成员,当像素p具有亮度gp时,做

H[gp] = H[gp] +
1

3.形成累积直方图Hc:

Hc[0] = H[0]

Hc[p] = Hc[p-1]+Hc[p], p = 1,
2, ... G-1

4. 设置T[p] = round(Hc[p] *
(G-1)/MN)

5. 重新扫描图像,得到一个具有灰度级gp的输出图像,设置gp =
T[gp].

来自为知笔记(Wiz)

直方图均衡化,布布扣,bubuko.com

时间: 2024-11-06 19:58:10

直方图均衡化的相关文章

学习笔记(二)——直方图均衡化和匹配

? 本文为原创作品,转载请注明出处 欢迎关注我的博客:http://blog.csdn.net/hit2015spring 和 http://www.cnblogs.com/xujianqing/ 作者:许剑清???? (叶舞清风) ? ? 本文的学习是基于冈萨雷斯<数字图像处理第二版>这本专著的对应于书中章节3.3 这一篇文章如题,主要是讲直方图均衡化和匹配的一些基本概念.不涉及很多的技术问题专业数学推导,只是为入门图像处理做一个感性的认识,具体应用请朋友们自己发挥创造,欢迎大家一起来交流.

灰度直方图均衡化的算数推导

首先考虑连续函数并且让变量r表示待增强图像的灰度级.假设r被归一化到[0,1],且r=0表示黑色,r=0表示白色. 对于连续函数,假设其变换函数为 (公式一) 在原始图像中,对于每一个r对应着一个灰度值s.其中变换函数要满足以下条件: T(r)在[0,1]中为单值,且单调递增. 当0<=r<=1时,0<=T(r)<=1.这样保证输出的灰度级与输入的灰度级有同样的范围. 把公式一的逆函数表示为 (公式二) 令Pr(r)和Ps(s)分别表示随机变量r和s的概率密度函数.由基本概率理论得

opencv直方图均衡化

#include <iostream> #include "highgui.h" #include "cv.h" #include "cxcore.h" #include "math.h" using namespace std; using namespace cv; //绘制1维直方图 Mat draw1DHistogram(Mat histogramMat) { double maxVal = 0, minV

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

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

直方图均衡化算法实现

直方图 直方图(histogram)是灰度级的函数,它表示图像中具有每种灰度级的像素的个数, 反映原图中各种灰度值分布的情况. 如下图所示,灰度直方图的横坐标是灰度级,纵坐标是该灰度级出现的频率,是图像的最基本的统计特征. 上面的是标准直方图 灰度统计累计直方图: H(k)= ∑ni(i<=k) 累积直方图中第k列的高度是图像中所有灰度值<=k的像素的个数 灰度直方图的求取算法实现 void GetHistogram(BYTE *image_Src, int width, int height

直方图均衡化会造成灰度级的合并【伪轮廓】

均衡化处理后的图象只能是近似均匀分布.均衡化图象的动态范围扩大了,但其本质是扩大了量化间隔,而量化级别反而减少了, 因此,原来灰度不同的象素经处理后可能变的相同,形成了一片的相同灰度的区域,各区域之间有明显的边界,从而出现了伪轮廓. 如果原始图像对比度本来就很高,如果再均衡化则灰度调和,对比度降低.在泛白缓和的图像中,均衡化会合并一些象素灰度,从而增大对比度.均衡化后的图片如果再对其均衡化,则图像不会有任何变化. 灰度直方图均衡化的算法,简单地说,就是把直方图的每个灰度级进行归一化处理,求每种灰

opencv 直方图均衡化

将代码中的图片路径换成实际路径即可. #include "stdafx.h" #include "cv.h" #include "highgui.h" #include <highgui.h> #include <cv.h> using namespace std; int main(int argc, char** argv) { int k; IplImage* src = cvLoadImage("..\\

直方图均衡化和规定化

直方图均衡化 clear;close all; A=imread('lena_gray_512.tif'); B=imadjust(A); subplot(2,2,1); imshow(A); title('原始图像') subplot(2,2,2); imhist(A); title('原始图像直方图') subplot(2,2,3); imshow(B); title('均衡化图像') subplot(2,2,4); imhist(B);  title('均衡化图像直方图') 直方图规定化

基于matlab的直方图均衡化代码

2007-04-15 20:15 clear all %一,图像的预处理,读入彩***像将其灰度化 PS=imread('1.jpg');                 %读入JPG彩***像文件 imshow(PS)                                  %显示出来 title('输入的彩色JPG图像') imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩***片灰度化并保存 PS=rgb2gray(PS);      

matlab 直方图均衡化

原理: 直方图均衡化首先是一种灰度级变换的方法: 原来的灰度范围[r0,rk]变换到[s0,sk]变换函数为:s=T(r); 为便于实现,可以用查找表(look-up table)的方式存储,即:原始的灰度作为查找表的索引,表中的内容是新的灰度值. 其次,直方图均衡化是图像增强的一种基本方法,可提高图像的对比度,即:将较窄的图像灰度范围以一定规则拉伸至较大(整个灰度级范围内)的范围. 目的是在得到在整个灰度级范围内具有均匀分布的图像. 所以,当输入:直方图H(r)[此处指每个灰度级占有的像素数]