MATLAB实现图像的读取、写入、显示
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)]](https://i-blog.csdnimg.cn/blog_migrate/ff4b0b0c25e2d16c8f681d982f263e18.png)
在IPT文档中,将图b中的坐标称为像素坐标。IPT还采用另一种较少使用的坐标约定,称为空间坐标,这种坐标使用x来表示列,使用y来表示行。与上述的x、y恰好相反。(后期将不使用IPT坐标)
3.图像的矩阵表示
数字化图像函数表示:等式右边是由定义给出的一幅数字图像,该数组的每一个元素都称为像元、图元或像素。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hJf2hnjU-1572781049079)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\052d5d3f2df34048a043ea219077190b\clipboard.png)]](https://i-blog.csdnimg.cn/blog_migrate/29195657220e2361713f2da4a7a478e1.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)]](https://i-blog.csdnimg.cn/blog_migrate/a23f7c1203ddc2e03df28478ac4c772e.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)]](https://i-blog.csdnimg.cn/blog_migrate/e69d2f4178d0118cb71275be88813b34.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x1LTgYMn-1572781049080)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\65c08d0db17943168844fd70ccf9268a\clipboard.png)]](https://i-blog.csdnimg.cn/blog_migrate/ffa07b30373ab2753bb7cd693598211a.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxhLL0F8-1572781049081)(D:\JANE\陈红\graduate student-文献\有道云笔记\qqB84DDC3FDD641F01D5F1FE1F13BFA59A\366b6b72446e434ea508747030dbac61\clipboard.png)]](https://i-blog.csdnimg.cn/blog_migrate/2dc1a419388c1d0f71b4470ab6d9c6f0.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)]](https://i-blog.csdnimg.cn/blog_migrate/2c7b2c00c74d8c4ac1a61e4bc6429d73.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)]](https://i-blog.csdnimg.cn/blog_migrate/7dbe9efc50339a8735df6fa73bb208eb.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)]](https://i-blog.csdnimg.cn/blog_migrate/b457649edc0e92c3331201a09796e495.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)]](https://i-blog.csdnimg.cn/blog_migrate/92b1689704dcfa65e337b9f2cb15ae84.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)]](https://i-blog.csdnimg.cn/blog_migrate/7d97e2663df98872ed98ec0d7f7a4453.png)
注:FileSize:以字节为单位 ;
原图Size = (width * Height * bitdepth)/8;
压缩比 = 原图Size/FileSize;
后期将定期更新关于《数字图像处理-MATLAB版》以及《数字图像处理》的内容,
你的关注就是我最大的动力:

更多推荐

所有评论(0)