资源描述
,实验一: Matlab图像处理工具箱,针对不同的领域需要不同的图像处理算法, 因此掌握一门高级语言来编写自己的图像处理 程序,MATLAB无疑是一个不错的选择。,2.1 Matlab简介,Matlab (Matrix Laboratory) 是当今很流行的 科学计算软件。信息技术、计算机技术发展到今 天,科学计算在各个领域得到了广泛的应用,在 诸如控制论、时间序列分析、系统仿真、图像信 号处理等方面产生了大量的矩阵及其他计算问 题。Matlab软件适时推出,为人们提供了一个 方便的数值计算和动态仿真平台。,Matlab简介-特点,1 高效、简单的程序环境 2 强大的数值运算功能 3 丰富的工具箱,Matlab是一个交互式的系统,其开发环境是MATLAB语言的基础和核心部分,全部功能都能在开发环境中实现。,提供大量的矩阵及其它运算函数,方便地进行一些很复杂的计算,而且运算效率极高。Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握。,根据各专门领域中的特殊需要提供了许多可选的工具箱,已有涉及数学、控制、通信、信号处理、图像处理、经 济、地理等多种学科的20多种Matlab工具箱投入应用。,可以在提示符后键入各种命令,变量管理中心,可以显示变量的名称、尺寸、字节和类别等信息。,提供当前路径下文件的操作。,显示已执行过的命令及相应时间。,系统中全部程序和帮助文件的管理和启动功能。,Matlab简介-开发环境,Matlab简介-M文件,Matlab通常使用命令驱动方式,当单行命令输 入时,Matlab立即处理并显示结果,同时将运行 说明和命令存入历史命令窗口。Matlab语句的磁 盘文件称作M文件,因为这些文件名的末尾是.M 形式。 M文件有两种类型:命令(Script)文件 函数(function)文件,2.1 MATLAB基础语法,2.1.1 变量名的命名规则 1.必须以字母开头,后可跟字母,数字和下划线 2.区分大小写 3.不超过31个字符,Matlab常用命令,clear 工作空间中清除所有变量,clc 清除命令窗口中显示内容,help 获得在线帮助,命令 功能,clf 清除图形窗口内容,who 列出当前工作空间中的变量,whos 列出当前工作空间中的变量及信息,2.2 Matlab常用的基本命令,(1) 全0矩阵 A=zeros(n): 生成nn的全0矩阵; A=zeros(m,n): 生成mn的全0矩阵; A=zeros(a1,a2,a3,): 生成a1a2a3的全0 矩 A=zeros(size(B): 生成与矩阵B大小相同的全0矩阵。,1. 常用矩阵的生成,(2) 全1矩阵 A=ones(n): 生成nn的全1矩阵; A=ones(m,n): 生成mn的全1矩阵; A=ones(m,n): 生成mn的全1矩阵; A=ones(a1,a2,a3,): 生成a1a2a3的全1矩阵; A=onse(size(B): 生成与矩阵B大小相同的全1矩阵。,(3) 单位矩阵 A=eye(n): 生成nn的单位矩阵; A=eye(m,n): 生成mn的单位矩阵; A=eye(m,n): 生成mn的单位矩阵; A=eye(size(B): 生成与矩阵B大小相同的单位矩阵。,(4) 均匀分布的随机矩阵 A=rand(n): 生成nn的随机矩阵; A=rand(m,n): 生成mn的随机矩阵; A=rand(m,n): 生成mn的随机矩阵; A=rand(a1,a2,a3,): 生成a1a2a3的随机矩阵; A=rand(size(B): 生成与矩阵B大小相同的随机矩阵。,* x=1 2 3 4 5 %产生15的数组 * b=x(3) %寻访数组x的第3个元素 * b=x(1 2 5) %寻访x的第1、2、5元素 * b=x(1:3) %寻访前三个元素 * b=x(3:end) %寻访第三个元素到最后一个 * b=x(find(x3) %由大于3的元素构成数组 * b=x(3:-1:1) %由前3个数倒排成数组 * b=x(1 2 3 4 4 3 2 1) %对元素的重复访问,2. 寻访矩阵中的数据,* x=1,2,3;4,5,6;7,8,9 %产生33的矩阵 * b=x(find(x4) %大于4的元素构成数组 * x(2,2)=10 %第2行第2列值改为10 * x(3,:)=20 %第3行的值改为20 * x=ones(5) %产生55全为1的矩阵 * x(2:4,2:4)=0 %第2、3、4行的第2、3、4列元素改0,3. 修改数据,A=3:6;1:4 %产生24的矩阵 s=size(A) %返回s为行数 列数 r,c=size(A) %返回r为行数,c为列数 r=size(A,1) %只返回行数 c=size(A,2) %只返回列数 n=length(A) %返回行数、列数最大者,5. 矩阵的规模,2.3 图像处理工具箱简介,Matlab是一种基于向量(数组)而不是标量的高级程序语言,因而Matlab从本质上就提供了对图像的支持。数字图像实际上是一组有序离散的数据,使用Matlab可以对这些离散数据形成的矩阵进行一次性的处理。,Matlab对图像的处理功能主要集中在它的图像处理工具箱(Image Processing Toolbox)中。,图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、数学形态学处理等图像处理操作。,图像处理工具箱主要有:, Image Acquisition Toolbox Image Processing Toolbox Signal Processing Toolbox Wavelet Toolbox Statistics Toolbox Bioinformatics Toolbox Matlab Compiler Matlab COM builder,2.4 Matlab中的图像类型及类型转换,Matlab中的数字图像是由一个或多个矩阵表示的,Matlab强大的矩阵运算功能完全可以应用于图像,那些适用于矩阵运算的语法对Matlab中的数字图像同样适用。,2.4.1 图像和图像数据,缺省:double (64位浮点数) uint8(无符号8位整型),2.4.2 图像处理工具箱所支持的图像类型,图像处理工具箱支持4种图像类型,它们是: 真彩色图像(RGB images) 索引色图像(index images) 灰度图像(intensity images) 二值图像(binary images) 此外,Matlab还支持由多帧图像组成的图像序列。,2.4.4 图像文件的显示,Matlab 7.0图像处理工具箱提供了一个高级的图像显 示函数imshow。其语法格式如下, 灰度图像 imshow(I) imshow(I, n) imshow(I, low high) ,其中n为灰度级数目,缺省值为256。low high为图像数据的值域。,2. 灰度图像及其显示,一幅灰度图像是一个数据矩阵 I,其中数据均代表了 在一定范围内的颜色灰度值。Matlab 把灰度图像用数 据矩阵的形式进行存储,每个元素则表示了图像中的每 个像素。矩阵元素可以是doudle、uint8整数类型。 多数情况下,灰度图像很少和颜色映像表一起保存, 但在显示灰度图像时,Matlab 仍然在后台使用系统预 定义的缺省灰度颜色映像表。,(1) 灰度图像显示最基本的调用格式 imshow(I) Matlab 中 imshow函数使用一个灰度级系统调色板 (R=G=B)来显示灰度图像。如果I是double型,若 像素值为0.0,则显示为黑色,1.0则显示为白色,0.0 和1.0之间的像素值将显示为灰影。,imshow函数显示灰度图像,imshow(I, n) 例如:以下语句将显示一幅32个灰度级的图像I。 imshow(I, 32),(2) 使用明确指定的灰度级数目,(3) 某些情况下,可能将一些超出数据惯例范围的数 据显示为一幅灰度图像, 对于double型数组为0,1,对于uint8型数组为 0,255,为了将超过数据范围的数据显示为图像,用户可以直 接定义数据范围,其调用格式如下, imshow(I,low high) 其中low、high分别为数据的最小和最大值。 如果用户使用一个空矩阵 指定数据范围, imshow将 自动进行数据标度。,补充:多幅图像文件的显示,figure,imshow 功能:新建一个图像窗口,用于显示新图像(从而 不让新的图像覆盖原来图像)。,1.创建新的图像窗口,每个图像显示在一个窗口中,调用imshow函数显示图像,如下页图所示。 I=imread(rice.png); J=filter2(1 2;-1 -2,I) ; %用模板1 2;-1 -2对 图像滤波 imshow(I) figure,imshow(J, ),思考:如果没有figure的话,将产生什么结果?,用imshow显示滤波前后的图像,subplot(m,n,k),imshow %绘制并显示m行n 列第k个子图 例: X1=imread(rice.png); X2=imread(coins.png); X3=imread(bag.png); subplot(1,3,1),imshow(X1) subplot(1,3,2),imshow(X2) subplot(1,3,3),imshow(X3),2. 用子图、多个图像显示在一个图像窗口中,子图显示效果,图像的运算,imadd(X,Y); Y可以是另一幅图像,也可以是一个常数。 例1: I=imread(rice.png); J=imread(cameraman.tif); K=imadd(I,J); subplot(1,3,1),imshow(I); subplot(1,3,2) ,imshow(J); subplot(1,3,3),imshow(K), 图像的加法,例2:实现亮度的增加 RGB=imread(greens.jpg); RGB1=imadd(RGB,50); subplot(1,2,1);imshow(RGB); subplot(1,2,2);imshow(RGB1);, 图像的减法,Z=imsubtract(X,Y); 计算X与Y的像素之差,负数将被截取为0。 Z=imabsdiff(X,Y); 计算X与Y的像素之差的绝对值,结果为非负的。,图像的空间变换,将输入图像的像素映射到输出图像的新位置,如调整 图像大小、旋转、剪切等。, 调整图像的大小-imresize,Y=imresize(X,M); 其中M1表示放大,0M1表示缩小。 Y=imresize(X,M N); 产生一个指定的MN大小的图像Y。, 图像的旋转-imrotate,Y=imrotate(X, angle, method); Y=imrotate(X, angle, method, crop); 其中angle为逆时针旋转的角度,method为插值方法,指定crop参数对旋转后的图像进行剪切。,例: I=imread(lena.bmp); J1=imrotate(I,45); J2=imrotate(I,45,crop); subplot(1,3,1),imshow(I); subplot(1,3,2),imshow(J1); subplot(1,3,3),imshow(J2);,
展开阅读全文