MATLAB图像增强与平滑.docx
《MATLAB图像增强与平滑.docx》由会员分享,可在线阅读,更多相关《MATLAB图像增强与平滑.docx(14页珍藏版)》请在冰豆网上搜索。
MATLAB图像增强与平滑
实验一图像增强与平滑
一.实验目的及要求
1.了解MATLAB的操作环境和基本功能。
2.掌握MATLAB中图像增强与平滑的函数的使用方法。
3.加深理解图像增强与平滑的算法原理。
二、实验内容
(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1.直方图均衡化
clearall;closeall%CleartheMATLABworkspaceofanyvariables
%andcloseopenfigurewindows.
I=imread('pout.tif');%Readsthesampleimages‘pout.tif’,andstoresitin
imshow(I)%anarraynamedI.displaytheimage
figure,imhist(I)%Createahistogramoftheimageanddisplayitin
%anewfigurewindow.
[I2,T]=histeq(I);%Histogramequalization.
figure,imshow(I2)%Displaythenewequalizedimage,I2,inanewfigurewindow.
figure,imhist(I2)%CreateahistogramoftheequalizedimageI2.
figure,plot((0:
255)/255,T);%plotthetransformationcurve.
imwrite(I2,'pout2.png');%WritethenewlyadjustedimageI2toadiskfilenamed
%‘pout2.png’.
imfinfo('pout2.png')%Checkthecontentsofthenewlywrittenfile
均衡化的结果是使弧度范围变的变广,均衡化后的图象对比度变强。
注意:
imadjust()
功能:
调整图像灰度值或颜色映像表,也可实现伽马校正。
语法:
J=imadjust(I,[low_inhigh_in],[low_outhigh_out],gamma)
newmap=imadjust(map,[low_inhigh_in],[low_outhigh_out],gamma)
RGB2=imadjust(RGB1,...)
2.直接灰度变换
clearall;closeall
I=imread('cameraman.tif');
J=imadjust(I,[00.2],[0.51]);
imshow(I)
figure,imshow(J)
[X,map]=imread('forest.tif');
figure,imshow(X,map)
I2=ind2gray(X,map);
J2=imadjust(I2,[],[],0.5);
figure,imshow(I2)
figure,imshow(J2)
J3=imadjust(I2,[],[],1.5);
figure,imshow(J3)
helpimadjust%Displaytheimadjust()functioninformation.
3.空域平滑滤波(模糊、去噪)
clearall;closeall
I=imread('eight.tif');
h1=ones(3,3)/9;
h2=ones(5,5)/25;
I1=imfilter(I,h1);
I2=imfilter(I,h2);
figure
(1),imshow(I),title('OriginalImage');
figure
(2),imshow(I1),title('FilteredImageWith3*3')
figure(3),imshow(I2),title('FilteredImageWith5*5')
%加入Gaussian噪声
J1=imnoise(I,'gaussian',0,0.005);
%加入椒盐噪声
J2=imnoise(I,'salt&pepper',0.02);
%对J1、J2进行平均值平滑滤波
K1=imfilter(J1,fspecial('average',3));
K2=imfilter(J2,fspecial('average',3));
figure(4);
subplot(2,2,1),imshow(J1),title('gaussian');
subplot(2,2,2),imshow(J2),title('salt&pepper');
subplot(2,2,3),imshow(K1),title('average');
subplot(2,2,4),imshow(K2);
%对J1、J2进行中值滤波
K3=medfilt2(J1,[33]);
K4=medfilt2(J2,[33]);
figure(5);
subplot(2,2,1),imshow(J1),title('gaussian');
subplot(2,2,2),imshow(J2),title('salt&pepper');
subplot(2,2,3),imshow(K3),title('Medianfiltering');
subplot(2,2,4),imshow(K4)
4.空域锐化滤波
clearall;closeall
I=imread('moon.tif');
w=fspecial('laplacian',0.2)
w8=[1,1,1;1,-8,1;1,1,1]
I1=imfilter(I,w,'replicate');
figure
(1);imshow(I),title('OriginalImage');
figure
(2),imshow(I1),title('LaplacianImage');
f=im2double(I);
f1=imfilter(f,w,'replicate');
figure(3),imshow(f1,[]),title('LaplacianImage');
f2=imfilter(f,w8,'replicate');
f4=f-f1;
f8=f-f2;
figure(4),imshow(f4);
figure(5),imshow(f8);
w=0.16670.66670.1667
0.6667-3.33330.6667
0.16670.66670.1667
w8=111
1-81
111
5.图像的伪彩色处理—密度分割
clearall,closeall
I=imread('ngc4024m.tif');
X=grayslice(I,16);
imshow(I),title('OriginalImage')
figure,imshow(X,jet(16)),title('IndexColorImage')
(二)采用MATLAB底层函数编程实现以下灰度线性变换
假定原图像f(x,y)的灰度范围为[a,b],希望变换后图像g(x,y)的灰度范围扩展至[c,d],则线性变换可表示为:
用MATLAB底层函数编程实现上述变换函数。
观察图像‘pout.tif’的灰度直方图,选择合适的参数[a,b]、[c,d]对图像‘pout.tif’进行灰度变换,以获得满意的视觉效果。
三、实验设备
1.PIII以上微机;
2.MATLAB6.5;