直方图均衡实验报告
- 格式:doc
- 大小:1.80 MB
- 文档页数:15
数字图像处理实验报告实验二图像直方图均衡
姓名:*******
学号:*********
专业:************
一.实验目的
学习并掌握图像直方图均衡的基本理论,并通过分析均衡前后的图像验证课堂教学内容,总结直方图均衡的特点。
二.实验内容
对图像 img2 进行直方图均衡(img2为X光片图像)
1.对比均衡前后图像的直方图及特点,
①图形显示其直方图以及灰度映射关系
②计算以下参数:概率非零灰度数,概率非零灰度中最大概
率、最小概率、最大最小概率之比。
③统计图像中概率大于平均概率的灰度级数;
④计算非零概率的平均值和方差
⑤您认为哪些参数能够表现图像直方图分布的均匀程度?试
提取相关参数进行测试。
2.找一到两幅图像重复上述实验。
3.通过实验结果对比,能得出什么结论?
三、实验报告要求
1.源程序(C或Matlab):
(1).画直方图的Matlab程序
filname='E:\课件\大三下\图像处理\实验二\1.bmp'; //打开文件
A=imread(filname); //读取文件信息
imhist(A); //画出图像文件的直方图
(2)C程序
#include
#include
#include
#include
BITMAPFILEHEADER bfh;
BITMAPINFOHEADER bih;
typedef struct PP{
unsigned char GRAY;
}PIXEL;
////画出灰度映射关系图////
void draw(double s[])
{
FILE *fout,*fin;
int i,j;
PIXEL p[256][256];
BITMAPFILEHEADER m_bfh;
BITMAPINFOHEADER m_bih;
RGBQUAD colorPanel[256];
fin=fopen("1.bmp","rb");
fread(&m_bfh,1,sizeof(BITMAPFILEHEADER),fin);
fread(&m_bih,1,sizeof(BITMAPINFOHEADER),fin);
fread(colorPanel,256,sizeof(RGBQUAD),fin);
fclose(fin);
fout=fopen("Gray mapping relationship.bmp","wb");
m_bih.biWidth=256;
m_bih.biHeight=256;
m_bih.biSizeImage=256*256;
m_bfh.bfSize=m_bfh.bfOffBits+m_bih.biSizeImage;
for(i=0;i<256;i++)
for(j=0;j<256;j++) p[i][j].GRAY=255;
for(i=0;i<256;i++){
j=(int)s[i];
p[i][j].GRAY=0;
}
fwrite(&m_bfh,1,sizeof(BITMAPFILEHEADER),fout);
fwrite(&m_bih,1,sizeof(BITMAPINFOHEADER),fout);
fwrite(colorPanel,256,sizeof(RGBQUAD),fout);
fwrite(p,256*256,1,fout);
fclose(fout);
}
////统计概率非零灰度数子函数 ///
double nonzero(double p[])
int i;
double sum=0;
for(i=0;i<256;i++)
if(p[i]!=0) sum=sum+1;
printf("概率非零灰度数:%.2f\n",sum);
return sum;
}
////找到最大概率子函数////
double lmax(double p[])
{
int i;
double max;
for(i=0;i<256;i++) //对max初始化
if(p[i]!=0){
max=p[i];
break;
}
for(i=0;i<256;i++)
if(p[i]!=0&&p[i]>max) max=p[i]; //找出概率非零最大值
printf("概率非零最大值:%lf\n",max);
return max;
}
////找到最小概率子函数////
double lmin(double p[])
{
int i;
double min;
for(i=0;i<256;i++) //对min初始化
if(p[i]!=0){
min=p[i];
break;
}
for(i=0;i<256;i++)
if(p[i]!=0&&p[i] return min; }