matlab 读取、显示、保存图像
- 格式:docx
- 大小:46.78 KB
- 文档页数:3
matlab保存图⽚的⼏种⽅式最近在写毕业论⽂, 需要保存⼀些⾼分辨率的图⽚. 下⾯介绍⼏种MATLAB保存图⽚的⽅式.⼀. 直接使⽤MATLAB的保存按键来保存成各种格式的图⽚你可以选择保存成各种格式的图⽚, 实际上对于⼀般的图⽚要求⽽⾔, 该⽅法已经⾜够了.⼆. 使⽤saveas函数该函数实际上类似于 “另存为” 的选项,并且忽略图⽚的背景⼤⼩等等,按照默认的属性存储.⼀般格式为为saveas(fig, filename, formattype)clearclcx = 0:0.01:2*pi;y = sin(x);plot(x, y)xlabel('x')ylabel('y')title('y = Sin(x)')saveas(gcf, 'test', 'png')这的可选项有png, jpg, bmp等等, 以及⽮量图格式, eps, svg, pdf等等.三. 使⽤imwrite函数imwrite 实际上是保存⼀个描述图⽚的数组, 使⽤的⼀般格式为imwrite(A, filename)clearclcx = 0:0.01:2*pi;y = sin(x);plot(x, y)xlabel('x')ylabel('y')title('y = Sin(x)')f = getframe(gcf);imwrite(f.cdata, 'test.png'); 该函数可以⽤于保存为png, jpg, bmp等等格式, 但是不可以保存为eps, svg, pdf 等⽮量图格式.该函数还可以⽤于保存gif.clearclcn = 1:10;nImages = length(n);x = 0:0.01:1;im = cell{nImages, 1};figure;for idx = 1:nImagesy = sin(2*pi*x*idx);plot(x,y,'LineWidth',3)title(['y = sin(2n\pix), n = ' num2str(n(idx)) ])drawnowframe = getframe(gcf);im{idx} = frame.cdata;endclose;filename = 'test.gif';for idx = 1:nImages[A,map] = rgb2ind(im{idx},256);if idx == 1imwrite(A,map,filename,'gif','LoopCount',Inf,'DelayTime',1);elseimwrite(A,map,filename,'gif','WriteMode','append','DelayTime',1);endend四. 使⽤ printf 函数clearclcx = 0:0.01:2*pi;y = sin(x);plot(x, y)xlabel('x')ylabel('y')title('y = Sin(x)')printf(gcf,'-dpng','test.png') 。
matlab保存图片的四种方法1 从菜单保存〈<回目录可以保存为fig,eps,jpeg,gif,png,bmp等格式。
2 复制粘贴 <<回目录edit-—-———〉copy figure,再粘贴到其他程序,如word3 saveas函数〈〈回目录saveas(gca,filename,fileformat)不过此函数不好用常常出错4 print函数〈<回目录〉〉 x=—pi:2*pi/300:pi;〉〉 y=sin(x);>〉 plot(x,y);〉> print(gcf,'-dpng','abc。
png')%保存为png格式的图片. 〉〉 pwdD:\Matlab\work>〉 dir〉〉 % 现在到 D:\Matlab\work 应该能找到图片 abc.png 了〉> figure(2) % 新建一个句柄为2的图形窗口。
〉〉 plot(x,cos(x)); % 在句柄为2的图形窗口上画图。
>> grid>> print(2,’—djpeg’,’D:\abc.jpeg’); %将句柄为2的图形保存为jpeg/jpg格式的图片,>> %文件名为'D:\abc。
jpeg’。
4。
2 用法:print(图形句柄,存储格式,文件名);〈<回目录图形句柄,如果图形窗口标题栏是“Figure 3”,则句柄就是3.用gcf可以获取当前窗口句柄. 指定存储格式。
常用的有:png格式:‚-dpng‘ (推荐这一种,与bmp格式一样清晰,文件也不大)jpeg: ‚-djpeg‘(文件小,较清晰)tiff: ‚—dtiff‘bmp: ‚—dbitmap‘(清晰,文件极大)gif: ‚-dgif‘(文件小但不清晰)文件名在matlab中自动保存plot图像的程序Step 1. 先使所画的图最大化,即占满整个屏幕scrsz = get(0,’ScreenSize');figure1=figure('Position',[0 30 scrsz(3) scrsz(4)-95]);或者(下面这种情况会把windows系统下面的任务栏也保存到图片中,不太好)scrsz = get(0,’ScreenSize’);figure1=figure(’Position’,[0 0 scrsz(3) scrsz(4)-66]);% Step 2. 生成数据并画图x=rand(100,1);plot(x);saveas(gcf,’filename’,'bmp’);saveas(gcf,'filename',’emf’);saveas(gcf,'filename’,’jpg');% Step 3. 清理现场clear all; clc; close all;下面的代码可以创建一个大小为整个屏幕的四分之一,位置在屏幕在左上角的一个figure对像,使用root对象的ScreenSize属性来取得屏幕的尺寸,ScreenSize是由四个元素组成的数据:[left,bottom,width,height])。
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!');应该试着⾃⼰写写。
第四章图像显示M a t l a b进行图像处理的步骤如下:↓↓↓↓【目录】一、读图像和图像信息 (2)1、读取图像 (2)2、读取图像信息 (4)二、图像显示 (6)1、i m s h o w(I,n) (6)2、i m s h o w(I,[l o w,h i g h]) (7)3、i m s h o w(B W) (8)4、i m s h o w(X,M A P) (12)5、i m s h o w(R G B) (13)6、显示多帧图像序列 (14)7、i m s h o w f i l e n a m e (17)8、s u b i m a g e (17)三、保存图像 (18)1、i m w r i t e函数 (18)四、图像数据格式转换 (19)07-11、索引图像 (19)2、灰度图像 (19)3、真彩色图像 (20)4、二值图像 (20)一、读图像和图像信息1、读取图像函数i m r e a d可以从任何M a t l a b支持的图像文件格式中,以任意位深度读取一幅图像。
格式为:[X,M A P]=i m r e a d('F I L E N A M E.F M T'),其中:F I L E N A M E-为需要读入的图像文件名称,F M T-为图像格式。
【例】图像读取演示[X1,M A P1]=i m r e a d('演示图像-1位黑白.t i f');[X2,M A P2]=i m r e a d('演示图像-8位灰度.t i f');[X3,M A P3]=i m r e a d('演示图像-256色.t i f');[X4,M A P4]=i m r e a d('演示图像-16位灰度.t i f');[X5,M A P5]=i m r e a d('演示图像-24位色.t i f');[X6,M A P6]=i m r e a d('演示图像-48位色.t i f');07-207-3w h o sN a m e S i z e B y t e s C l a s sM A P10x00d o u b l e a r r a yM A P20x00d o u b l e a r r a yM A P3256x36144d o u b l e a r r a yM A P40x00d o u b l e a r r a yM A P50x00d o u b l e a r r a yM A P60x00d o u b l e a r r a yX1427x427182329l o g i c a l a r r a yX2427x427182329u i n t8a r r a yX3427x427182329u i n t8a r r a yX4427x427364658u i n t16a r r a yX5427x427x3546987u i n t8a r r a yX6427x427x31093974u i n t16a r r a yG r a n d t o t a l i s1824058e l e m e n t s u s i n g2558750b y t e s2、读取图像信息可以通过调用i m f i n f o函数获得与图像文件有关的信息,格式如下:I N F O=i m f i n f o('F I L E N A M E.F M T')其中:返回的I N F O是M a t l a b的一个结构体。
利用matlab GUI编程实现对不同格式的图片的打开和保存建立的GUI如下:在打开按钮的回调函数里,利用uigetfile()函数建立一个打开文件的对话框,利用imread()函数来打开图片,imshow()函数显示图像,具体代码如下:[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.gif'},'选择图片');if isequal(filename,0)disp('Users Selected Canceled');elsestr=[pathname filename];im = imread(str);axes(handles.axes1);%axes1是坐标轴的标示imshow(im);end;运行之后的截图如下:在保存按钮的回调函数中,利用了uiputfile()函数建立了一个保存文件的对话框,调用matlab 的imwrite()函数保存经过修改的图像,具体代码如下:[filename,pathname]=uiputfile({'*.bmp';},'保存图片','Undefined.bmp');if ~isequal(filename,0)str = [pathname filename];px=getframe(handles.axes1);%saveas(gcf,str,'bmp');�ta = getappdata(gcf,'Timg');imwrite(px.cdata,str,'bmp');close(gcf);elsedisp('保存失败');end;其中的函数getframe()是为了获取坐标轴中的一帧图像,其返回的对象中有cdata和colormap 两个成员。
Matlab中的文件读写与数据存储方法在科学研究以及工程领域,数据的处理和存储是至关重要的。
而Matlab作为一款强大的科学计算软件,提供了丰富的文件读写和数据存储方法,为用户提供了便捷的数据处理和存储功能。
本文将从文件读写和数据存储两个方面来介绍Matlab中的相关方法,让读者可以更好地掌握和运用这些功能。
一、文件读写在Matlab中,文件读写是一项基本而重要的功能。
无论是从外部读取数据,还是将数据输出到外部,都需要用到文件读写方法。
1. 读取文本文件在Matlab中,可以使用readtable函数读取文本文件。
readtable函数可以读取CSV文件、文本文件以及其他普通的表格文件。
读取文本文件的关键是指定文件路径,并设置好相关的参数。
例如,下面的代码演示了如何读取一个名为data.txt 的文本文件:```Matlabdata = readtable('data.txt');```2. 写入文本文件与读取文本文件类似,可以使用writetable函数将数据写入文本文件。
同样,写入文本文件也需要指定文件路径和参数。
下面的代码展示了将数据写入data.txt 文件的示例:```Matlabwritetable(data, 'data.txt');```3. 读取二进制文件除了处理文本文件,Matlab也支持读取和写入二进制文件。
对于二进制文件,可以使用fread函数进行读取,使用fwrite函数进行写入。
这两个函数的使用方式和参数较为复杂,需要根据具体的文件格式和数据结构进行设置。
二、数据存储方法在Matlab中,数据存储方法包括矩阵存储、图像存储、音频存储等。
1. 矩阵存储在Matlab中,矩阵是最基本的数据结构之一,也是最常用的数据存储方式。
可以使用save函数将矩阵保存为.mat格式的文件,以便后续的读取和使用。
下面的代码演示了如何将矩阵data保存为matlab_data.mat文件:```Matlabsave('matlab_data.mat', 'data');```使用load函数可以读取.mat文件,并将其中的数据加载到工作空间中:```Matlabload('matlab_data.mat');```2. 图像存储Matlab中的图像处理功能非常强大,同时也提供了方便的图像存储功能。
Matlab在图像处理中的应用与技巧引言图像处理是计算机科学领域中的一个重要分支,通过对图像进行处理和分析,可以获得许多有价值的信息。
而MATLAB作为一个强大的计算软件,具备了丰富的图像处理函数和工具箱,可以帮助我们实现各种复杂的图像处理任务。
本文将介绍MATLAB在图像处理中的应用与技巧,帮助读者更好地利用MATLAB进行图像处理。
一、图像的读取与显示在MATLAB中,可以使用imread函数读取图像文件。
例如,要读取一张名为"image.jpg"的图像文件,可以使用以下代码:```MATLABimage = imread('image.jpg');```而imshow函数则可以将图像显示在窗口中,例如:```MATLABimshow(image);```通过这两个简单的函数,我们可以很方便地读取和显示图像。
二、图像的基本处理1.图像的缩放在图像处理过程中,经常需要将图像进行缩放。
MATLAB提供了imresize函数来实现图像的缩放,例如:```MATLABnew_image = imresize(image, [height, width]);```其中,height和width分别表示缩放后图像的高度和宽度。
2.图像的灰度化有时候我们只关注图像的亮度信息,而忽略了彩色信息。
此时可以将图像转换为灰度图像,MATLAB提供了rgb2gray函数来实现图像的灰度化,例如:```MATLABgray_image = rgb2gray(image);```gray_image即为灰度图像。
3.图像的旋转有时候我们需要将图像进行旋转,MATLAB提供了imrotate函数来实现图像的旋转,例如:```MATLABrotated_image = imrotate(image, angle);```其中,angle表示旋转的角度。
三、图像的增强处理1.图像的边缘检测在许多图像处理任务中,边缘是重要的特征之一。
MATLAB:如何保存图⽚到指定⽂件夹的三种⽅法
MATLAB:如何保存图⽚到指定⽂件夹的三种⽅法
⽅法⼀
在matlab中,直接imwrite()保存图⽚,会保存到当前⼯作⽬录⽂件夹或其⼦⽂件夹。
1 %直接保存
2 imwrite(picture,'test1.png')
3
4 %在当前⼯作⽬录下新建⽂件夹并保存
5 mkdir image % 如果⽂件夹已存在,会有警告,但不影响运⾏
6 imwrite(picture,'image/test1.png')
⽅法⼆
如果要把图⽚保存到其他指定的⽂件夹,可以通过 cd 命令切换当前⼯作⽬录实现,但要提前通过 pwd 保存原⼯作⽬录,为了在保存图⽚之后切换回到原⼯作⽬录。
1 filepath=pwd; %保存当前⼯作⽬录
2 cd('f:\image') %把当前⼯作⽬录切换到指定⽂件夹
3 imwrite(picture,'test1.png')
4 cd(filepath) %切回原⼯作⽬录
⽅法三
也可以在切换⼯作⽬录之后新建⽂件夹⽤于保存图⽚。
1 filepath=pwd; %保存当前⼯作⽬录
2 cd('f:') %把当前⼯作⽬录切换到图⽚存储⽂件夹
3 mkdir image % 如果⽂件夹已存在,会有警告,但不影响运⾏
4 imwrite(picture,'image/test1.png')
5 cd(filepath) %切回原⼯作⽬录
注意在保存完图⽚或其他操作之后要切换回到原⼯作⽬录,以继续之后的指令。
读取图像:用imread函数读取图像文件,文件格式可以是TIFF、JPEG、GIF、BMP、PNG等。
比如>> f = imread('chestxray.jpg');读进来的图像数据被保存在变量f中。
尾部的分号用来抑制输出。
如果图片是彩色的,可以用rgb2gray转换成灰度图:>> f = rgb2gray(f);然后可以用size函数看图像的大小>> size(f)如果f是灰度图像,则可以用下面的命令把这个图像的大小赋给变量M和N>> [M, N] = size(f);用whos命令查看变量的属性>> whos f显示图像:用imshow显示图像imshow(f, G)其中f是图像矩阵,G是像素的灰度级,G可以省略。
比如>> imshow(f, [100 200])图像上所有小于等于100的数值都会显示成黑色,所有大于等于200的数值都会显示成白色。
pixval命令可以用来查看图像上光标所指位置的像素值。
pixval例如>> f = imread('rose_512.tif');>> whos f>> imshow(f)如果要同时显示两幅图像,可以用figure命令,比如>> figure, imshow(g)用逗号可以分割一行中的多个命令。
imshow的第二个参数用一个空的中括号:>> imshow(h, [])可以使动态范围比较窄的图像显示更清楚。
写图像。
用imwrite写图像imwrite(f, 'filename')文件名必须包括指明格式的扩展名。
也可以增加第三个参数,显式指明文件的格式。
比如>> imwrite(f, 'patient10_run1.tif', 'tif')也可以写成>> imwrite(f, 'patient10_run1.tif')还可以有其他参数,比如jepg图像还有质量参数:>> imwrite(f, 'filename.jpg', 'quality', q)q是0到100之间的一个整数。
Matlab图像处理技术的实践应用近年来,图像处理技术在各个领域中的应用越来越广泛,如医学影像、工业检测、图像识别等。
而作为一种强大的工具,Matlab在图像处理方面发挥着重要的作用。
本文将探讨Matlab图像处理技术的实践应用,并深入了解其中的数学原理和相关算法。
一、图像基本处理在图像处理的初始阶段,我们往往需要对图像进行一些基本的处理,如读取、显示、保存等。
Matlab提供了丰富的图像处理函数,可以轻松完成这些任务。
首先,我们需要读取图像文件。
在Matlab的Image Processing Toolbox中,使用imread函数即可实现。
例如,使用以下命令可以读取一张名为"image.jpg"的图像文件:image = imread('image.jpg');接下来,我们可以使用imshow函数将图像显示在Matlab的图像窗口中,如下所示:imshow(image);此外,Matlab还提供了imwrite函数,用于将图像保存为指定的文件格式。
例如,以下命令可以将图像保存为PNG格式:imwrite(image, 'image.png');二、图像增强和滤波在实际应用中,我们往往需要对图像进行增强或滤波,以提高图像的质量或减少噪声。
Matlab提供了许多图像增强和滤波的函数,如直方图均衡化、中值滤波等。
直方图均衡化是一种常用的图像增强方法,用于提高图像的对比度。
在Matlab 中,我们可以使用histeq函数来实现直方图均衡化。
例如,以下代码将对图像进行直方图均衡化处理:enhanced_image = histeq(image);除了直方图均衡化,Matlab还提供了许多其他的图像增强方法,如局部对比度增强、锐化等。
这些方法可以根据具体的需求选择和调整。
另一方面,滤波是图像处理中常用的一种技术,用于降低噪声或模糊图像。
Matlab提供了常见的滤波方法,如均值滤波、中值滤波等。