概述
本系列文章都是通过自己的学习经验,以及啃文档所写。如需转载,请注明出处
参考文档:Image Processing Toolbox™ 6
User’s Guide
作者:joy
联系方式:joy543@live.com
二、图像的读取和存储
图像处理,主要是对已有的图像进行处理,然后再存储起来,并不是无中生有,创造出一幅图像。因此,图像的读取和存储显得比较重要。
这里创建test.m文件放入已经创建的Matlab文件夹里,之后的操作都在这里进行。由于在文件中操作和Command Window操作的效果一样,所以就不再加入说明。
第一章:一些函数的介绍
-
介绍三个常用函数
clc;clear;closeall;
这三个函数不分家,在一个文件的开头经常会看到。那么他们的作用是什么呢?clc的作用就是清屏幕,即Command Window里的内容会被清除掉,但是他的值仍然存在软件里。 clear是删除所有的变量。比如在前面定义了 A=5;用clear函数之后,A就被清除了。后面想要用,就需要重新定义。close all是将所有打开的图片关掉。在函数的开头写上这样的函数,就保证不会受到之前变量等的影响。
当然,也可以单独使用。这样就能单独完成任务。这时最好在Command Window里操作。
-
typefunction
Matlab 里面有很多内置的函数,当我们想查看函数内容的时候,就可以用type function来实现。比如想要查看mean函数,Matlab到底是怎么实现,直接type mean就可以看到。如果是查看别人的写的程序,在mean上点击右键,open mean就可以了。
-
ver
查看当前Matlab版本的函数。一般用不到。
-
docfunction /help function
可以用来查看函数的用途,语法,用途。可以说Matlab的help本身就是一本百科全书。很多内容都可以找到
第二章读取图像
-
图像的读取
I=imread(‘pout.tif’);
imread是读取图像的函数。pout.tif是matlab内置的图像,不管在什么程序内都可以直接读取。那么,如果我们要读取其他位置的函数怎么做呢?这里我们来说几种常见的情形。
注:Matlab文件夹内有test.m,1.jpg,image文件夹,同时image文件夹内有2.jpg
(1)读取1.jpg
I=imread(‘1.jpg’);
(2)读取2.jpg
I=imread(‘image2.jpg’);%相对路径的读取
(3)读取D:1023251.jpg
I=imread(‘D:1023251.jpg’);%绝对路径的读取
(4)读取D:102325内20个图像。
for i=1:20
I=imread([‘D:102325’,num2str(i),’.jpg’]);
end
注:第四种情况需要注意的是,里面添加了[ ],来保证这是一个整句。num2str(i)是将i由数字转换成字符形式。这样就能实现循环读取。一般来说,会将图像跟.m文件放在一起。当图像较多时,图像放入image文档中,读取方式将(2)和(4)结合起来。利用相对路径来读取,这样当程序和图像同时放在其他电脑上时,不会因为路径而产生问题。
-
图像的显示
-
imshow(I)
-
imtool(I)
-
image(I)
http://blog.sina.com.cn/s/blog_49ea41a20101fndv.html
关于这三个函数用法的区别,就在上面这个文章内。主要的意思是:imshow显示按照原来的比例,而image会改变原来图像的比例。imtool,很少用到。那么用到的时候就再研究吧。一般用imshow就足够了。
那么什么时候用figure呢?当程序中只显示一幅图像时,直接imshow就可以。然后当图像多的时候,就需要用到figuure;imshow(I1);figure;imshow(I2);figure;imshow(I3)
如果想要在一张图片内,显示好几个图怎么办呢?title显示在图像的上方,起到提示的作用。
I=imread('pout.tif');
subplot(221);imshow(I);title('1');
subplot(222);imshow(I);title('2');
subplot(223);imshow(I);title('3');
subplot(224);imshow(I);title('4');
其中前面的22代表是2*2的分布,也可以是2*3,3*4等。按照行来排列,从第一行开始分别为1 2 3 4。如图所示。
这里还值得一提的是figure;如果没有要求的话,直接用figure。此时希望图2来显示某个图像,那么figure(2),就指定来显示某个图像。当然了,如果仅有一个图像显示这样做,那么可能会被覆盖掉,因此,一个程序中的用法一定要统一,并且保证后面的,不要把前面的覆盖掉。
3、查看和分析结果:
在workspace中会有I 291*240 uint8 74 224 ,就这说明了I是二维图像,大小是291*240,uint8型的。最小值为74,最大值是224.这里指的是灰度值。
用函数whos就能显示I的相关信息:
第三章图像的存储
1、图像的存储
imwrite(I,’pout1.jpg’);
同样,imwrite也有相对路径和绝对路径的存储,以及连续的存储方法。同imread
imwrite(I,’pout1.jpg’);
imwrite(I,’imagepout1.jpg’);
imwrite(I,’D:Matlabimagepout1.jpg’);
imwrite(I,[’image’,num2str(i),’.jpg’]);%i是变量,需要定义
这里的.jpg可以改成.bmp等,想要的格式。
需要注明的是,存储所选择的文件夹,需要已经建立好。那么怎么去自动建立文件夹呢?
需要用mkdir函数。
mkdir(‘D:image1’)%绝对路径的建立。
mkdir(‘image1’);%绝对路径文件夹的建立。创建之后,在Matlab文件夹内。
这样就能够节省很多的人力。当文件比较多的情况下,人工去建立的话,还容易出错。
最后附上今天的程序:当图像较多时,读取都主要选择相对路径,以及循环读取。程序较为简单。
clc;clear;closeall;
I=imread('pout.tif');
figure;
subplot(221);imshow(I);title('1');
subplot(222);imshow(I);title('2');
subplot(223);imshow(I);title('3');
subplot(224);imshow(I);title('4');
whos;
mkdir('image')
imwrite(I,'imagepout2.jpg');
最后
以上就是有魅力羽毛为你收集整理的二、Matlab图像的读取和存储的全部内容,希望文章能够帮你解决二、Matlab图像的读取和存储所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复