十二、影像分析基础
12.1 read and show an image
Read an image:imread()
Show an image:imshow()
示例:
图12-1 imread and imshow函数
图12-2 image matrix函数
其实一张图片有rgb三种颜色,每个点就是一个矩阵的数值,而这个数值就代表着rgb,所以我们操作以一个图片,也就相当于操作一个矩阵内的数值,或者说,修改矩阵内的数值,也就相当于修改图片
那么接下来我们就做一个操作,我们将这个矩阵内行数和列数能被2整除的,将这一行或这一列内的值全部变为0
图12-3 代码
12.2 imageinfo
如果想要查询有关于一张图片的相关信息,可以使用函数imageinfo,其调用格式为:imageinfo(‘string’),其中string为图片的名称(包含后缀名)
示例:
图12-4 imageinfo函数
12.3 imtool
Imtool函数主要是用来查看一个图片的每个像素对应的数值
示例:
图12-5 imtool函数
12.4 image processing
上面讲的都是一些影像的相关知识,接下来要讲的是关于影像的一些处理
12.4.1 immultiply()
immultiply函数的调用格式为:Immultiply(I,x);,其含义是,将图像对应的矩阵I内的所有数值乘以x
示例:
图12-6 immultiply函数
12.4.2 imadd()
Imadd函数的作用是将两张影像相加,其调用格式为:imadd(I,J);,I的含义是一个影像对应的矩阵,J是另一个影像对应的矩阵,但是使用imadd函数有一个限制条件,就是I,J必须是同型的矩阵,否则无法相加
示例:
图12-7 imadd函数
12.4.3 imhist()
imhist()函数的作用是将一个图片的数值分析出来并做成一个柱状图,其调用格式为:imhist(I);
示例:
图12-8 imhist函数
稍微解释一下这个图,横坐标是0-255这没什么说的,纵坐标是频数,表示这个值有多少个
12.4.4 histeq()
通过分析上面的图,我们发现他在某一个区间数值比较集中,而其他数值几乎就没有,这种图像的数值分布并不是很均匀,所以如果我们想要它分布更加均匀,就可以使用histeq函数,起调用格式为:histeq(I);
示例:
图12-9 histeq函数
12.4.5 imrotate()
imrotate函数的作用是旋转一个图像,其调用格式为:imrotate(I,theta,’bilinear’);,theta表示旋转的角度,billinear照写即可
示例:
图12-10 imrotate函数
还有一些对影像的操作,这里就不讲了,下面附一张图,有需要的话读者可以自行百度
图12-11 影像操作
12.4.6 imwrite()
imwrite函数的作用是保存图像,其调用格式为:imwrite(I,’string’);其中,I是保存图像对应的矩阵,string是保存的名字(包含后缀名),有哪些可用的格式呢?见下图
图12-12保存格式