数字图像处理 实验 直方图均衡化实现图像增强

  • 格式:doc
  • 大小:137.50 KB
  • 文档页数:2

XXXXXXXX大学(数字图形处理)实验报告

实验名称 直方图均衡化实现图像增强

实验时间

专 业 姓 名 学 号

预 习 操 作 座 位 号

教师签名 总 评

一、实验目的:

掌握直方图均衡化的原理。

掌握直方图均衡化实现图像增强的实现方法。

二、实验原理:

直方图是统计像数统计图,如设一张灰度图或一个通道,值0~255。

直方图如果按。255个区分的话。统计出来的就是,值为。0的有几个像数,值为1的有机个像数,这样的一张表。

那么均衡化的意思就是。这样表要均衡。不直不于。0有上万个像数,1只有1 个。

正常,直方图本身可以用小于255个区。比如10个,那么这样相对图中的点就有一个映射,这时值0-9统计落在第一个区,值为10-19落第二个区。。。

这样的结果就会出来,10个区,10个统计数区。这时。你均衡就是让10区的统计数据都不会差很多。表现出来的就是一张图上的颜色分布相对均衡。

总的来说直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同的象素点数的过程。

三、实验内容:

利用直方图均衡化实现图像增强。

在资源编辑器中,在主菜单下添加一名为“直方图均衡化”的菜单步骤如前面实验。

实验代码如下:

if(m_DibHead->biBitCount!=8)

{

MessageBox("当前版本仅支持256色位图的操作!","系统提示!",MB_ICONINFORMATION|MB_OK);

return;

}

zftjh(m_Image,m_DibHead->biWidth,m_DibHead->biHeight);

Invalidate();

其中函数zftjh的实现代码如下:

zftjh(unsigned char *lpDib,long lWidth,long lHeight)

{ unsigned char *lpsrc;

long lresult(0);

long i,j;

unsigned char bMap[256];

long lCount[256];

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

lCount[i]=0;

for(i=0;i

for(j=0;j

{

lpsrc=lpDib+i*lWidth+j;

lCount[*lpsrc]++;

}

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

{

lresult=0;

for(j=0;j<=i;j++)

lresult+=lCount[j];

bMap[i]=(lresult*255)/lHeight/lWidth;

}

for(i=0;i

for(j=0;j

{

lpsrc=lpDib+i*lWidth+j;

*lpsrc=bMap[*lpsrc];

}

}

原图为下图的左边部分,均值化以后的图为右边的部分: