数字图像处理课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理设计报告
【设计目的】
配合《数字图像处理》课程的教学,使学生能巩固和加深对数字图像处理基础理论和基本知识的理解;掌握使用图像处理软件处理图像基本思想和方法;提高学生对图像处理方面的实际问题的应对能力并将所学知识在实践中巩固。
【设计要求】
1.按照题目的要求,简要介绍算法,并对算法进行分析;
2.用MATLAB完成算法代码(不能利用MATLAB自身的图像处理函数完成具
体算法,读写和显示可以利用MATLAB函数),注释要清晰;
3.给出代码运行的结果,并对结论进行总结;
4.每人可选一个给出的题目或自己感兴趣的题目,按照上面要求上交报
告,内容不得少于5页A4纸。
【所选题目】
用直方图均衡化一幅8位的灰度图像
【设计环境】
MATLAB7.1,所选图片为彩色动画图片,大小为1024*666*24b
【算法介绍和分析】
1、算法概述:直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法。
直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。
直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。
直方图均衡化就是把给定图像的直方图分布改变成“均
匀”分布直方图分布。
2、算法分析:
直方图均衡化的基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的动态范围从而可达到增强图像整体对比度的效果。
设原始图像在(x,y)处的灰度为f,而改变后的图像为g,则对图像增强的方法可表述为将在(x,y)处的灰度f映射为g。
在灰度直方图均衡化处理中对图像的映射函数可定义为:g = EQ (f),这个映射函数EQ(f)必须满足两个条件(其中L为图像的灰度级数):
(1)EQ(f)在0≤f≤L-1范围内是一个单值单增函数。
这是为了保证增强处理没有打乱原始图像的灰度排列次序,原图各灰度级在变换后仍保持从黑到白(或从白到黑)的排列。
(2)对于0≤f≤L-1有0≤g≤L-1,这个条件保证了变换前后灰度值动态范围的一致性。
累计分布函数(cumulative distribution function,CDF)即可以满足上述两个条件,并且通过该函数可以完成将原图像f的分布转换成g的均匀分布。
此时的直方图均衡化映射函数为:
gk = EQ(fk) = (ni/n) = pf(fi) ,(k=0,1,2,……,L-1)
3、灰度直方图变换的步骤:
第一,统计每种灰度值出现的次数,记为Nk;
第二,计算概率Sk,Sk=Nk/N;
第三,求其密度分布函数Sk’=P(R0)+ P(R1)+ P(R2)……+ P(Rk),p 实际上是图像的直方图,归一化到 0——1;
第四,利用迭代方案对每一个sk值预计算值;
第五,对于原始图像的每个像素,若像素值为rk,将该值映射到其对应的灰度级sk,然后映射到最终灰度级zk。
在均衡化过程中可以对每一象素映射到新的实际灰度值sk*255,就实现了图像的变换(严格理论中应该是灰度正规化到[0,1]区间,然后均衡化后的sk还要量化到原始的正规灰度以实现灰度合并)
【实现代码】
sourcePic=imread('two.JPG'); %读取原图象
[m,n,o]=size(sourcePic); %测量图像尺寸参数
grayPic=rgb2gray(sourcePic);%将原来彩色图片转换为黑白图片,并将数据存入数组
figure,imshow(sourcePic);%显示原来彩色图片
figure,imshow(grayPic); %显示黑白图片
gp=zeros(1,256); %计算各灰度出现的概率
for i=1:256
gp(i)=length(find(grayPic==(i-1)))/(m*n);
end %计算每级灰度出现的概率,将其存入gp中相应位置
figure,bar(0:255,gp); %绘制直方图
title('原图像直方图');
xlabel('灰度值');
ylabel('出现概率');
newGp=zeros(1,256); %计算新的各灰度出现的概率
S1=zeros(1,256);
S2=zeros(1,256);
tmp=0;
for i=1:256
tmp=tmp+gp(i);
S1(i)=tmp; %计算Sk
S2(i)=round(S1(i)*256); %将Sk规划到最近的灰度
end
for i=1:256
newGp(i)=sum(gp(find(S2==i))); %计算现有每个灰度级出现的概率 end
figure,bar(0:255,newGp);
title('均衡化后的直方图');
xlabel('灰度值');
ylabel('出现概率');
newGrayPic=grayPic; %填充各像素点新的灰度值
for i=1:256
newGrayPic(find(grayPic==(i-1)))=S2(i); %将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(newGrayPic);
title('均衡化后的图像 ');
【说明】
所用函数:
1、ZEROS Zeros array.零矩阵
ZEROS(N) is an N-by-N matrix of zeros.N阶的全零矩阵
ZEROS(SIZE(A)) is the same size as A and all zeros.大小与矩阵A一样的全零矩阵
2、LENGTH(X) returns the length of vector X;返回向量X的长度
It is equivalent to MAX(SIZE(X)) for non-empty arrays and 0 for empty ones.相当于求非空数组的MAX(SIZE(X))和空数组的从0到MAX
3、FIND Find indices of nonzero elements.查找非零元素指标
I = FIND(X) returns the linear indices of the array X that are nonzero.返回非零的线性阵列的X指数。
X may be a logical expression,Use IND2SUB(I,SIZE(X)) to calculate multiple subscripts from the linear indices I.
X可能是一个逻辑表达式
4、RGB2GRAY Convert RGB image or colormap to grayscale.
将RGB格式的图片灰度化
5、ROUND Round towards nearest integer.轮对最接近的整数
ROUND(X) rounds the elements of X to the nearest integers.
6、SUM Sum of elements.
S = SUM(X) is the sum of the elements of the vector X.
7、BAR Bar graph.条形化图
BAR(X,Y) draws the columns of the M-by-N matrix Y as M groups of N vertical bars. The vector X must not have duplicate values.
【运行结果】
【小结】
通过这次的课程设计,我首次通过编写代码来完成对图像的处理,这是一份难得的经验。
在刚开始运用MATLAB时,由于长时间的搁置,对其操作可以说是非常的不熟练,但是,当我把以前做过的MATLAB实验的记录重新看过之后,开始慢慢的对MATLAB的操作熟练起来,并且在实践中找到了学习的乐趣。
虽然在这短时间里需要不断查资料,然后对着电脑,把一个一个郁闷得问题解决,那过程真的是苦不堪言。
但当自己把一个个的问题慢慢解决,运行成功的时候,那种快乐也是无可比拟的。
平时上课的时候只是对老师讲的图像处理的动手环节比较感兴趣,对其原理和基础知识不太刚兴趣,甚至可以说完全不明白。
但是,通过向老师请教,上网查资料,我对直方图均衡化的基本原理了解的很清楚了,并且在调试代码和运用HELP中对其均衡化的过程有了进一步的了解。
同时,也通过这次课程设计,对MATLAB中的一些常用函数有了一定的了解,对于以后对MATLAB 的运用打下了良好的基础。
总得来说,这次课程设计,我,受益匪浅。
计算机科学与技术学院
0703班 ***。