图像处理的MATLAB基础
一、MATLAB在图像处理领域的优点
优秀的矩阵运算能力
在图像处理教程(一) 中我们提到每一张图片都可以看做是一个由像素点组成的矩阵,黑白图片用一个二维矩阵就可以表示,彩色图片则要用三个二维矩阵,分别表示RGB三个颜色通道。
而MATLAB是十分擅长处理矩阵运算的科学计算软件,所以MATLAB处理图像信息就格外方便。
例如:一维向量可以表示为声音信号在时域上的离散采样信息,即可以表示一个声音信号;二维矩阵自然可以表示图像信息。
MATLAB内置了许多函数可以对矩阵做各样的处理,如sum()函数,mean()函数,imread(),imwrite()函数等等。
友好的编程语言与操作界面
不像其他高级语言(如C语言),在使用变量前必须预先定义变量,声明其数据类型,MATLAB可以直接对任意变量展开操作而不需要预先声明,MATLAB会自动为变量分配内存,确定其数据类型等。这无疑为我们编写程序带来了极大方便。
MATLAB的界面也十分友好,它既支持我们用MATLAB语言编写脚本、函数文件完成特定工作,也支持交互式的操作形式,比如种类丰富的工具箱Toolbox,许多工作动动鼠标即可完成。
二、MATLAB图像处理相关函数
本节内容的主要内容是向大家介绍一些常用的、必备的MATLAB图形处理函数。熟练掌握这些函数的用法对于以后的工作有着莫大的好处。下面我们从读取图片开始。
读取图片
myimage = imread('newborn.tif');
myimage是一个矩阵,存储着newborn.tif图片的像素信息;在imread( )函数中,以字符串的形式给出图片的名称。如果MATLAB的工作路径和图片存放的路径不一致,则要写成如下的形式,不然MATLAB会给出找不到图片的错误。
imread ('D:/dataset/image/newborn.tif');
% 注意语句后面的分号不要省略,否则我们的command window会被庞大无比的像素矩阵充满
显示图片
在读入整张图片之后,我们可以用imshow()命令将图片显示出来。
figure(1);
I = imshow(myimage);
title('newborn.tif');
为了查看图片上某点的坐标和RBG值(或者灰度值),我们可以使用下面的函数:
impixelinfo; %注意,pixval on早在MATLAB 2008a就已经淘汰了
输入上面命令后,图片的左下角会出现一行信息,随着鼠标的滑动,显示不同点的左边和RGB信息(或灰度值信息)。
使用如下命令可以调整figure窗口的背景颜色:
% 调整背景为绿色
whitebg ('g');
whitebg ('green');
whitebg ([0 1 0]);% 绿色的RGB值
% 其他颜色还有 Cyan blue white magenta yellow red black 等等
获取图片信息
size(myimage)% 可以显示矩阵的大小尺寸,几行几列几页
myimage(100,200,2)% 显示第2页第100行第200列的值
impixel(myimage,100,200)% 显示myimage图片在100行200列处的色彩值
imfinfo('name_of_img.jpg');% 可以显示图片的详细信息