- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字图像处理实验
实验一 直方图处理
实验目的
理解图像直方图的概念,掌握图像直方图的绘制方法
掌握直方图均衡化的原理,并会用直方图均衡化对图像进行处理。
实验要求
1.读入图像,可使用imread。
2.输出图像,可使用imshow。
3.绘制图像pout.tif的归一化的直方图,可使用IPT函数imhist。
4.对图像进行直方图均衡化,可使用IPT函数histeq,对均衡化前后的图像以及直方图进行对比。
实验原理
一幅数字图像在范围[0, G]内共有L个灰度等级,其直方图定义为离散函数
其中rk是区间[0, G]内的第k级亮度,nk是灰度级为rk的图像中的像素数。
通常,我们会用到归一化直方图,即使所用所有元素h(rk)除以图像中的像素总数n所得到的图形:
其中k=1,2,…,L。
Matlab中提供了IPT函数imhist来绘制图像的直方图,但是除此之外绘制直方图的方法还有很多,可以通过条形图、杆状图等方式来表示直方图。
直方图均衡化主要用于增强动态范围偏小的图像的反差。该方法的基本思想是把原始的直方图变换为均匀分布的形状,这样就增加了像素灰度值的动态范围,从而达到增强图像整体对比度的效果。
直方图均衡化一般采用原始图的累计分布函数作为变换函数。假设灰度级归一化至范围[0, 1]内,pr(r)表示给定图像中的灰度级的概率密度函数,对于离散的灰度级,均衡化变换为:
式中k=1,2,…,L,sk是输出图像中的亮度值,它对应于出入图像中的亮度值rk。
实验心得:
1. matlab的函数的功能很强大,一个简单的函数调用就可以解决复杂的问题。这样,就需要在函数调用时注意函数的参数,否则很容易出错。比如函数 histeq(a,n),就要注意其中的n为灰度值的个数。
2. 对于自己编写函数实现某些特定的功能时,需要对原理掌握清楚,如实验二中需自己编写函数实现图像的均衡,就要求对直方图的均衡原理掌握到位。
3. 使用读图像函数imread()时需注意该程序的物理路径和函数参数,即图像的物理路径需要保持一致。
4. 在代码中定义某些参数,可以扩大代码的使用范围,提高代码的灵活性。例如,程序二中定义行,列和像素,则可以稍微修改参数的初始值,就可对不同行,列和像素的图像进行直方图均衡。
实验代码:
1. 实验一代码:
%读入位于D盘\image\tuxiang的lena图像
A=imread(D:\image\tuxiang\lena.bmp);
%将读入的彩色图像转化为灰度图像
a=rgb2gray(A);
%对图像进行直方图均衡化
b=histeq(a,256);
%绘制均衡化前后的图像及其直方图
subplot(2,2,1);
imshow(a);
title(原始图像);
subplot(2,2,2);
imhist(a);
title(原始图像归一化直方图);
subplot(2,2,3);
imshow(b);
title(均衡化后的图像);
subplot(2,2,4);
imhist(b);
title(均衡化后图像的归一化直方图);
2. 实验一代码:
%读入位于D盘\image\tuxiang的lena图像
A=imread(D:\image\tuxiang\lena.bmp);
%将读入的彩色图像转化为灰度图像
a=rgb2gray(A);
row=512;%图像每列的像素点
col=512;%图像每行的像素点
n=255;%灰度个数
y=zeros(1,n+1);
z=zeros(1,n+1);
f=zeros(1,n+1);
%统计图像中每个灰度的像素点个数
for i=0:n
k=0;
for r=1:row
for c=1:col
if(a(r,c)==i)
k=k+1;
end
end
end
y(i+1)=k;
end
%映射函数
for p=1:n+1
for q=1:p
f(p)=f(p)+y(q);
end
f(p)=f(p)*n/(row*col);
end
%利用映射函数对图像实现均衡化
for s=1:row
for t=1:col
b(s,t)=f(a(s,t)+1);
end
end
%统计均衡化后的图像的每个灰度的像素点个数
for j=0:n
h=0;
for r=1:row
for c=1:col
if(b(r,c)==j)
原创力文档


文档评论(0)