北工大数字图像处理bmp图像的直方图均衡实验.docx

上传人:b****5 文档编号:7545266 上传时间:2023-01-24 格式:DOCX 页数:8 大小:793.34KB
下载 相关 举报
北工大数字图像处理bmp图像的直方图均衡实验.docx_第1页
第1页 / 共8页
北工大数字图像处理bmp图像的直方图均衡实验.docx_第2页
第2页 / 共8页
北工大数字图像处理bmp图像的直方图均衡实验.docx_第3页
第3页 / 共8页
北工大数字图像处理bmp图像的直方图均衡实验.docx_第4页
第4页 / 共8页
北工大数字图像处理bmp图像的直方图均衡实验.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

北工大数字图像处理bmp图像的直方图均衡实验.docx

《北工大数字图像处理bmp图像的直方图均衡实验.docx》由会员分享,可在线阅读,更多相关《北工大数字图像处理bmp图像的直方图均衡实验.docx(8页珍藏版)》请在冰豆网上搜索。

北工大数字图像处理bmp图像的直方图均衡实验.docx

北工大数字图像处理bmp图像的直方图均衡实验

 

数字图像处理实验报告

 

11024118李锡蒙

 

实验要求:

1.打开bmp图像,打印图像基本参数,比如长、宽、像素数等。

2.给一幅图像,统计灰度直方图,进行一次直方图均衡操作,比较直方图均衡前后,直方图分布的变化。

 

实验原理:

位图数据的存储方式:

BMP图像文件被分成4个部分:

位图文件头(BitmapFileHeader)、位图信息头(BitmapInfoHeader)、颜色表(ColorMap)和位图数据(即图像数据,DataBits或DataBody)。

第1部分为位图文件头BITMAPFILEHEADER,是一个结构体类型,该结构的长度是固定的,为14个字节。

其定义如下:

typedefstructtagBITMAPFILEHEADER

{

WORDbfType;  

DWORDbfSize;  

WORDbfReserved1; 

WORDbfReserved2;

DWORDbfOffBits;

}BITMAPFILEHEADER,FAR*LPBITMAPFILEHEADER,

*PBITMAPFILEHEADER;

第2部分为位图信息头BITMAPINFOHEADER,也是一个结构体类型的数据结构,该结构的长度也是固定的,为40个字节(WORD为无符号16位整数,DWORD为无符号32位整数,LONG为32位整数)。

其定义如下:

typedefstructtagBITMAPINFOHEADER

{

DWORDbiSize;   

LONGbiWidth;   

LONGbiHeight;   

WORDbiPlanes;   

WORDbiBitCount   

DWORDbiCompression; 

DWORDbiSizeImage;  

LONGbiXPelsPerMeter; 

LONGbiYPelsPerMeter; 

DWORDbiClrUsed;  

DWORDbiClrImportant; 

}BITMAPINFOHEADER,FAR*LPBITMAPINFOHEADER,

*PBITMAPINFOHEADER;

第3部分为颜色表。

颜色表实际上是一个RGBQUAD结构的数组,数组的长度由biClrUsed指定(如果该值为零,则由biBitCount指定,即2的biBitCount次幂个元素)。

RGBQUAD结构是一个结构体类型,占4个字节,其定义如下:

typedefstructtagRGBQUAD

{

BYTErgbBlue;

BYTErgbGreen;

BYTErgbRed;

BYTErgbReserved;

}RGBQUAD;

第4部分是位图数据,即图像数据,其紧跟在位图文件头、位图信息头和颜色表(如果有颜色表的话)之后,记录了图像的每一个像素值。

BMP文件分为4个组成部分,那么BMP文件的读入也要按照4个组成部分依次进行处理,即先处理BITMAPFILEHEADER结构,然后是BITMAPINFOHEADER结构、颜色表,最后是位图数据。

 

实验1遇到的问题和难点:

1.其中若想调用上图中出现的WORD、DWORD、LONG等数据类型,需要在程序开始时加#include"Windows.h"即可。

2.fread(&fileheader,sizeof(BITMAPFILEHEADER),1,inputfile);

fread(&head,sizeof(BITMAPINFOHEADER),1,inputfile);

fread(pColorTable,sizeof(RGBQUAD),256,inputfile);

fread(pBmpBuf,1,lineByte*bmpHeight,inputfile);

一定要按照位图文件头(BitmapFileHeader)、位图信息头(BitmapInfoHeader)、颜色表(ColorMap)和位图数据(即图像数据,DataBits或DataBody)的顺序进行读取,如上所示。

3.lineByte=(bmpWidth*biBitCount/8+3)/4*4;

计算图像每行像素所占的字节数,必须将其长度扩展为4的倍数,再进行图像数据的读取。

 

实验结果:

显示的信息包含如下几方面:

1.ImageType:

图像文件类型;图中显示为“BM”,表示该图像为BMP格式。

2.FileSize:

图像文件大小;图中显示为251078,与下图中图像属性中大小一致。

3.Width:

图像宽度;图中显示为500。

4.Height:

图像高度;图中显示为500。

5.BitCount:

每个像素所占的位数(bit);图中显示为8,表示图像为2^8=256色。

6.Compression:

压缩类型。

7.SizeImage:

图像数据实际占用的字节数。

 

 

直方图均衡化:

实现步骤:

1.统计各个灰度级的像素点数,即求得灰度直方图

2.归一化,用各灰度级的像素点数除以整个图像的像素数,得到0、1间的概率值

3.用累计求和法求转换后的灰度级,如求n级灰度均衡化后的新灰度级,需要把0到n级的概率累加起来,计算所得到的值与哪个灰度级更靠近,该灰度级即为转换后的灰度级

4.进行灰度级转换

实验2遇到的难点和问题:

1.用累加求和算出的值与灰度级贴近,如计算值在0/255和1/255之间,通过比较该值与(0+1)/(255*2)的大小可知与0/255和1/255哪个更为靠近,,大于时与1/255更接近,否则为0/255,。

这个操作是必要的,这样比较后得出的转换灰度值才更准确的。

2.fwrite(&fileheader,sizeof(BITMAPFILEHEADER),1,outputfile);

fwrite(&head,sizeof(BITMAPINFOHEADER),1,outputfile);

fwrite(pColorTable,sizeof(RGBQUAD),256,outputfile);fwrite(pBmpBuf,1,lineByte*bmpHeight,outputfile);

写文件的顺序与读一样。

4.除了第四部分位图数据中原来的灰度级变成了转换后的灰度级,其他三部分的数据是完全一致的,所以实验中我将待进行直方图均衡图像的位图文件头、位图信息头和颜色表信息读取出来后直接写入转换后的文件,再添加转换后位图数据即可。

5.直方图的实现:

实验中我用的是VC的控制台界面编写的程序,画图不是很方便,但是有一个很好用的字符printf("%c",219);ASCII为219号的字符为一个实心的黑方块,可以用来画直方图,但是由于控制台的显示大小有限,我将直方图的长、宽都减小了,所以会丢失一些灰度级的数据,但是大体直方图的特征还是能表现的很好的,尤其是直方图均衡化前后直方图的分布明显不同,可以满足观察转换结果的目的。

 

实验结果:

1.当灰度值分布在高灰度值时的情况(即曝光时间较长),如下图图2,图像偏亮。

图2

图2的直方图

 

图2的灰度直方图显示的情况与分析的结果相同,灰度级只分布在直方图的高灰度值部分,无低灰度值成分,导致图像亮度偏高。

图filter-2

上图filter-2为图2进行直方图均衡后重新生成的图像,可直观感觉到低灰度值(暗)的成分明显增多,图像灰度成分更加丰富。

图filter-2的直方图

分析:

从filter-2的灰度直方图可以看出,灰度值遍布在整个0到255的灰度级区间上,且各灰度级的概率相对于均衡化前的差异变小,达到了直方图均衡化的效果。

2.当灰度值分布在低灰度值时的情况(即曝光时间较短),如下图图3,图像偏暗。

图3图filter-3

图3的直方图

图filter-3的直方图

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

当前位置:首页 > 工作范文 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1