matlab怎么读取图片:两种主流方案
matlab怎么读取图片,主流分为imread基础读取和图像数据对象读取两种方案,imread适合绝大多数日常图像处理,直接返回像素矩阵,支持jpg、png、bmp、tif等常见格式,读取后默认把彩色图存为三维数组,灰度图存为二维数组,读取时文件路径错误、文件名带中文、文件不在当前工作目录都会读取失败,该方法适合做图像滤波、阈值分割、特征提取的学习者和工程开发人员,不适合需要同步读取图像附加元信息,比如EXIF拍摄参数的场景。
matlab怎么读取图片基础用法
你直接调用A=imread('test.jpg')就能完成读取,引号内填写图片名称,前提是图片放在matlab当前工作文件夹里。图片不在工作目录时,要写完整绝对路径,Windows系统路径用单引号包裹,路径分隔符直接写反斜杠或者正斜杠都可以,路径里尽量不用中文,中文路径在部分旧版本matlab中会出现读取中断。读取完成后输入whosA,查看变量维度,三维数组第三维分别对应红、绿、蓝三个颜色通道。
单通道灰度图读取后得到二维矩阵,矩阵内数值范围一般是0到255的uint8类型,如果你后续要做浮点运算,需要用im2double转换数据类型,转换后数值会映射到0到1区间。
读取后预览图片,搭配imshow(A)命令,一行代码就可以弹出图像窗口,快速校验读取结果是否正常。
matlab怎么读取图片进阶方案
| 读取方式 | 返回内容 | 适用场景 |
|---|---|---|
| imread | 纯像素矩阵 | 常规图像处理,代码简洁 |
| imfinfo+imread | 元信息+像素矩阵 | 需要获取分辨率、位深等参数 |
imfinfo可以单独读取图片文件信息,返回结构体,里面包含图像宽高、位深度、压缩格式等字段,你先用info=imfinfo('test.tif')拿到信息,再配合imread读取像素,适合批量处理图像,提前筛选不符合尺寸要求的文件。
批量读取图片,用dir函数遍历文件夹,循环调用imread,循环内部做好文件名拼接,批量代码里要增加判断,过滤掉文件夹里非图像格式的文件,避免循环报错终止。
路径是高频出错点。
matlabR2020b及更新版本,对中文路径的兼容能力有所提升,但批量项目开发时,依然推荐全程使用英文命名,降低程序不稳定的概率。tif多帧图像读取需要指定帧序号,语法格式为A=imread('multi.tif',3),这条语句读取tif文件里的第三帧图像,不写序号默认读取第一帧。
读取完成后不要直接对uint8矩阵做小数运算,uint8类型数值溢出后会直接截断,造成画面失真,提前转浮点类型可以规避这个问题。
imread不支持pdf、svg这类矢量图文件,这类文件无法以像素矩阵形式读取。
