
图形图像报告一直方图处理.doc
8页昆明理工大学信息工程与自动化学院学生实验报告(2012 —2013学年第二学期)课程名称:图形图像基础 开课实验室:信自楼444 2013年5月15 0年级、专业、班学号姓名成绩实验项目名称直方图处理指导教师尚振宏教师评教师签名:语年月 曰一、实验目的及内容目的:掌握和熟悉Matlab编程环境及语言;掌握直方图统计的算法和用途 内容:1. 在Matlab中载入一副灰度图像,统计显东该图像的直方图2. 对图像进行直方图均衡化处理,显示处理后的图像及直方图二、要求1. 描述直方图的概念并解释直方图均衡化原理2. 程序结构清晰,运行结果m确3. 描述上述程序的设计、实现和结果,并对结果进行分析三、实验原理1. 直方图的概念灰度直方图反映的是一幅图像中个灰度级像素出现的频率之间的关系以灰度 级为横坐标,纵坐标为灰度级的频率,绘制频率和灰度级的关系图就是灰度直方图直方图的横轴从左到右代表照片从黑(暗部)到0 (亮度)的像素数量,其左 边最暗处的Level值为0,而衣边最亮处的Level值为255直方图的垂直轴方向代 表了在给定的Level值下的像素的数目频率的计算公式为:在以上公式中:nt是图像中灰度级为i的像素数,n为图像的总像素数。
灰度直方图是图像的重要特征之一,它反应了图像灰度分布的情况2. 直方图均衡化原理直方图均衡化是通过对原图进行某种变化使得原图像的灰度直方图修止为一种 均匀的直方图的一种方法灰度直方图均衡化,简单地说,就是把直方图的每一个灰度级进行归~化处理, 计算出每一个灰度的累积分布,得到一个映射的灰度映射表,然后根据相应的灰度 值来修正原图的每个像素四、 实验环境Windows 7、 MATLAB 7.11.0(R2010b)五、 实验内容(包含过程及解析)1.熟悉Matlab编程环境及语言1.在Matlab中载入一副灰度图像,统计敁示该图像的直方图1)设置工作空间为:D: \softid\matlab\workspace,将 pollen, tif 放进工作空问fileEditParallelWDesktop ^r*ncJow H^Ip:L-JILj 11/ , J Kjrrern▼ 1L”moMATLAB"7.11.0(R2O1OB)Shortcuts jCJ How to AddCurrent FolderX workspacepollen.tif(2)载入并显示灰度图像 代码:f=imrcad(,pollen, tif’); imshow(f);运行结來:(如右)(3) imhist显示灰度直方图 代码:figure, imhi st (f)运行结果:(4)bar显示灰度直方图 i= imhi st(f) il=i(1:15:256) horz=(l:15:256) figure, bar(horz, il)(5)stem显乐灰度直方图 horz = (1:15:256) figure, stem (horz, i 1)(7)将图像f均衡化 j=histeq(f, 256) figure, imshow(j)⑹plot显示灰度直方阁 figure,plot(i)(6)得到均衡化后的直方图 Imhist 方法: figure, imhist(j)bar方法:jl=j (1:15:256) k=(l:15:256) figure, bar(horz,jl)stem方法:horz =(1:15:256)figure, stem (horz, jl)r—Figure 9File Edit View Insert 工 ools DesktopWindow Help□ S3 | ■ Q2.图像均衡化(代码在附加:中)代码:cd D:\softid\matlab\workspace clearPollen = ’pollen.tif;MuBiao = imfinfo(Pollen)MuBiao = imread(Pollen);[Height, Width] = size(MuBiao);ImgHist = zeros(256, 1);%统计并画岀图像的灰度直方图for i = 1:Height for j = 1: WidthlmgHist( double(MuBiao(i, j)) + 1) = ImgHist( double(MuBiao(i, j)) +1)+1; endend% axis([0 255 0 max(ImgHist)]) % 放在 plot 函数的•有效%直方阁PrOfMuBiao = ImgHist / sum(ImgHist);%计算累积分布函数CSuniOfPr = cumsum(PrOfMuBiao);%灰度映射-变换函数GrayChg = uint8(CSumOfPr * 255);%⑴图像均衡化后直方图比较figureCName1/图像均衡化后直方图比较7NumberTitle7ofT);%均衡化后的直方罔subplot(121);plot(PrOfMuBiao);title(’直方图’)%累计分布函数%得到均衡化后的阁像数据OutPutMuBiao = MuBiao; %用原位I冬I数掘初始化目标位阁数掘for i = 1:Height forj= 1: Width%根据灰度映射阑数计算源图像每个像索点的灰度值和均衡化后的图像的每个像素 点的灰度值的映射关系OutPutMuBiao(i, j) = GrayChg(uint8(double(MuBiao(i, j)) + 1)); endend%得到均衡化后的直方图for i = l:Height for j = 1:WidthlmgHist( double(OutPutMuBiao(i, j)) + 1 ) = ImgHist( doub1e(OutPutMuBiao(i, j)) + 1 ) +1;endendsubplot(122)plot(ImgHist)均衡化后的直方图i)% (2)罔像直方图均衡化前后对比figurefNameY图像直方图均衡化前后对比7NumberTitle7off);subplot(121)imshow(MuBiao)titlef(l)源图像’)%绘制均衡化后的图像 subplot(122) imshow(OutPutMuBiao) title(’⑵均衡化后的图像)结果:图像直方图均衡化前后直方图对比图像直方图均衡化前后对比| 口丨回H匿像.直方图均晉化前后7T比File Edit View Insert Tools Desktop Window Helpq a a 4 丨 、-、r? □ ici 丨 s 口)源图懷均衡化后的图像六、实验结果、分析和结论从这次试验中,我从中学到了很多东两,产生了很多感悟。
一开始我对实验的要求理解不够,走了很多弯路,不过那些步骤也 不是没有用的,对我熟悉Matlab环境有很大的帮助后来在老师的提 醒下,我回到棺舍重新进行了试验,可以说收获不大,迫不得已上网查 阅了资料,对网上给岀的代码进行阅读和修改,敁终达到了试验目的 这些过程花费了我很多的时间,不过我觉得过程是最宝贵的通过这次试验,掌握了显示图像、图像信息、直方图和均衡化等一 些基本方法这些简单的实现,对我今后的学习会有一定的帮助,我同 时海认识了简单的直方图统计的算法和用途并对图像均衡化的代码进 行了阅读和修改,这给我产生了很大的印象了解了直方图的概念和均 衡化的原理,收获颇多。
