本系列文章都是通过自己的学习经验,以及啃文档所写。如需转载,请注明出处

参考文档:Image Processing Toolbox™ 6

User’s Guide

作者:joy

二、图像的读取和存储

图像处理,主要是对已有的图像进行处理,然后再存储起来,并不是无中生有,创造出一幅图像。因此,图像的读取和存储显得比较重要。

这里创建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(‘image\2.jpg’);%相对路径的读取

(3)读取D:\1023\25\1.jpg

I=imread(‘D:\1023\25\1.jpg’);%绝对路径的读取

(4)读取D:\1023\25内20个图像。

fori=1:20

I=imread([‘D:\1023\25\’,num2str(i),’.jpg’]);

end

注:第四种情况需要注意的是,里面添加了[ ],来保证这是一个整句。num2str(i)是将i由数字转换成字符形式。这样就能实现循环读取。一般来说,会将图像跟.m文件放在一起。当图像较多时,图像放入image文档中,读取方式将(2)和(4)结合起来。利用相对路径来读取,这样当程序和图像同时放在其他电脑上时,不会因为路径而产生问题。

图像的显示

imshow(I)

imtool(I)

image(I)

关于这三个函数用法的区别,就在上面这个文章内。主要的意思是: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中会有I291*240 uint874 224 ,就这说明了I是二维图像,大小是291*240,uint8型的。最小值为74,最大值是224.这里指的是灰度值。

用函数whos就能显示I的相关信息:

第三章图像的存储

1、图像的存储

imwrite(I,’pout1.jpg’);

同样,imwrite也有相对路径和绝对路径的存储,以及连续的存储方法。同imread

imwrite(I,’pout1.jpg’);

imwrite(I,’image\pout1.jpg’);

imwrite(I,’D:\Matlab\image\pout1.jpg’);

imwrite(I,[’image\’,num2str(i),’.jpg’]);%i是变量,需要定义

这里的.jpg可以改成.bmp等,想要的格式。

需要注明的是,存储所选择的文件夹,需要已经建立好。那么怎么去自动建立文件夹呢?

需要用mkdir函数。

mkdir(‘D:\image\1’)%绝对路径的建立。

mkdir(‘image\1’);%绝对路径文件夹的建立。创建之后,在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,'image\pout2.jpg');



matlab图像的读取和存储,二、Matlab图像的读取和存储相关推荐

  1. Matlab函数学习---imref2d函数(将二维图像转到世界坐标)

    实例1:实现二维图像TIF到世界坐标系的转换(设定世界坐标范围大小) 实例2:实现二维图像DCM到世界坐标系的转换(设定世界坐标范围大小和分辨率) 本例程的配套完整源码和图片素材下载 imref2d函 ...

  2. 实验二 matlab矩阵分析与处理

    实验二 matlab矩阵分析与处理 目录 实验二 matlab矩阵分析与处理 2 1.1实验目的 3 1.2实验内容 3 1.3流程图 4 1.4程序清单 4 1.5运行结果及分析 6 1.6实验的收 ...

  3. matlab的程序设计实验报告答案,实验二 MATLAB程序设计(含实验报告).doc

    实验二 MATLAB程序设计(含实验报告) 实验二 MATLAB程序设计 实验目的 1.掌握利用if语句实现选择结构的方法. 2.掌握利用switch语句实现多分支选择结构的方法. 3.掌握利用for ...

  4. matlab 读取照片imread,利用matlab读取图像

    怎样用matlab读取20张图片并依次展示出来 指定路径下 单个文件夹data中所有图像 P = '.\data\';% 图像文件夹路径 img_path_list = dir(strcat(P,'* ...

  5. 二维图像中的Hessian矩阵(及MATLAB代码)

    文章目录 一.图像中Hessian矩阵的定义及公式推导 二.MATLAB代码 一.图像中Hessian矩阵的定义及公式推导 对于二维图像 f ( x , y ) f(x,y) f(x,y),在点 x ...

  6. matlab怎么输出图像文件夹,Matlab读取图片 显示和保存图像的相关操作

    当前有部份朋友还不清楚Matlab读取图片 显示和保存图像的操作,所以下面绿软吧就带来Matlab读取图片 显示和保存图像的相关操作,一起来看看吧! Matlab读取图片 显示和保存图像的相关操作 打 ...

  7. matlab如何读取二维数组,Matlab从csv文件中读取多个二维数组

    我有一个csv文件,它包含2列4列数组,但行数不等.例如:Matlab从csv文件中读取多个二维数组 2, 354, 23, 101 3, 1023, 43, 454 1, 5463, 45, 765 ...

  8. 基于MATLAB实现二维图像叠加进行三维重建

    三维重建主要过程概述 绘制圆心位置相同,内外半径相同的系列圆 ,图片尺寸为128*128,类似于血管的圆管柱图像: 绘制圆心位置不同,内外半径相同的系列圆,图片尺寸为128*128,类似于血管的圆管柱 ...

  9. 【MATLAB】二维绘图 ( 绘制二维图像 | 设置图像样式 )

    文章目录 一.绘制二维图像 1.二维绘图步骤 2.二维绘图步修饰 3.代码示例 二.设置图像参数 1.图像参数 2.代码示例 一.绘制二维图像 1.二维绘图步骤 绘图前需要给定 xxx 轴 , yyy ...

  10. MATLAB 基础笔记(三):二维图像绘图

    笔记三是简单介绍二维绘图的函数和一些绘图的辅助技巧. 目录 笔记三是简单介绍二维绘图的函数和一些绘图的辅助技巧. 1.plot函数绘制图像 2.添加坐标轴范围和坐标轴标签以及标题 3.改变线型.颜色和 ...

最新文章

  1. 通过 P3P规范让IE跨域接受第三方cookie session
  2. MySQL——复杂的多表查询——以超市交易数据为例
  3. CodeForces - 1509C The Sports Festival(dp)
  4. Spark入门(八)之WordCount
  5. 【计算机思维】面向人的开发 站在巨人的肩膀上
  6. 用于 Keras 用户使用的 TensorFlow.js layers API
  7. day21-字节流和字符流
  8. PR常用的效果和转场,视频防抖、宽银幕效果、设置默认效果
  9. HDC1080温湿度驱动 IIC I2C STM32
  10. word无法加载mathtype.wll
  11. so easy 的 Vue3.0自定义指令(也搜一贼)
  12. Java版KTV预定管理系统源码
  13. 企业与个人是如何跨越战略转折点 - 读《只有偏执狂才能生存》
  14. 关于maxIdle ,MaxActive,maxWait介绍
  15. 如何在三维模型中按一定密度提取点云数据(详细说明)
  16. 十三、传智书城项目设计
  17. 纯前端实现—猜数字游戏
  18. 深入RocketMQ原理
  19. leetcode:1488. 避免洪水泛滥【二分 + 贪心】
  20. 计算机显示器上有条纹,电脑屏幕出现条纹有哪些原因

热门文章

  1. 计算广告学(Computational Advertising)学习资料
  2. android 电视安装apk文件损坏,安装电视软件时提示解析包出现问题怎么破?
  3. (vivo)安卓神器xposed框架Root安装指南
  4. 2021-01-07
  5. JAVA把一个流赋给新的一个流_2020重新出发,JAVA基础,输入/输出(I/O)流
  6. 【论文阅读】强化学习-Transfer and Multitask RL专题8篇
  7. 在线二进制取余计算机,二进制转十进制和十六进制计算器
  8. 线上幽灵:世界头号黑客米特尼克自传改
  9. 【转】MapGIS基础系列(三)--服务疑难面面观
  10. Android动画总结