《像处理与动画制作》由会员分享,可在线阅读,更多相关《像处理与动画制作(17页珍藏版)》请在金锄头文库上搜索。
1、MATLAB 像处理和动画制作,简述 像处理工具箱简述 像处理 代数运算 几何运算 像分析 动画制作 单幅多帧像动画制作 多幅逐帧像动画制作 多幅逐帧像制作GIF,2/16,一、像处理工具箱简述,像处理工具箱以数字像处理理论为基础,用MATLAB语言构造出一系列用于像数据显式与处理的函数。它可以实现:代数运算;几何运算(缩放、剪裁等);分析操作(边缘检测、四叉树分解等);增强操作(亮度、直方均衡、消噪);像变换(离散余弦、傅里叶);领域处理;形态学处理;彩像处理等。像格式指的是存储像文件采用的格式,有BMP、TIFF、JPEG、GIF、PCX、PSD、WMF等。像类型是指数组数值与像素颜之间定
2、义的关系,它与像格式概念有所不同,MATLAB像工具箱一般有二值像、索引像、灰度像、RGB像。,3/16,二、像处理,1、像代数运算 (1)加法: 函数调用格式:Z=imadd(X,Y) 实现:像+像,像+常数 例:加法运算 I=imread(rice.png); K=imread(cameraman.tif); J=imadd(I,80); M=imadd(I,K); subplot(231); imshow(I); title(原); subplot(232); imshow(J); title(加标量); subplot(234); imshow(I); title(原1); subpl
3、ot(235); imshow(K); title(原2); subplot(236); imshow(M); title(相加);,4/16,(2)减法: 检测像变化及运动物体,作为许多像处理工作的准备步骤。 函数调用格式: Z = imsubtract(X,Y) 实现:像-像,像-常数 Z=imsubtract(a,b)%差值结果小于0的赋值为0,a和b大小相等 Z=imabsdiff(a,b)%差值结果取绝对值 例1:函数imsubtract()的应用 I=imread(1.tif); K=imread(2.tif); J=imsubtract(K,I); subplot(131); i
4、mshow(I); title(原1); subplot(132); imshow(K); title(原2); subplot(133); imshow(J); title(相减);,5/16,例2:函数imabsdiff()的应用 I=imread(rice.png); K=imread(cameraman.tif); J=imsubtract(I,K); subplot(231); imshow(I); title(原1); subplot(232); imshow(K); title(原2); subplot(233); imshow(J); title(相减); J=imabsdif
5、f(I,K); subplot(234); imshow(I); title(原1); subplot(235); imshow(K); title(原2); subplot(236); imshow(J); title(相减);,6/16,2.像几何运算 (1)旋转: 像旋转函数imrotate调用格式: B = imrotate(A,angle,method) 例:像旋转 a=imread(lena.bmp); a1=imrotate(a,-30); a2=imrotate(a,-45,bicubic); a3=imrotate(a,-60,bilinear); subplot(141);
6、 imshow(a); subplot(142); imshow(a1); subplot(143); imshow(a2); subplot(144); imshow(a3);,9/16,(2)裁剪: 像裁剪函数imcrop调用格式: I=imcrop(X,rect) 例:像裁剪 a=imread(lena.bmp); a1=imcrop(a,100 100 300 200); subplot(221); imshow(a); subplot(222); imshow(a1); subplot(223); imshow lena.bmp I=imcrop; subplot(224); ims
7、how(I);,10/16,3、像分析,(1)直方均衡化 灰度直方是灰度级的函数,它表示像中具有某种灰度级的像素的个数,反映了像中某种灰度出现的频率。直方均衡化处理是把原始像的灰度直方从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。对像进行非线性拉伸,重新分配像像素值,使一定灰度范围内的像素数量大致相同,把给定像的直方分布改变成“均匀”分布直方分布。 例:直方均衡化处理 I=imread(pout.tif); J=histeq(I);%均衡 subplot(221) imshow(I) title(原) subplot(222) imshow(J) title(均衡化) subplot
8、(223) imhist(I) title(原直方) subplot(224) imhist(J) title(均衡直方),11/16,(2)像平滑 像平滑的主要目的是减少像噪声。像噪声来自于多方面,有来自于系统外部的干扰(如电磁波或经电源窜进系统内部的外部噪声),也有来自于系统内部的干扰(如摄像机的热噪声,电器机械运动而产生的抖动噪声内部噪声)。实际获得的像都因受到干扰而有噪声,噪声产生的原因决定了噪声分布的特性及与像信号的关系。减少噪声的方法可以在空间域或在频率域处理。在空间域中进行时,基本方法就是求像素的平均值或中值;在频域中则运用低通滤波技术。 例:像平滑处理 I=imread(eig
9、ht.tif); J=imnoise(I,salt subplot(334),imshow(I),title(原) subplot(335),imshow(J),title(加噪) subplot(333),imshow(L),title(中值滤波) subplot(339),imshow(uint8(M),title(邻域平均),12/16,(3)像锐化 数字像处理中像锐化的目的有两个:一是增强像的边缘,使模糊的像变得清晰起来;这种模糊不是由于错误操作,就是特殊像获取方法的固有影响。二是提取目标物体的边界,对像进行分割,便于目标区域的识别等。通过像的锐化,使得像的质量有所改变,产生更适合人观
10、察和识别的像。 例:像锐化处理 I=imread(lena.bmp); h1=0 -1 0;-1 5 -1;0 -1 0; h2=-1 -1 -1;-1 9 -1;-1 -1 -1; a1=imfilter(I,h1); a2=imfilter(I,h2); subplot(131); imshow(I); title(原); subplot(132); imshow(a1); title(四邻域); subplot(133); imshow(a2); title(八邻域);,13/16,三、动画制作,1、单幅多帧像阵列制作动画多帧像是一个包含多个像的像文件。MATLAB支持的多帧像文件格式有
11、HDF和TIFF两种。文件一旦被读入MATLAB中,多帧像的显示帧数由第四维数值决定。调用montage函数可实现多帧像显示。 语法: montage(D,map) 例: mri = uint8(zeros(128,128,1,27);%定义一个4维矩阵,用来存储27幅核磁共振像 for frame=1:27%循环读出多帧像中的每一幅像 R(:,:,:,frame),map = imread(mri.tif,frame); end montage(R,map);%多帧显示 mov=immovie(R,map); implay(mov,3)%3帧/秒,14/16,2、多幅逐帧像制作动画,多幅逐帧
12、像制作动画,是将多幅像类型相同的静帧像连接起来以动画的形式输出例: pic=dir(C:UsersComputerDesktop新建文件夹 (3)*.tif); %取文件的数量:num a=size(pic); num=a(1); for i=1:num im(:,:,:,i)=imread(strcat(num2str(i),.tif); imshow(im(:,:,:,i) M(i) = getframe; pause(0.2) end movie2avi(M,move.avi,FPS,3)% 3帧/秒,15/16,3、多幅逐帧像制作GIF动画,filename= Fgif.gif; %你
13、的gif文件的名字 for i=1:15str=sprintf(新建文件夹 (4)%d.png,i);Img=imread(str);figure(i);imshow(Img);frame=getframe(i);im=frame2im(frame);%制作gif文件,像必须是index索引像I,map=rgb2ind(im,256);k=i-0;if k=1;imwrite(I,map,filename,gif,Loopcount,inf,DelayTime,0.1); %无限循环else imwrite(I,map,filename,gif,WriteMode,append,DelayTime,0.1);end end,16/16,谢谢 THANK YOU,