直方图均衡实验报告

  • 格式:doc
  • 大小:1.80 MB
  • 文档页数:15

下载文档原格式

  / 15
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数字图像处理实验报告实验二图像直方图均衡

姓名:*******

学号:*********

专业:************

一.实验目的

学习并掌握图像直方图均衡的基本理论,并通过分析均衡前后的图像验证课堂教学内容,总结直方图均衡的特点。

二.实验内容

对图像 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;

}