Matlab中如何读出写入图像文件以及对图像的简单处理

合集下载

matlab imread函数用法

matlab imread函数用法

matlab imread函数用法Matlab的IMREAD函数是用来读取图像的函数,它可以轻松地从指定的文件读取图像,使得可以使用Matlab自带的函数来处理图像。

IMREAD函数可以用于读取标准格式的图像,如JPEG、TIFF和PNG,以及自定义格式的图像,如GIF文件、PCX文件等。

一、语法格式IMREAD函数的语法格式如下:A = imread(filename)[A,MAP] = imread(filename)其中,A是读取的图片的数组,MAP是颜色表,filename是图片文件的名称,既可以是图像数据文件的全路径,也可以是相对路径,也可以是Matlab搜索路径中可搜索到的文件(通过which或者addpath 命令框)。

二、参数选项IMREAD也具有可选参数,改变返回值类型,如下:A = imread(filename,'Type')其中,Type可以取:“tif”、“png”、“jpg”,可以指明图像类型,比如要求读取jpg格式的图片,就可以输入:A = imread(filename,'jpg')三、返回值IMREAD函数的返回值是一个double格式的矩阵,通常称为图片矩阵,里面存放的是图像像素的灰度值,一般是0-255之间的数值,0表示该点是黑色,255表示白色,中间256个数值表示256种灰色。

有了这个灰度矩阵,就可以使用Matlab提供的函数,来对图像进行编辑及处理,如去噪处理、灰度变化等操作。

四、示例下面给出一个读取一幅jpg格式的图片的例子:A = imread('example.jpg','jpg')这样,就可以得到图片的灰度矩阵A,然后使用Matlab的操作函数来对A进行处理,譬如:imshow(A)。

实验一MATLAB数字图像处理初步

实验一MATLAB数字图像处理初步

实验一MATLAB数字图像处理初步实验一 MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。

2.熟练掌握在MATLAB中如何读取图像。

3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。

4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。

5.图像间如何转化。

二、实验内容及步骤1.利用imread( )函数读取一幅图像,假设其名为flower.tif,存入一个数组中;2.利用whos 命令提取该读入图像flower.tif的基本信息;3.利用imshow()函数来显示这幅图像;4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。

6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp 图像,设为flower.bmp。

7.用imread()读入图像:Lenna.jpg 和camema.jpg;8.用imfinfo()获取图像Lenna.jpg和camema.jpg 的大小;9.用figure,imshow()分别将Lenna.jpg和camema.jpg显示出来,观察两幅图像的质量。

10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow 显示出来观察图像的特征。

11.将每一步的函数执行语句拷贝下来,写入实验报告,并且将得到第3、9、10步得到的图像效果拷贝下来。

三、实验结果四、实验小结1、使用imread指令的时候,后边的地址不经要在括号内,还要注意:必须要有引号。

但是,把文件放在变量中间存储便可以,也一定不可以加引号。

2、whos 后边不需要加括号,只需要加空格就可以。

Matlab关于如何读取文件夹中的所有图片(3种方法)

Matlab关于如何读取文件夹中的所有图片(3种方法)

Matlab关于如何读取⽂件夹中的所有图⽚(3种⽅法) Matlab读取图⽚的⽅法有很多种,我给出的⽅法思想和他们的差不多⼀样,但是代码的风格可能有点区别,可以学习。

⽅法1:⾸先定义⽂件夹的名称:[cpp]1. imgDir='.\coimg\';2. imgDir2='.\\coimg\\%s'; ⽤于读取图⽚具体代码:[cpp]1. oldPwd = pwd;2. cd(imgDir);3. x = dir;4. listOfImages = [];5. for i = 1:length(x),6. if x(i).isdir == 0,7. listOfImages = [listOfImages; x(i)];8. end;9. end;10. cd(oldPwd);11.12. fid=imgDir2;13. for j = 1:length(listOfImages)14. fileName = listOfImages(j).name;15. rfid=sprintf(fid,fileName);16. Irgb=imread(rfid);17. Iset{j}=Irgb;18. end⽂中 x(i).isdir==0 其实意思是跳过i=1,2时,那是isdir==1,其实是为了跳过'.','..',这个应该是操作系统的知识吧。

最后将读取的图⽚放在Iset⾥⾯。

代码很简单。

⾃⼰⼿写,测试成功两幅图⽚在Iset⾥⾯啦。

⼩技巧值得注意。

⽅法2:适合⽂件夹⾥⾯的图⽚批量处理,⾮常好的算法,应该值得学习。

[cpp]1. function database = build_database(rt_data_dir,suffix)2. % This function is to build a database for the image sets3. % Input: rt_data_dir -- direction of image sets4. % suffix -- image format like 'jpg'5. % Output: database -- database that contains all the information of6. % images7.8. % Written by Wei Q9. % July. 16, 201310.11. fprintf('dir the database...');12. subfolders = dir(rt_data_dir);13.14. database = [];15.16. database.imnum = 0; % total image number of the database17. ame = {}; % name of each class18. bel = []; % label of each class19. database.path = {}; % contain the pathes for each image of each class20. database.nclass = 0;21.22. for ii = 1:length(subfolders),23. subname = subfolders(ii).name;24.25. if ~strcmp(subname, '.') & ~strcmp(subname, '..'),26. database.nclass = database.nclass + 1;27.28. ame{database.nclass} = subname;29.30. frames = dir(fullfile(rt_data_dir, subname, suffix));31. c_num = length(frames);32.33. database.imnum = database.imnum + c_num;34. bel = [bel; ones(c_num, 1)*database.nclass];35.36. for jj = 1:c_num,37. c_path = fullfile(rt_data_dir, subname, frames(jj).name);38. database.path = [database.path, c_path];39. end;40. end;41. end;42. disp('done!');应该试着⾃⼰写写。

实验二 Matlab图像处理实验

实验二   Matlab图像处理实验

实验二Matlab图像处理实验一、实验目的1、了解Matlab平台下的图像编程环境;2、读入、显示、检查内存中的图像;3、实现直方图均衡化、保存图像、检查新生文件的内容及一些相关的操作。

二、实验内容1、双击桌面上的matlab图标,启动matlab软件。

2、在MATLAB界面右侧“command window”中输入相应的代码,读入并显示一副图像。

3、检查内存中的图像4、改变图像大小(0.8)5、将彩色图像转化为灰度图像,通过save函数,将R、G、B值分别保存成.mat 文件(R.mat,G.mat,B.mat),将灰度图像保存(imwrite),其灰度值用.mat文件保存。

6、实现直方图的均衡化,画出原始图像及其直方图,以及处理之后图像及其直方图(在一个图形窗口中画出)7、保存图像三、实验结果及代码clear;%清空MATLAB工作平台的所有变量close all;%关闭已打开的图形窗口img1 = imread('C:\Users\1\Desktop\实验\Image.jpg');%读入图像文件figure(2);subplot(321);imshow(img1);title('原彩色图');subplot(322);img = imresize(img1,0.8);%改变图像大小imshow(img);title('缩小后的彩色图像');subplot(323);gray = rgb2gray(img);%将彩色图像转化为灰度图像imwrite(gray,'C:\Users\1\Desktop\实验\hui_1.tif'); imshow(gray);title('灰度图像');%实现直方图的均衡化subplot(324)imhist (gray);title('灰度图像直方图');subplot(325);imgGray2 = histeq(gray);%直方图均衡化imshow(imgGray2);title('均衡化灰度图像');subplot(326);imhist(imgGray2);%获取图像数据直方图title('均衡化灰度图像直方图');img = imread('C:\Users\1\Desktop\实验\hui_1.tif'); R = gray(:,:,1);G = gray(:,:,2);B = gray(:,:,3);save('R.mat',R)save('G.mat',G)save('B.mat',B)Gray = img();save('Gray.mat','Gray')如图上图所示,包括原彩色图像、灰度图像、均衡化后的彩色图像、缩小后的彩色图像、原直方图和均衡后的直方图。

matlab中各种数据的读取

matlab中各种数据的读取

matlab中各种数据的读取在Matlab中,可以使用不同的函数和方法来读取各种类型的数据。

下面将详细介绍如何读取常见的数据类型,包括文本文件、Excel文件、图像文件和音频文件。

1. 读取文本文件:使用Matlab的`textread`函数可以读取文本文件。

该函数需要指定文件名和格式字符串作为输入参数。

例如,要读取名为"data.txt"的文本文件,其中包含两列浮点数,可以使用以下代码:```data = textread('data.txt', '%f %f');```这将把文件中的数据读入一个大小为N×2的矩阵`data`中,其中N是文件中的行数。

2. 读取Excel文件:Matlab提供了`xlsread`函数来读取Excel文件。

该函数需要指定文件名和工作表名称作为输入参数。

例如,要读取名为"data.xlsx"的Excel文件中的第一个工作表,可以使用以下代码:```data = xlsread('data.xlsx', 1);```这将把工作表中的数据读入一个矩阵`data`中。

3. 读取图像文件:使用Matlab的`imread`函数可以读取图像文件。

该函数需要指定图像文件名作为输入参数。

例如,要读取名为"image.jpg"的JPEG图像文件,可以使用以下代码:```image = imread('image.jpg');```这将把图像文件读入一个大小为M×N×3的三维矩阵`image`中,其中M和N分别是图像的行数和列数,3表示图像的RGB通道。

4. 读取音频文件:Matlab提供了`audioread`函数来读取音频文件。

该函数需要指定音频文件名作为输入参数。

例如,要读取名为"audio.wav"的WAV音频文件,可以使用以下代码:```[y, fs] = audioread('audio.wav');```这将把音频文件读入一个列向量`y`中,并返回采样率`fs`。

使用Matlab进行图像识别的基本步骤

使用Matlab进行图像识别的基本步骤

使用Matlab进行图像识别的基本步骤在当今数字化时代,图像识别技术被广泛应用于各个领域,如人脸识别、智能交通系统和医学影像分析等。

Matlab作为一种功能强大的科学计算软件,提供了丰富的图像处理和分析工具。

本文将介绍使用Matlab进行图像识别的基本步骤。

一、图像获取和预处理图像识别的第一步是获取图像数据。

通常情况下,我们可以使用摄像头或加载一幅图像文件作为输入。

在Matlab中,可以使用imread函数读取图像文件,或使用摄像头对象进行实时图像采集。

获取到图像数据后,我们需要进行预处理以提高图像质量和减少噪声。

常见的预处理操作包括图像去噪、尺寸调整和灰度化等。

Matlab提供了多种图像处理函数,如medfilt2、imresize和rgb2gray等,可以方便地完成这些操作。

二、特征提取与选择在图像识别中,我们需要从图像中提取特征并选择合适的特征表示方法。

特征提取是将图像数据转化为数值形式的过程,常用的特征包括颜色、纹理和形状等。

Matlab提供了一系列的特征提取函数,如rgbhist、glcm和regionprops等,可以用来计算图像的各种特征。

选择合适的特征对于图像识别的准确性和效率至关重要。

在特征选择阶段,我们通常会使用相关性分析、主成分分析和逐步回归等方法来评估和选择特征。

Matlab提供了丰富的统计工具和机器学习算法,可以帮助我们进行特征选择和降维操作。

三、模型训练和分类在得到了合适的特征表示后,我们需要使用这些特征来训练一个分类模型,以便对新的图像进行分类。

常用的分类算法包括支持向量机、人工神经网络和随机森林等。

Matlab中提供了大量的机器学习工具箱,如svmtrain、patternnet和TreeBagger等,可以用来构建和训练各种分类模型。

模型训练的过程通常包括数据划分、训练和评估三个步骤。

数据划分是将数据集划分为训练集和测试集的过程,常用的方法包括随机划分和交叉验证。

matlab imwrite函数用法

matlab imwrite函数用法

matlab imwrite函数用法Matlab中的imwrite函数是用于将图像数据保存到图像文件的函数。

它的基本语法如下:imwrite(A, filename)imwrite(A, filename, format)其中,A是需要保存的图像矩阵,filename是保存的文件名,format是保存的文件格式。

下面将详细介绍imwrite函数的具体使用方法。

1. 导入图像要使用imwrite函数,首先需要导入一幅图像。

可以使用imread函数来从图像文件中读取图像数据。

示例如下:image = imread('image.jpg');2. 根据需要修改图像数据根据需要,可以对导入的图像数据进行修改,例如编辑、裁剪、增加滤镜效果等。

3. 保存图像数据在修改完图像数据后,使用imwrite函数来保存图像数据。

以下是一些示例:imwrite(image, 'new_image.jpg'); 以jpg格式保存图像imwrite(image, 'new_image.png'); 以png格式保存图像imwrite(image, 'new_image.bmp'); 以bmp格式保存图像4. 指定保存格式如果要指定保存的图像格式,可以在imwrite函数中添加format参数。

以下是一些示例:imwrite(image, 'new_image.jpg', 'jpg'); 保存为jpg图像imwrite(image, 'new_image.png', 'png'); 保存为png图像imwrite(image, 'new_image.bmp', 'bmp'); 保存为bmp图像5. 保存指定区域的图像有时候只需要保存图像中的一部分区域,可以使用imcrop函数来裁剪图像区域,然后再使用imwrite函数保存。

MATLAB 图像处理命令使用

MATLAB 图像处理命令使用

MATLAB 图像处理命令使用1.MATLAB中图像处理的一些简单函数A、imreadimread函数用于读入各种图像文件,其一般的用法为[X,MAP]=imread(‘filename’,‘fmt’)其中,X,MAP分别为读出的图像数据和颜色表数据,fmt为图像的格式,filename为读取的图像文件(可以加上文件的路径)。

例:[X,MAP]=imread(’flowers.tif’,’tif’);比较读取二值图像,灰度图像,索引图像,彩色图像的X和MAP的特点,可以利用size 函数用来显示数组的维数,了解数据的特点。

B=size(a) 返回数组a 的维数。

B、imwriteimwrite函数用于输出图像,其语法格式为:imwrite(X,map,filename,fmt)imwrite(X,map,filename,fmt)按照fmt指定的格式将图像数据矩阵X和调色板map写入文件filename。

C、imfinfoimfinfo函数用于读取图像文件的有关信息,其语法格式为imfinfo(filename,fmt)imfinfo函数返回一个结构info,它反映了该图像的各方面信息,其主要数据包括:文件名(路径)、文件格式、文件格式版本号、文件的修改时间、文件的大小、文件的长度、文件的宽度、每个像素的位数、图像的类型等。

2.MATLAB中图像文件的显示imshowimshow函数是最常用的显示各种图像的函数,其语法如下:imshow(X,map)其中X是图像数据矩阵,map是其对应的颜色矩阵,若进行图像处理后不知道图像数据的值域可以用[]代替map。

(1)二进制(二值)图像显示方法,在MATLAB中一幅二值图像是uint8或双精度的,该矩阵仅包含0和1。

如果希望工具箱中的函数能将图像理解为二进制的,那么所有数据都要是逻辑数据,必须对其进行设置(将所有数据标志均设置on).可以对数据利用“~”取反操作实现图像逆转即黑白反色。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab中如何读出写入图像文件以及对图像的简单处理imMatrix = imread('name.jpg')%jpg也可以bmp,你的图片格式MATLAB图像处理工具箱支持四种基本图像类型:索引图像、灰度图像、二进制图像和RGB图像。

MATLAB直接从图像文件中读取的图像为RGB图像。

它存储在三维数组中。

这个三维数组有三个面,依次对应于红(Red)、绿(Green)、蓝(Blue)三种颜色,而面中的数据则分别是这三种颜色的强度值,面中的元素对应于图像中的像素点。

设所得矩阵为X三维矩阵(256,256,3) ,X(:,:,1)代表红颜色的2维矩阵X(:,:,2)代表绿颜色的2维矩阵, X(:,:,3)代表兰颜色的2维矩阵。

[X,
map]=imread('34.bmp');r=double(X(:,:,1)); %r是256 x 256的红色信息矩阵
g=double(X(:,:,2)); %g是256 x 256的绿色信息矩阵b=double(X(:,:,3)); %b是256 x 256
的兰色信息矩阵
索引图像数据包括图像矩阵X与颜色图数组map,其中颜色图map是按图像中颜色值进行排序后的数组。

对于每个像素,图像矩阵X包含一个值,这个值就是颜色图数组map中的索引。

颜色图map为m×3双精度矩阵,各行分别指定红、绿、蓝(R、G、B)单色值,map=[RGB],R、G、B为值域为[0,1]的实数值,m为索引图像包含的像素个数。

对于相同的数据,采用uint8格式比双精度格式节省内存空间,从而更经济。

在MATLAB中
如果索引图像的颜色图小于256行,则它的图像矩阵以uint8格式存储,否则以双精度格式存储。

一:imread:从图像文件夹中读取图像。

A = imread(FILENAME,FMT) 读取图像到A,如果文件是包含一灰度图像,A是一二维矩阵,如果文件是包含一真彩色图像(RGB),A是一三维矩阵(M-by-N-by-3)。

FILENAME :图像文件名;FMT:图像文件格式;
文件必须在当前目录下,或在Matlab的一路径上。

如果imread不能够找到一名称为FILENAME的文件,那么它将找一名为FILENAME.FMT的文件
[X,MAP] = imread(FILENAME,FMT) 把图像FILENAME读入与它相关的图像色彩信息写
入MAP,图像色彩信息值在范围[0,1]中自动地重新调整.
[...] = imread(FILENAME)这种方式是试图得到文件的格式从文件所包含的信息。

[...] = imread(URL,...)从一Internet URL上读图像URL 必须包含协议(即:"http://").
1.2数据类型:
TIFF的特殊语法:
[...] = imread(...,IDX) 从很多图像TIFF文件中读一个图像;IDX是一个整数值,它显示了所读图像在文件中的顺序,例如:如果IDX是3, imread将读文件中的第三个图像。

如果省略了这个变量, imread将读文件中的第一个图像.
IMREAD支持的图像文件格式:JPEG TIFF GIF BMP PNG HDF PCX XWD ICO CUR RAS PBM PGM PPM
相关信息也可在Matlab中查看:imfinfo, imwrite, imformats, fread,
二:imwrite输出图像
imwrite(A,FILENAME,FMT) 把图像A 写入图像文件FILENAME.
imwrite(X,MAP,FILENAME,FMT) 把X和它的相关色彩信息MAP写入FILENAME. imwrite(...,FILENAME) 把图像写入图像文件FILENAME,并推测可能的格式用来做filename的扩展名。

扩展名必须是FMT中一合法名.
imwrite(...,PARAM1,VAL1,PARAM2,VAL2,...) 不同的参数控制输出文件的各种不同特征。

参数要是当前所支持的HDF,JPEG, TIFF, PNG, PBM, PGM, 和PPM 文件
三:image 显示图像.image(C) 把矩阵C 转成一图像. C 可以是一MxN或MxNx3维的矩阵,且可以是包含double, uint8,或uint16 数据.image是用来显示附标图像,即显示的图像上有x,y坐标轴的显示,可以看到图像的像素大小。

但可以加上axis off命令即可把坐标去掉。

imshow只是显示图像。

用colormap来定义图像显示用的颜色查找表,比如用
colormap(pink),可以把黑白图像显示成带粉红色的图像。

图像像素矩阵的数据类型:(1)显示真彩色图像像素三维矩阵X,如果是uint8类型,要求矩阵的数据范围为0-255,(2)如果是double型,则其数据范围为0-1,要不就会出错或者出现空白页。

类型转换:(1)如果你原来的数值是uint8,在运算中转换为double后,实际要显示的数值没有改变的话,只要用uint8(X)就可转换为uint8型,如果不想转换频繁,也可在显示时用X/255来转换为符合0-1double类型范围要求的数值显示。

(2)如果显示索引图像(二维矩阵),如果索引图像像素数值是double型,则它的取值范围为1-length(colormap),数值起点为1,则矩阵中数值为1的对应colormap中第一行数据,如果索引图像像素数值是uint8,则取值范围为0-255,数值起点为0,则矩阵中数值为0的对应colormap中第一行数据,所以索引图像这两个数据类型之间的转换,要考虑到+1或-1。

直接用uint8或double转换则会查找移位,产生失真情况。

uint16数据类型与uint8类似,取值范围为0-65536。

四:其它常用图像操作:
图像显示于屏幕有imshow( ), image( )函数;
图像进行裁剪imcrop( );
图像的插值缩放imresize( )函数实现;
旋转用imrotate( )实现。

五:具体的操作
下面通过运用图像处理工具箱中的有关函数对下图(nice.bmp)进行一些变换。

见后面的transfer.m内容!
变换前图片:(nice.bmp)
变换后所得图片:newpic.bmp
例,在电脑F\picture下有一彩色图像文件nice.bmp,则可由下述语句读取:
下面是对图像nice.bmp以y轴为对称轴所做的一个对称变换。

% Transfer1.m
clear all
figure
[x,map]=imread('F:\picture\nice.bmp');% 所得x为一375x420x3的矩阵
[w1,w2,w3]=size(x); % 375 X 420
w22=floor(w2/2);
image(x); %显示出图像
title('HELLO! @This is the first pose of me')%则显示出图像nice.bmp
axis off; % 去掉图像中的坐标
colormap(map); % colormap(),图像查找表函数。

函数结构为colormap(map),设置当前的图像查找表到map。

imwrite(x,map,'nice.bmp')
for i=1:w1
for j=1:w22 % 图像关于y轴对折
t=x(i,j);
x(i,j)=x(i,w2-j+1);
x(i,w2-j+1)=t;
end
end
figure
image(x);
axis off
title('HELLO!!@@ Can you find any difference of my two picture! ') colormap(map); imwrite(x,map,'newpic.bmp') %把x写到nepic2.bmpz中去
% Transfer1.m文件中包含了最基本也是最常用的对读像处理的命令。

在对图像处理的整个过程中,实质上是对[x,map]=imread(‘figure')函数中所得x矩阵的各种变换!。

相关文档
最新文档