MATLAB实现图像的读取、写入、显示

数字图像处理 专栏收录该内容
6 篇文章 0 订阅

MATLAB实现图像的读取、写入、显示

数字图像表示

1.相关名词解析

强度(灰度):将一幅图像定义为一个二维函数f(x,y),任何一对空间坐标(x,y)处的幅值f称为图像在该点处的强度或灰度。

数字图像:当x,y和灰度值f是有限的离散数值时,称该图像为数字图像。

数字图像处理:借助数字计算机来处理数字图像。

图画元素/图像元素/像素:有限数量的像素构成了数字图像,这些像素都有特定的位置和幅值。

取样和量化:将坐标值数字化称为取样;将振幅数字化称为量化。取样和量化的结果是一个实数矩阵。

2.坐标约定(图像大小M*N)

图像处理书籍中,图像原点一般定义在(x,y)=(0,0)处,而沿图像第一行的下一个坐标值为(x,y)=(0,1), 符号(0,1)表示的是沿第一行的第二个取样,而不是表示图像在取样时的实际物理坐标值。注意:x的范围是从0到M-1的整数,y的范围是从0到N-1的整数。

图像处理工具箱中,使用(c,r)表示图像的行和列,图像原点定义在(c,r)=(1,1)处,所以c的范围是从1到M的整数,r的范围是从1到N的整数。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uQcylXlI-1572781049078)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\a882e6cec78b4edca9176ea14074e833\clipboard.png)]
IPT文档中,将图b中的坐标称为像素坐标。IPT还采用另一种较少使用的坐标约定,称为空间坐标,这种坐标使用x来表示列,使用y来表示行。与上述的x、y恰好相反。(后期将不使用IPT坐标)

3.图像的矩阵表示

数字化图像函数表示:等式右边是由定义给出的一幅数字图像,该数组的每一个元素都称为像元、图元或像素。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hJf2hnjU-1572781049079)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\052d5d3f2df34048a043ea219077190b\clipboard.png)]

MATLAB中数字图像表示:其中这里的f(1,1)等于上面的f(0,0),一般来说,用M和N分别表示矩阵中的行与列,1N:行向量;M1:列向量;1*1:标量。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nBz9H87S-1572781049080)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\80307fd0c14c45f5ad7b42d00a4f0dc0\clipboard.png)]
(在MATLAB中,矩阵以变量的形式来存储,变量必须以字母开头,且只能由字母、数字和下划线组成。)

读取图像

使用imread可以将图像读入MATLAB环境:

eg: imread(‘filename’)

注:filename是一个含有图像文件全名的字符串(包括任何可用的扩展名)

比如我们读取一幅位于桌面上、名为“tmp”,格式类型为bmp的图片:

1.首先我们需要保证当前路径位于桌面

2.然后使用imread函数读取图片tmp(需要带上后缀名),回车之后就可以看到每个像素的幅值,从而得到一个和图像分辨率一致的ans的数组(行:202;列:323)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rjRYQOia-1572781049080)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\7398fc940ce24dbc91db2b708c751cd5\clipboard.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x1LTgYMn-1572781049080)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\65c08d0db17943168844fd70ccf9268a\clipboard.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxhLL0F8-1572781049081)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\366b6b72446e434ea508747030dbac61\clipboard.png)]

imread的用法:

>> imread(‘tmp.bmp’)

>> f = imread(‘tmp.bmp’) %读入的图像放入数组f中

>> f = imread(‘C:\Users\JANE\Desktop\tmp.bmp’) %在指定的路径下读取图片,这种方式就不需要保证图像路径与工程路径的一致性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sOzTbBPm-1572781049081)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\50ebf3d28cd649ff94b277931f8a8573\clipboard.png)]

使用函数size获取图像的大小(行数与列数)

size的用法

>> size(f)

>> [M,N]=size(f) %返回图像的行数(M)和列数(N)

其中,函数whose可以显示出一个数组的附加信息

>> whos f

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7WnC7UMS-1572781049081)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\2dcb9c49d1394b4fa065a8f5f5d27963\clipboard.png)]

显示图像

在MATLAB中使用函数imshow显示

imshow的用法

>> imshow(f)

>>imshow(f,g) %g:显示该图像的灰度级数,若将g省略,默认灰度级数256

>>imshow(f,[low,high]) %会将所有小于或等于low的值显示为黑色,所有大于 或等于high的值显示为白色,介于两者之间的值将以默认的级数显示为中等亮度值。

>> imshow(f,[]) %可以将数组f的最小值设置为low,将其最大值设置为high。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-08a6ByYr-1572781049083)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\89bc57a66d6542328a2265ab71fbcfb7\clipboard.png)]

当使用imshow显示另一幅图像时,MATLAB会在屏幕上用新图像替换就图像。此时为了保持第一幅图像并同时显示第二幅图像,可以使用figure函数:

>> figure,imshow(f)

另一种常用但是只适用于JPEG格式的图像函数imwrite:

>> imwrite(f,‘filename.tif’) %将图片f保存到当前工作路径下,图片名字 filename,tif表示图片类型。

>> imwrite(f,‘filename’,‘tif’) % 解释同上

>> imwrite(f,‘filename.tif’,‘quality’,q) %q是一个在0到100之间的整数,q越小,图像的退化就越严重。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z0shwjIU-1572781049083)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\00192dba4ed24bcb82c152f3f9adedc0\clipboard.png)]

imfinfo函数的使用

获取图像文件的其他详细信息,可以使用imfinfo,语法结构为:

imfinfo filename %filename:存储在磁盘中的图像的全名

>>imfinfo 1.jpeg %获取图片1.jpeg的详细信息

>> k = imfinfo(‘1.jpeg’); %将由命令imfinfo产生的所有信息存入变量k

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6es7RKKj-1572781049083)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\bcc612209a3c4e1c98498bd5b9233c50\clipboard.png)]

注:FileSize:以字节为单位 ;

原图Size = (width * Height * bitdepth)/8;

压缩比 = 原图Size/FileSize;

后期将定期更新关于《数字图像处理-MATLAB版》以及《数字图像处理》的内容,
你的关注就是我最大的动力:
在这里插入图片描述在这里插入图片描述

  • 9
    点赞
  • 2
    评论
  • 51
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页

打赏作者

程序媛说事er

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值