1、1其他常用的图像转换函数有:gray2ind函数,将灰度图像转换成索引图像。Im2bw函数,将其它图像转化为二值图像。Ind2gray函数,将索引图像转换成灰度图像。Rgb2gray函数,将彩色图像转换成灰度图像。1利用imread( )函数读取一幅图像,存入一个数组中;2利用whos 命令提取该读入图像flower.tif的基本信息;3利用imshow()函数来显示这幅图像;函数执行语句A = imread(saturn.png);whosName Size Bytes Class AttributesA 1500x1200x3 5400000 uint8 imshow(A)4利用imfin
2、fo函数来获取图像文件的压缩,颜色等等其他的详细信息;imfinfo(saturn.png)5利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg 文件,设为flower.jpg;语法:imwrite(原图像,新图像,quality,q), q取0-100。imwrite(A,xingxing.jpg,quality,25)B = imread(xingxing.jpg);6同样利用imwrite()函数将最初读入的 tif图象另存为一幅 bmp图像,设为flower.bmp。imwrite(A , xingxing.bmp)C = imread(xingxing.bmp
3、);7用im2bw将一幅灰度图像转化为二值图像,并且用 imshow显示出来观察图像的特征。F = imread(circbw.tif);im2bw(F)imshow(F)2实验二 图像直方图与灰度变换下面给出灰度变化的MATLAB程序f=imread(medicine_pic.jpg);g=imhist(f,256); %显示其直方图g1=imadjust(f,0 1,1 0);%灰度转换,实现明暗转换(负片图像)figure,imshow(g1)g2=imadjust(f,0.5 0.75,0 1);%将0.5 到0.75的灰度级扩展到范围 0 1figure,imshow(g2)g=im
4、read(point.jpg);h=log(1+double(g);%对输入图像对数映射变换h=mat2gray(h); %将矩阵h转换为灰度图片h=im2uint8(h); %将灰度图转换为8位图figure,imshow(h)下面给出直方图均衡化增强图像对比度的MATLAB 程序:I=imread(pollen.jpg); % 读入原图像J=histeq(I); %对原图像进行直方图均衡化处理Imshow(I); %显示原图像Title(原图像 ); %给原图像加标题名Figure;imshow(J); %显示直方图均衡化后的图像Title(直方图均衡化后的图像) ; %给直方图均衡化后的
5、图像加标题名Figure; subplot(1,2,1) ;%对直方图均衡化后的图像进行屏幕控制;作一幅3子图 作为并排两幅图的第1 幅图Imhist(I,64); %将原图像直方图显示为64级灰度Title(原图像直方图 ) ; %给原图像直方图加标题名Subplot(1,2,2); %作第2幅子图Imhist(J,64) ; %将均衡化后图像的直方图显示为64级灰度Title(均衡变换后的直方图) ; %给均衡化后图像直方图加标题名1、利用自己编写的灰度直方图计算程序计算rice.tif图像的直方图,并与系统自带的计算程序进行对比。A = imread(rice.png);subplot(
6、1,3,1);imshow(A)title(lady-rice);m,n = size(A);e = zeros(1,256);for k = 0:255for i = 1:mfor j = 1:nif A(i,j) = k e(k+1) = e(k+1)+1;endendendend4subplot(1,3,2);bar(e);subplot(1,3,3);imhist(A,256);2进行灰度直方图的均衡化。I=imread(cameraman.tif); J=histeq(I); figure;imshow(I); title(原图像); figure;imshow(J); title(
7、直方图均衡化后的图像);figure;Imhist(J,64);title(均衡变化后的直方图); 3、利用直接灰度变换法对图像进行灰度变换f=imread(rice.png);figure;imshow(f);title(原始图像) ;figure;imhist(f,256);5title(原始图像直方图); f1=imadjust(f,0 1,1 0);%灰度转换,实现明暗转换(负片图像)figure;imshow(f1);title(明暗转换后的图像);figure;imhist(f1,256);title(明暗转换直方图); f2=imadjust(f,0.5 0.75,0 1);%将
8、0.5到0.75 的灰度级扩展到范围0 1figure;imshow(f2); title(0.5到0.75的灰度级扩展到范围 0 1的图像 ); figure;imhist(f2,256);title(灰度级扩展直方图);6实验三 图像的算术运算与空间域增强使用与图像算数运算的MATLAB程序f1=imread(picture.jpg);%读入图像1f2=imread(picture1.jpg);%读入图像2I=imsubtract(f1,f2);%两幅图像相减,结果得出两幅图像的不同之处figure,imshow(I)利用MATLAB软件实现空域滤波的程序:I=imread(electri
9、c.tif);J = imnoise(I,gauss,0.02); %添加高斯噪声%J = imnoise(I,salt %添加椒盐噪声 ave1=fspecial(average,3); %产生33的均值模版ave2=fspecial(average,5); %产生55的均值模版K = filter2(ave1,J)/255; %均值滤波33L = filter2(ave2,J)/255; %均值滤波55M = medfilt2(J,3 3); %中值滤波33模板N = medfilt2(J,5 5); %中值滤波55模板imshow(I);figure,imshow(J);figure,i
10、mshow(K);figure,imshow(L);7figure,imshow(M);figure,imshow(N);1. 调入并显示摄像头生成的二幅的图像。obj = videoinput(winvideo,1,YUY2_640x480);% 创建视频输入对象preview(obj);%打开视频预览窗口frame1 = getsnapshot(obj);% 获取视频的一帧(注该帧并不是RGB格式)figure,imshow(frame1);%显示获取的那帧图像frame=ycbcr2rgb(frame1);%图像格式转换figure,imshow(frame);% 显示图像imwrite
11、(frame,1.jpg,jpg); frame1 = getsnapshot(obj);figure,imshow(frame1);frame=ycbcr2rgb(frame1);figure,imshow(frame);imwrite(frame,2.jpg,jpg); 2. 考虑使用适当的图像算术运算方法,找出二幅图像中不同的地方及其所处的位置;f1=imread(1.jpg);f2=imread(2.jpg);I=imsubtract(f1,f2);figure,imshow(I)3. 显示/记录处理结果并做出报告。a) 调入并显示原始图像Sample2-1.jpg 。A = imre
12、ad(huangs.jpg);C = rgb2gray(A);figure,imshow(C);b) 利用imnoise 命令在图像Sample2-1.jpg 上加入高斯(gaussian) 噪声 8B = imnoise(C,gauss,0.1);figure,imshow(B);title(加噪后);c)利用预定义函数fspecial 命令产生平均(average)滤波器 19d = (1/17).*1 1 1; 1 9 1; 1 1 1;Y = filter2(d,B)/255;figure,imshow(Y,);title(均值去噪后);d)采用3x3的模板,分别用平均滤波器以及中值滤
13、波器,对加入噪声的图像进行处理并观察不同噪声水平下,上述滤波器处理的结果; M = medfilt2(B,3,3);figure,imshow(M);title(中值去噪后); %中值滤波33模板e)选择不同大小的模板,对加入某一固定噪声水平噪声的图像进行处理,观察上述滤波器处理的结果。ave2=fspecial(average,5); %产生5 5的均值模版L = filter2(ave2,B)/255; %均值滤波55;%Y = filter2(d,B)/255;figure,imshow(L,);M = medfilt2(B,5,5);figure,imshow(M);title(中值去
14、噪后); % 中值滤波5*5模板f)利用imnoise 命令在图像Sample2-1.jpg 上加入椒盐噪声(salt C = rgb2gray(A);subplot(3 ,2 ,1);imshow(C);B = imnoise(C,salt subplot(3 ,2 ,2);imshow(B);title(加噪后);d = fspecial(average,3);M = medfilt2(B,3,3);subplot(3 ,2 ,3);imshow(M);title(中值去噪后3,3);N = medfilt2(B,5,5);subplot(3 ,2 ,4);imshow(N);title(
15、中值去噪后5,5);Y = filter2(d,B)/255;subplot(3 ,2 ,5);imshow(Y,);title(均值去噪后3,3);ave2=fspecial(average,5); %产生5 5的均值模版L = filter2(ave2,B)/255; %均值滤波55;subplot(3 ,2 ,6);imshow(L,);title(均值去噪后5,5);10实验四 图像的傅立叶变换与频域滤波利用MATLAB软件实现数字图像傅立叶变换的程序:I=imread(原图像名 .gif); %读入原图像文件imshow(I); %显示原图像fftI=fft2(I); %二维离散傅立
16、叶变换sfftI=fftshift(fftI); %直流分量移到频谱中心RR=real(sfftI); %取傅立叶变换的实部II=imag(sfftI); %取傅立叶变换的虚部A=sqrt(RR.2+II.2);%计算频谱幅值A=(A-min(min(A) )/(max(max(A)-min(min(A)*225;%归一化figure; %设定窗口imshow(A); %显示原图像的频谱利用MATLAB实现频域滤波的程序f=imread(room.tif);F=fft2(f); %对图像进行傅立叶变换S=fftshift(log(1+abs(F);%对变换后图像进行队数变化,并对其坐标平移,使
17、其中心化S=gscale(S); %将频谱图像标度在0-256 的范围内11imshow(S) %显示频谱图像h=special(sobel); %产生空间sobel模版freqz2(h) %查看相应频域滤波器的图像PQ=paddedsize(size(f);%产生滤波时所需大小的矩阵H=freqz2(h,PQ(1),PQ(2);%产生频域中的sobel滤波器H1=ifftshift(H); %重排数据序列,使得原点位于频率矩阵的左上角imshow(abs(H),) %以图形形式显示滤波器figure,imshow(abs(H1),)gs=imfilter(double(f),h); %用模版
18、h进行空域滤波gf=dftfilt(f,H1); %用滤波器对图像进行频域滤波figure,imshow(gs,) figure,imshow(gf,)figure,imshow(abs(gs),)figure,imshow(abs(gf),)f=imread(number.tif);%读取图片PQ=paddedsize(size(f);%产生滤波时所需大小的矩阵D0=0.05*PQ(1); %设定高斯高通滤波器的阈值H=hpfilter(gaussian,PQ(1),PQ(2),D0);%产生高斯高通滤波器g=dftfilt(f,H); %对图像进行滤波figure,imshow(f) %显
19、示原图像figure,imshow(g,) %显示滤波后图像一、 实验步骤121 生成如下图所示的一个二维矩形信号。H = zeros(256,256);H(63:192,63:192) = 1;figure;imshow(H);title(lvboqi);lvboqi2 利用一维FFT计算二维付里叶变换。分别显示行计算结果和列变换结果。(立体结果,用mesh(F)显示)I=imread(cameraname.bmp); figure;imshow(I); title(原图像);F1 = fft2(I);C1 = ifft2(F1);黑白13figure;imshow(log(1+abs(C1
20、),);title(2滤波后图像 );figure;mesh(C1);F2 = fft(I);F3 = fft(F2);C3 = ifft(F3);C2 = ifft(C3);figure;imshow(log(1+abs(C2),);title(1/1滤波后图像 );figure;mesh(log(1+abs(C2);原图像2滤波后图像 1/1滤波后图像143利用MatLab工具箱中的函数编制FFT 频谱显示的函数;4 a). 调入、显示“ 实验一 ”获得的图像;图像存储格式应为“.gif”;b) 对这三幅图像做FFT并利用自编的函数显示其频谱;c) 讨论不同的图像内容与FFT频谱之间的对应
21、关系。5 利用MATLAB提供的低通滤波器实现图像信号的滤波运算,并与空间滤波进行比较。I=imread(cameraname.bmp); %读入原图像文件figure;imshow(I); %显示原图像title(原图像);M,N = size(I);F = fft2(I);A=fftshift(F); %直流分量移到频谱中心%figure;imshow(A);H = zeros(M,N);H(63:192,63:192) = 1;figure;imshow(H);title(低通滤波器);B = A.*H;C = ifft2(B);15figure;imshow(log(1+abs(C),
22、);title(滤波后);原图像 低通滤波器滤波后6利用MATLAB提供的高通滤波器对图像进行处理。I=imread(cameraname.bmp); figure;imshow(I); %显示原图像title(原图像);J = imnoise(I,gauss,0.02); %添加高斯噪声%J = imnoise(I,salt %添加椒盐噪声 figure;imshow(J); %显示原图像title(噪声图像);16M,N = size(J);A = fft2(J);%figure;imshow(A);H = ones(M,N);H(63:192,63:192) = 0;figure;imshow(H);title(高通滤波器);B = A.*H;C = ifft2(B);figure;imshow(log(1+abs(C),);title(滤波后);原图像 噪声图像高通滤波器 滤波后