实验一 Matlab图像处理基础一、实验目的1.了解Matlab的基本功能及操作方法2.练习图像读写和显示函数的使用方法3.掌握Matlab支持的五类图像的显示方法(灰度、索引、黑白、彩色等)4.熟悉常用的图像文件格式与格式转换;二、实验内容1. 图像的读写A)图像读RGB = imread('ngc6543a.jpg');imshow(RGB);B)图像写先从一个.mat 文件中载入一幅图像,然后利用图像写函数imwrite,创建一个.bmp文件,并将图像存入其中。
load clown;whos;imwrite(X,map,'clown.bmp');imshow('clown.bmp');C)图像文件格式转换bitmap = imread('clown.bmp','bmp'); imwrite(bitmap,'clown.png','png'); imshow('clown.png');转换前clown.bmp图像如下:转换后.png格式的图像如下:D)图像综合操作利用matlab提供的函数将图像读入;编写程序实现对给定图像进行一定比例的放大和缩小处理,在Mfile编辑器中写入以下程序,全速执行:I=imread('lena.tif'); %读入图像J = imresize(I,10); %放大10倍K = imresize(I,0.1); %缩小10倍L=imrotate(I,-10,'bilinear','crop'); %逆时针旋转10°subplot(2,2,1),imshow(I),title('原图'); %原图subplot(2,2,2),imshow(J),title('放大10'); %放大10倍subplot(2,2,3),imshow(K),title('缩小0.1'); %缩小10倍subplot(2,2,4),imshow(L),title('逆时针旋转10°'); %逆时针转10°图像处理结果如下:2. 图像显示E)二进制图像的显示BW1=zeros(20,20); %创建仅包含0/1的双精度图像BW1(2:2:18,2:2:18)=1;imshow(BW1,'notruesize');BW1图像显示如下:whosBW2=uint8(BW1);figure,imshow(BW2,'notruesize');BW2图像显示如下:BW3=BW2~=0; %逻辑标志置为on figure,imshow(BW3,'notruesize')BW3图像显示如下:whosBW=imread('circles.png');imshow(BW);BW图像显示如下:figure,imshow(~BW);BW图像取反显示如下:figure,imshow(BW,[1 0 0;0 0 1]); BW图像以特定颜色显示如下:F)灰度图像的显示I=imread('testpat1.tif');J=filter2([1 2;-1 -2],I);imshow(I)figure,imshow(J,[])图像I显示如下:图像J显示如下:G)索引图像的显示load clown %装载一幅图像imwrite(X,map,'clown.bmp'); %保存为bmp文件imshow(X)imshow(X,map)H)RGB图像的显示I=imread('flowers.tif'); imshow(I)图像I显示如下:RGB=imread('ngc6543a.jpg');figure,imshow(RGB)图像RGB显示如下:imshow(I(:,:,3)) % 显示第3个颜色分量图像I的第3个分量显示如下:I)多帧图像的显示mri=uint8(zeros(128,128,1,27)); % 27帧文件mri.tif初始化for frame=1:27[mri(:,:,:,frame),map]=imread('mri.tif',frame); % 读入每一帧endimshow(mri(:,:,:,3),map); % 显示第3帧figure,imshow(mri(:,:,:,6),map); % 显示第6帧figure,imshow(mri(:,:,:,10),map); % 显示第10帧figure,imshow(mri(:,:,:,20),map); % 显示第20帧J)显示多幅图像[X1,map1]=imread('forest.tif');[X2,map2]=imread('trees.tif');subplot(1,2,1),imshow(X1,map1);subplot(1,2,2),imshow(X2,map2)subplot(1,2,1),subimage(X1,map1)subplot(1,2,2),subimage(X2,map2)三、思考题1.简述MatLab软件的特点。
1)可扩展性:Matlab最重要的特点是易于扩展,它允许用户自行建立指定功能的M文件。
对于一个从事特定领域的工程师来说,不仅可利用Matlab所提供的函数及基本工具箱函数,还可方便地构造出专用的函数,从而大大扩展了其应用范围。
2)高效性:Matlab语句功能十分强大,一条语句可完成十分复杂的任务。
它大大加快了工程技术人员从事软件开发的效率。
据MathWorks公司声称,Matlab软件中所包含的Matlab源代码相当于70万行C代码。
3)易学易用性:Matlab不需要用户有高深的数学知识和程序设计能力,不需要用户深刻了解算法及编程技巧。
2.MatLab软件可以支持哪些图像文件格式?GIF、BMP、TIFF、PCX、JPG、PSD。
3.如何显示多帧图像的所有帧?如何根据多帧图像创建电影片段?imshow(X(:,:,:,3),map)的形式显示所有帧,montage在矩形框中同时显示多幅图像。
immovie 创建多帧索引图的电影动画。
4.图像显示时,若不带参数’notruesize’,显示效果如何?显示时按图片实际大小显示图片,窗口会自动调节大小去适应图片尺寸。
5.如何显示RGB图像的某一个颜色分量?imshow(X(;,;,i),map)的形式显示某一个颜色分量。
实验二图像运算一、实验目的1.熟悉图像点运算和代数运算的实现方法2.了解图像几何运算的简单应用3.了解图像的邻域操作二、实验内容1. 图像点运算读入图像‘rice.png’,通过图像点运算改变对比度。
rice=imread('rice.png');subplot(131),imshow(rice)I=double(rice); %转换为双精度类型J=I*0.43+60;rice2=uint8(J); %转换为uint8subplot(132),imshow(rice2)J=I*1.5-60;rice3=uint8(J); %转换为uint8subplot(133),imshow(rice3)图像显示如下:2. 图像的代数运算A)图像加法运算I=imread('rice.png');imshow(I)图像I显示如下:J=imread('cameraman.tif');figure,imshow(J);图像J显示如下:K=imadd(I,J);figure,imshow(K)图像相加的结果显示如下:K2=imadd(I,J,'uint16'); figure,imshow(K2,[])RGB=imread('flowers.tif'); RGB2=imadd(RGB,50); imshow(RGB)figure,imshow(RGB2)图像RGB和RGB2显示如下:RGB3=imadd(RGB,100); figure,imshow(RGB3)图像RGB3显示如下:B)图像减法运算I=imread('rice.png');imshow(I)background = imopen(I,strel('disk',15)); %估计背景图像figure, imshow(background);I2=imsubtract(I,background); %从原始图像中减去背景图像figure, imshow(I2)原始图像如下:背景图像如下:相减的图像如下:C)图像乘除法运算I=imread('moon.tif'); J=immultiply(I,1.2); K=immultiply(I,0.5); imshow(I)figure,imshow(J) figure,imshow(K)原始图像如下:乘1.2后的图像如下:乘0.5后的图像如下:。