实验2图像增强
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二图像增强
实验目的:
1.熟悉亮度变换函数imadjust的原理和使用;
2.理解直方图均衡化的基本原理,熟练掌握直方图显示函数
imhist、均衡化和规定化函数histeq;
3.熟悉平滑滤波原理及实现;
4.练习自己写函数。
实验内容:
1、编写一个m文件,完成以下功能:
输入参数:文件名
处理:(1)计算图像灰度的最大、最小值和平均值。
(2)将图像做反色变换,并画出变换函数的映射图;
输出:将每次处理的结果显示出来
自编m文件:
a=input('请输入图像文件名:');
figure
b=importdata(a);
imshow(b);
if isrgb(b)
b=rgb2gray(b);
end
figure(2)
imhist(b);
max=max(max(b))
min=min(min(b))
ave=mean2(b)
%c=255-b;
c=imadjust(b,[0 1],[1 0]); figure(3)
imshow(c);
figure;
imhist(c);
figure;
plot(b,c);
max =
58
min =
ave = 31.7112
2、分析图片chest.tif的特点和显示效果不好的原因,然后用
imadjust函数对图片chest.tif进行线性灰度变换,将其扩展到[0—255]的灰度空间,看看效果如何,并分析其直方图。试着自己编写m文件im2adjust,实现读入一个图片以后自动将其灰
度空间扩展到[0-255]。
输入:图片信息矩阵
输出:将输入图片的灰度范围扩展到【0-255】的结果矩阵
图片chest.tif的特点和显示效果不好的原因:对比度低,灰度值集中在0到60之间,其他区域则没有灰度值,致使图偏暗;
im=imread('chest.tif');
figure,imshow(im);
figure,imhist(im);
m=imadjust(im,[0 0.8],[0 1],0.65);
figure,imshow(m);
figure,imhist(m);
m=imadjust(im,[0 0.24],[0 1],1);
自编m文件:
function [a]=im2adjust(f)
[m,n]=size(f);
a=zeros(m,n);
max=f(1,1);
for i=1:m
for j=1:n
if f(i,j)>max
max=f(i,j);
end
end
end
min=f(1,1);
for i=1:m
for j=1:n
if f(i,j) min=f(i,j) end end end for i=1:m for j=1:n a(i,j)=((255-0)/(max-min))*f(i,j); end end a=uint8(a); figure;imshow(a); figure;imhist(a); 运行结果:im=imread('chest.tif'); >> im2adjust(im); 3、分别用不同的方式显示图片pollen和moon的直方图,并对其 进行均衡化。将得到的结果图片和原图片比较,效果如何?为什么对不同的图片进行均衡化会有如此差别? a=imread('pollen.tif'); figure; b=histeq(a); subplot(2,2,1);imshow(a); subplot(2,2,2);imhist(a); subplot(2,2,3);imshow(b); subplot(2,2,4);imhist(b); c=imread('moon.tif'); figure; d=histeq(c); subplot(2,2,1);subimage(c); subplot(2,2,2);imhist(c); subplot(2,2,3);imshow(d); subplot(2,2,4);imhist(d); 均衡化之后,第一幅图对比度增强,图像的细节更加清楚;第二幅图因为原图像大量接近于0的灰度值映射到高灰度值的区域,所以过于明亮,外观被冲淡,处理效果不佳。 4、 自己写一个m 文件,完成histeq2函数的功能,输入为图片和 进行均衡化的低值和高值,如(f,min,max),输出为均衡化后的图片。(注意:系统函数histeq 是对0-255的范围进行均衡化,我要求是min,max 间的灰度值进行均衡化) 自编m文件: function [g]=histeq2(f,min,max) [n,m]=size(f); g=zeros(size(f)); f=double(f); r=zeros(1,256); y=zeros(1,256); for i=1:n for j=1:m if f(i,j)>=min && f(i,j)<=max r(f(i,j)+1)=r(f(i,j)+1)+1; %计算灰度值的个数end end end r=r./(n*m); %计算各个灰度值占得比例 for k=1:256 for j=1:k y(k)=y(k)+r(j);