实验2图像增强共20页.docx
- 文档编号:28672382
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:18
- 大小:16.78MB
实验2图像增强共20页.docx
《实验2图像增强共20页.docx》由会员分享,可在线阅读,更多相关《实验2图像增强共20页.docx(18页珍藏版)》请在冰豆网上搜索。
实验2图像增强共20页
实验(shíyàn)二图像增强
实验(shíyàn)目的:
1.熟悉(shúxī)亮度变换(biànhuàn)函数imadjust的原理和使用;
2.理解直方图均衡化的基本原理,熟练掌握直方图显示函数imhist、均衡化和规定化函数histeq;
3.熟悉平滑滤波原理及实现;
4.练习自己写函数。
实验内容:
1、编写一个m文件,完成以下功能:
输入参数:
文件名
处理:
(1)计算图像灰度的最大、最小值和平均值。
(2)将图像做反色变换,并画出变换函数的映射图;
输出:
将每次处理的结果显示出来
自编m文件:
a=input('请输入图像文件名:
');
figure
b=importdata(a);
imshow(b);
ifisrgb(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,[01],[10]);
figure(3)
imshow(c);
figure;
imhist(c);
figure;
plot(b,c);
max=
58
min=
0
ave=
31.7112
2、分析(fēnxī)图片chest.tif的特点(tèdiǎn)和显示效果不好的原因,然后(ránhòu)用imadjust函数(hánshù)对图片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,[00.8],[01],0.65);
figure,imshow(m);
figure,imhist(m);
m=imadjust(im,[00.24],[01],1);
自编m文件(wénjiàn):
function[a]=im2adjust(f)
[m,n]=size(f);
a=zeros(m,n);
max=f(1,1);
fori=1:
m
forj=1:
n
iff(i,j)>max
max=f(i,j);
end
end
end
min=f(1,1);
fori=1:
m
forj=1:
n
iff(i,j) min=f(i,j) end end end fori=1: m forj=1: n a(i,j)=((255-0)/(max-min))*f(i,j); end end a=uint8(a); figure;imshow(a); figure;imhist(a); 运行(yùnxíng)结果(jiēguǒ): im=imread('chest.tif'); >>im2adjust(im); 3、分别用不同的方式显示(xiǎnshì)图片pollen和moon的直方图,并对其进行均衡化。 将得到的结果图片和原图片比较(bǐjiào),效果如何? 为什么对不同的图片进行均衡化会有如此差别? 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); 均衡化之后,第一幅图对比度增强,图像的细节更加清楚;第二幅图因为(yīnwèi)原图像大量接近于0的灰度值映射到高灰度值的区域,所以过于明亮,外观(wàiguān)被冲淡,处理效果不佳。 4、自己写一个m文件,完成histeq2函数的功能,输入为图片和进行均衡化的低值和高值,如(f,min,max),输出为均衡化后的图片。 (注意: 系统函数histeq是对0-255的范围(fànwéi)进行均衡化,我要求是min,max间的灰度值进行均衡化) 自编m文件(wénjiàn): 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); fori=1: n forj=1: m iff(i,j)>=min&&f(i,j)<=max r(f(i,j)+1)=r(f(i,j)+1)+1;%计算(jìsuàn)灰度值的个数 end end end r=r./(n*m);%计算(jìsuàn)各个灰度值占得比例 fork=1: 256 forj=1: k y(k)=y(k)+r(j); end end%计算(jìsuàn)【min,max】范围(fànwéi)的频率累加 fork=1: 256 y(k)=floor(255*y(k)+0.5);%floor(x): 不超过(chāoguò)x的最大整数(zhěngshù);round(x)四舍五入(sìshěwǔrù)取整 end fori=1: n forj=1: m g(i,j)=y(f(i,j)+1); end end f=uint8(f);%为什么不将F转为uint8类型(lèixíng),就不能正确输出? g=uint8(g); subplot(221);imshow(f);subplot(222);imhist(f); subplot(223);imshow(g);subplot(224);imhist(g); %在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8 %型变成double型。 如果直接运行imshow(I),我们会发现显示的是一个白色的图像。 %这是因为double型是在0~1范围内,即大于1时都是显示为白色, %而imshow显示uint8型时是0~255范围。 %而经过运算的范围在0-255之间的double型数据就被不正常得显示为白色图像了。 运行(yùnxíng)结果: >>i=imread('pollen.tif'); histeq2(i,10,100); 5、对图片(túpiàn)cktboard进行(jìnxíng)平滑(pínghuá)滤波,分别采用线性的均值滤波函数imfilter和非线性的中值滤波函数medfilt2滤波,两种滤波的掩模都分别尝试定义为3*3和5*5(掩模w可以自己写,也可以用fspecial生成)。 (1)根据经验判断,原图片上的噪声是什么噪声? (2)由得到的图片结果,分析哪种滤波对这种噪声处理的效果比较好,为什么? (3)编写m文件实现对输入图片的5*5中值滤波。 输入: 图片信息矩阵 输出: 将输入图片用5*5模板进行中值滤波,输出结果矩阵 (1)椒盐噪声 a=imread('cktboard.tif'); w=fspecial('average',3); g=imfilter(a,w); k=medfilt2(a,[55]); figure; subplot(121);imshow(a); subplot(122);imshow(g); figure; subplot(121);imshow(a); subplot(122);imshow(k); (2)中值滤波(lǜbō),取了领域(lǐnɡyù)灰度的中间值,是选择适当的点来替代(tìdài)污染点的值,所以处理效果好。 (3)function[g]=medfilt(f,A) [row,col]=size(f); g=zeros(row,col); [m,n]=size(A);%返回模板(múbǎn)的行和列分别存于m,n中。 l=floor(m/2);%模板的半长 w=floor(n/2);%模板的半高 image=zeros(row+2*l,col+2*w); %将矩阵扩充(kuòchōng)2edgeLength行,2edgewidth列,填充元素为0,并存于image中 fori=1: row forj=1: col image(i+l,j+w)=f(i,j);%初始化image,将图像(túxiànɡ)f的灰度值填入,其余的为0 end end fori=1+l: row+l forj=1+w: col+w mask=image(i-l: i+l,j-w: j+w); %在扩充的矩阵中以image(i,j)为中心取与模块A大小(dàxiǎo)相同的矩阵 p=sort(mask(: ),1);%将掩模中的灰度值从小到大排序(páixù) g(i-l,j-w)=p(floor(m*n/2)+1);%取掩模中的中值 end end g=uint8(g);%如果这里不转化为uint8,则图像就只有黑和白 imshow(f);figure,imshow(g); 运行(yùnxíng)结果(jiēguǒ): >>a=imread('cktboard.tif'); medfilt(a,[33]); medfilt(a,[55]); 内容摘要 (1)实验二图像增强 实验目的: 熟悉亮度变换函数imadjust的原理和使用 (2)figure(3) imshow(c) (3)fori=1: m forj=1: n iff(i,j) min=f(i,j) end end end fori=1: m forj=1: n a(i,j)=((255-0)/(max-min))*f(i,j) (4)subplot(2,2,1) (5)subplot(2,2,2) (6)subplot(2,2,3) (7)subplot(2,2,4) (8)g=zeros(size(f))
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 图像 增强 20