对一副图像进行采样之后,可以得到一副M行,N列的图像,我们称这幅图像的大小是M*N。x是从0到M-1的整数,y是从0到N-1的整数。
图像处理工具箱中用(r,c)而不是(x,y)来表示行和列。其次,这个坐标系统的原点是在(r,c)=(1,1),r是从1到M的整数,c是从1到N的整数。同时,工具箱使用一种较少的坐标约定,称为空间坐标,以x表示列,以y表示行。
图像(image)和像素(pixel)这两个术语将用来表示数字图像及其元素。
用imread将图像读入matlab环境中,语法为:
imread('filename')
此处,filename是含有图像文件全名的字符串(包含任何可用的扩展名)。举例:
f=imread('chestxray.jpg');
使用imshow函数在matlab的桌面来显示图像,imshow的基本语法是:
imshow(f)
其中,f是图像数组,举例,从磁盘中读取rose_512.tif的图像并且用imshow函数进行显示:
f=imread('rose_512.tif');
imshow(f);
图窗编号最终显示在得到的图窗的左上部,如果另一幅图像随后用imshow来表示,matlab就用新图像来取代图窗中的图像。为了保留第1幅图像并且输出第二幅图像,可以使用figure函数
figure,imshow(g)
使用imwrite函数将图像写入当前目录下,语法如下:
imwrite(f,'filename');
函数imwrite还可以有其它的参数,具体要取决于要写入的文件格式。我们大部分的工作不是处理JPEG图像就是处理TIFF图像,因此我们把注意力放在这两种格式上。
imwrite(f,'filename.jpg','quality',q);
其中,q是介于0到100的整数,q越小,图像的退化就越严重。
仅仅适用于imwrite的更常用的imwrite语法为:
imwrite(g,'filename.tif','compression','parameter','resolution',[colres rowres])
parameter可以采用下列值:‘none’(指出没有压缩)、‘packbits’(默认的非二值图像)、‘fax3’(仅针对二值图像,为默认值)、‘fax3’(仅针对二值图像)和‘fax4’。
1*2数组[colres rowres]包含两个参数,以每单位的点数给出列分辨率和行分辨率。用单个标量res指定分辨率相当于写成[res,res]
unit8:无符号8比特整数,范围是[0,255],(每个像素一个字节)
logical:值为0和1(每像素一个字节)
工具箱支持4中图像类型:灰度、二值、索引、RGB图像。
灰度图像是数据矩阵,矩阵的值表示灰度的浓淡。当灰度图像的元素是uint8或者是uint16的时候,分别表示范围是[0,255]或者是[0,65535]的整数值。如果是double或者是single类,值就是浮点数。double或者是single灰度图像的值通常被归一化标定为[0,1]范围内,但是也可以使用其他范围的值。
二值图像是取值只有0和1的逻辑数组。用logical函数可以把数值数组转化为二值数组。举例,如果A是由0和1组成的数值数组,那么就可以使用B=logical(A)
来创建逻辑数组B
如果A中含有除了0和1之外的其他元素,那么logical函数可以把非0元素转化为1,将所有0值转化为0.
用来检测数组是否为逻辑类:islogical(C)
使用类转换语法,可以将逻辑数组转化为数值数组:
B=class_name(A)
其中,class_name是im2uint8、imuint16、im2double、im2single或者是im2gray.
im2gray可以将图像转换为标定为[0,1]范围的double类数组
g=imgray(A,[Amin,Amax])
其中,图像g具有范围为0(黑)到1(白)的值。特定参数Amin和Amax使得A中小于Amin的值变为0,大于Amax的值变为1.
如果用g=imgray(A)
可以独立于输入的类,把整个输入值的范围标定为[0,1],这样可以消减裁剪步骤。