MATLAB数字图像处理课程论文.docx

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《数字图像处理》期末大作业暨课程考核报告姓名:钟涛序号:33班级:N电信10-1F学号:24102200147指导老师:吴建辉算法的Matlab实现绘制灰度直方图,实现直方图均衡化和直方图匹配(规定化)算法原理灰度直方图表示数字图像中每一灰度级出现的频率,即该灰度级的像素数与图像的总像素数之比。灰度图像为256级灰度,通过find()函数寻找每一级灰度值的像素的个数并统计,计入行向量中,统计结束后讲统计结果绘制成直方图。算法设计采用MATLAB IPT工具箱函数imhist()便可以求出图像的直方图,调用格式为imhist(I),I为待处理的图像。采用IPT函数histeq()可以对图像进行均衡化以及规定化,调用格式为(1)J = histeq(I, hgram),(2)J = histeq(I, n),其中n = 256时,对图像进行均衡化。hgram为指定的向量时便可对图像进行规定化。MATLAB源程序:Img=imread(E:\Desktop\数字图像-期末大作业\myself.jpg);%读取图像figure(1);imshow(Img);title(原图像像素图),Img=rgb2gray(Img);%绘制直方图[m,n]=size(Img);figure(2);bar(0:255,imhist(Img)/(m*n),b);title(原图像直方图);xlabel(灰度图);ylabel(出现概率);%三,直方图均衡化S1=zeros(1,256);for i=1:256 for j=1:i S1(i)=GP(j)+S1(i); %计算Sk endendS2=round(S1*256); %将Sk归到相近级的灰度for i=1:256 GPeq(i)=sum(GP(find(S2==i))); %计算现有每个灰度级出现的概率endfigure(3);bar(0:255,GPeq,r) %显示均衡化后的直方图title(均衡化后的直方图);xlabel(灰度值);ylabel(出现概率);figure(4);实验结果及对比分析通过结果可以看出,图像的灰度级集中在灰度值较大的区间,这就是图像看上去较明亮的原因。通过均衡后结果可以看出,图像的显示效果得到了明显改善,灰度值不再集中在数值较大的区域,而是均匀分布在整个灰度级区间内。灰度图像的对比度增强算法原理讲图像的亮度值映射到一个新的区间,即将low_in至high_in之间的值映射到low_out到high_out之间的值。算法设计采用IPT工具箱函数imadjust(),可以对图像的亮度对比度进行调整。其调用格式为 g = imadjust(f,[low_in,high_in],[low_out,high_out],gamma).另外,采用对数变化式 g = 1./(1 + (m./(double(f) + eps)).^E)可以对图像的对比度进行变换。MATLAB源程序:Img=imread(E:\pic\08.jpg);%读取图像if length(Img) == 0 % If only one argument it must be f. method = full8;else method = Img{1};endif strcmp(class(f), double) (max(f(:)) 1 | min(f(:)) 0) f = mat2gray(f);end% Perform the specified scaling.switch methodcase full8 g = im2uint8(mat2gray(double(f)));case full16 g = im2uint16(mat2gray(double(f)));case minmax low = Img{2}; high = Img{3}; if low 1 | low 0 | high 1 | high 0 error(Parameters low and high must be in the range [0, 1].) end if strcmp(class(f), double) low_in = min(f(:)); high_in = max(f(:)); elseif strcmp(class(f), uint8) low_in = double(min(f(:)))./255; high_in = double(max(f(:)))./255; elseif strcmp(class(f), uint16) low_in

文档评论(0)

xingyuxiaxiang + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档