文档介绍:《数字图像处理》实验
报告(二)
学号:121310122
姓名:王际尧
专业:机械设计制造及其自动化
课序号:1
计算机科学与技术学院
实验2 直方图均衡化
一、实验学时:4学时(本部分占实验成绩的40%)
二、实验目的:
1、理解直方图均衡化的原理及步骤;
2、编程实现图像(灰度或彩色)的直方图均衡化。
三、必须学习和掌握的知识点:
直方图均衡化是一种快速有效且简便的图像空域增强方法,在图像处理中有着非常重要的意义,因此要求掌握。
四、实验题目:
编程实现灰度图像的直方图均衡化处理。要求给出原始图像的直方图、均衡化图像及其直方图和直方图均衡化时所用的灰度级变换曲线图。
五、思考题:(选做,有加分)
实现对灰度图像的直方图规定化处理。
六、实验报告:
请按照要求完成下面报告内容并提交源程序、可执行程序文件和实验结果图像。
1、请详细描述本实验的原理:
直方图均衡化算法分为三个步骤,第一步是统计直方图每个灰度级出现的次数,第二步是累计归一化的直方图,第三步是计算新的像素值。
第一步:
for(i=0;i<height;i++){
for(j=0;j<width;j++){
n[s[i][j]]++;
}
}
for(i=0;i<L;i++){
p[i]=n[i]/(width*height);
}
这里,n[i]表示的是灰度级为i的像素的个数,L表示的是最大灰度级,width和height分别表示的是原始图像的宽度和高度,所以,p[i]表示的就是灰度级为i的像素在整幅图像中出现的概率(其实就是p[]这个数组存储的就是这幅图像的归一化之后的直方图)。
第二步:
for(i=0;i<=L;i++){
for(j=0;j<=i;j++){
c[i]+=p[j];
}
}
c[]这个数组存储的就是累计的归一化直方图。
第三步:
max=min=s[0][0];
for(i=0;i<height;i++){
for(j=0;j<width;j++){
if(max<s[i][j]){
max=s[i][j];
}else if(min>s[i][j]){
min=s[i][j];
}
}
}
找出像素的最大值和最小值。
for(i=0;i<height;i++){
for(j=0;j<width;j++){
t[i][j]=c[s[i][j]]*(max-min)+min;
}
}
t[][]就是最终直方图均衡化之后的结果。
2、请给出本实验的核心源码(Matlab或C语言):
I=imread('');
imshow(I);
figure,imhist(I);
[J,T]=histeq(I,64);
figure,imsho