数字图像处理实验报告 直方图均衡化Word文档格式.docx

上传人:b****3 文档编号:8125596 上传时间:2023-05-10 格式:DOCX 页数:12 大小:124.66KB
下载 相关 举报
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第1页
第1页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第2页
第2页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第3页
第3页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第4页
第4页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第5页
第5页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第6页
第6页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第7页
第7页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第8页
第8页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第9页
第9页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第10页
第10页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第11页
第11页 / 共12页
数字图像处理实验报告 直方图均衡化Word文档格式.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字图像处理实验报告 直方图均衡化Word文档格式.docx

《数字图像处理实验报告 直方图均衡化Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字图像处理实验报告 直方图均衡化Word文档格式.docx(12页珍藏版)》请在冰点文库上搜索。

数字图像处理实验报告 直方图均衡化Word文档格式.docx

产生一幅灰度级分布具有均匀概率密度的图像,扩展像素取值的动态范围,达到了图象增强的目的。

3、直方图均衡化的效果:

1)变换后直方图趋向平坦,灰级减少,灰度合并。

2)原始象含有象素数多的几个灰级间隔被拉大了,压缩的只是象素数少的几个灰度级,实际视觉能够接收的信息量大大地增强了,增加了图象的反差。

同时,也增加了图象的可视粒度。

4、离散情况下的直方图均衡化的算法:

A、列出原始图像的灰度级

B、统计各灰度级的像素数目

C、计算原始图像直方图各灰度级的频数

D、计算累积分布函数

F、应用以下公式计算映射后的输出图像的灰度级,P为输出图像灰度级的个数,其中INT为取整符号:

G、用的映射关系修改原始图像的灰度级,从而获得直方图近似为均匀分布的输出图像。

5、主要代码

///////////////////////////////////////////////////////////////////

画两个直方图坐标轴

voidCImageView:

:

OnDraw(CDC*pDC)

{

CImageDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

//TODO:

adddrawcodefornativedatahere

if(m_dib.m_bLoaded==true)//判断是否加载图像

{

//获取图像宽和高

intnw=m_dib.GetDIBWidth();

intnh=m_dib.GetDIBHeight();

if(m_dib.m_bLoaded==true)

intnw=m_dib.GetDIBWidth();

intnh=m_dib.GetDIBHeight();

m_dib.ShowDIB(pDC,10,10,nw,nh,m_dib.m_pDIBData,m_dib.m_pBMI);

m_dib.ShowDIB(pDC,400,10,nw,nh,m_dib.m_pDumpDIBData,m_dib.m_pBMI);

}

if(m_bHist==true)

//绘画直方图

CStringstr;

inti;

//绘制坐标轴

pDC->

MoveTo(10,nh+20);

//(10,nh+20)是直方图的左上角坐标

//垂直轴

LineTo(10,nh+200);

//(10,nh+200)是直方图的左下角坐标

//水平轴

LineTo(310,nh+200);

//(310,nh+200)是直方图的右下角坐标

//写X轴刻度值

str.Format("

0"

);

TextOut(10,nh+200+10,str);

50"

TextOut(60,nh+200+10,str);

100"

TextOut(110,nh+200+10,str);

150"

TextOut(160,nh+200+10,str);

200"

TextOut(210,nh+200+10,str);

255"

TextOut(265,nh+200+10,str);

原图直方图归一化"

TextOut(100,nh+230+10,str);

//绘制X轴刻度

for(i=0;

i<

256;

i+=25)

{

if((i&

1)==0)

{

//10的倍数

pDC->

MoveTo(i+10,nh+200-2);

LineTo(i+10,nh+200+2);

}

else

}

//绘制X轴箭头

MoveTo(305,nh+200-5);

LineTo(305,nh+200+5);

//绘制y轴箭头

LineTo(5,nh+20+5);

LineTo(15,nh+20+5);

intmax=0;

for(i=0;

i<

256;

i++)

if(m_yuantu[i]>

max)

max=m_yuantu[i];

pDC->

MoveTo(10+i,nh+200);

LineTo(10+i,nh+200-(m_yuantu[i]*160/max));

/*********

*********/

//TEST第二个直方图

if(m_bHist==true)

MoveTo(160+nw,nh+20);

LineTo(160+nw,nh+200);

LineTo(460+nw,nh+200);

TextOut(415,nh+200+10,str);

TextOut(465,nh+200+10,str);

TextOut(515,nh+200+10,str);

TextOut(565,nh+200+10,str);

TextOut(615,nh+200+10,str);

TextOut(670,nh+200+10,str);

直方图均衡化后归一化"

TextOut(505,nh+230+10,str);

MoveTo(i+420,nh+200-2);

LineTo(i+415,nh+200+2);

LineTo(i+420,nh+200+2);

MoveTo(710,nh+200-5);

LineTo(715,nh+200);

LineTo(710,nh+200+5);

MoveTo(415,nh+20);

LineTo(410,nh+20+5);

LineTo(420,nh+20+5);

if(m_hist[i]>

max=m_hist[i];

MoveTo(415+i,nh+200);

LineTo(415+i,nh+200-(m_hist[i]*160/max));

/******

*******/

//显示图像(具体的参数见CDIB类的该函数说明)

m_dib.ShowDIB(pDC,10,10,nw,nh,m_dib.m_pDIBData,m_dib.m_pBMI);

m_dib.ShowDIB(pDC,400,10,nw,nh,m_dib.m_pDumpDIBData,m_dib.m_pBMI);

}

/////////////////////////////////////////////////////////////////////

直方图均衡化及直方图归一化坐标轴赋值程序/////////////////////////////////////////////////////////////////////

OnZhifangtu()

//判断图像是否打开,没打开,则弹出提示框并退出函数

if(!

m_dib.m_bLoaded)

AfxMessageBox("

图像还打开,请先打开图像!

"

return;

//获取图像宽和高及定义成员变量

intnw=m_dib.GetDIBWidth();

intnh=m_dib.GetDIBHeight();

inti,j;

int*arr=newint[nw*nh];

intn[256]={0};

floatp[256]={0.0},c[256]={0.0};

BYTE*pdata=m_dib.m_pdata;

for(i=0;

i++)//初始化直方图数组

m_yuantu[i]=0;

if

(1)//m_dib.m_nImType==24)

{

for(j=0;

j<

nh;

j++)

for(i=0;

nw;

BYTEtemp=pdata[j*nw+i];

m_yuantu[temp]++;

m_bHist=true;

//直方图归一化计算

i++)

{

for(j=0;

j++)

n[m_dib.m_pdata[i*nw+j]]++;

}

(float)p[i]=(float)n[i]/(float)(nw*nh);

//归一化后累计计算

for(i=0;

=i;

c[i]+=p[j];

}

//找到灰度值最大值最小值

intmax=m_dib.m_pdata[0],min=m_dib.m_pdata[0];

if(max<

m_dib.m_pdata[i*nw+j])

max=m_dib.m_pdata[i*nw+j];

elseif(min>

min=m_dib.m_pdata[i*nw+j];

//套公式直方图均衡化计算赋值给arr[]一维数组

arr[i*nw+j]=int(c[m_dib.m_pdata[i*nw+j]]*(max-min)+min+0.5);

//一维数组arr[]赋值给新图像

for(j=0;

j++){

i++){

m_dib.m_pdata[j*nw+i]=arr[j*nw+i];

//将修改的m_pdata的数据赋值给m_pDIBData,以显示修改的结果

m_dib.UpdateData();

//刷新屏幕

Invalidate();

m_hist[i]=0;

m_hist[temp]++;

Addyourcommandhandlercodehere

6、实验结果

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2