MATLAB是一款数学软件,是MatrixLaboratory(矩阵实验室)的缩写。它把数学中的矩阵和线性代数等知识和传统的计算机编程语言结合到了一起,并内置了丰富的库,让很多算法轻松实现仿真化成为了可能。比如,你通过数学写了一个二维图像灰度变换的函数公式,可以在matlab下轻松地像以C语言math情况下去描述它,并实现赋值计算,再通过它内置的图形计算库还可以把你的算法完完全全仿真出来。
MathWorks公司历史悠久、团队强大、产品专一。它的matlab产品可用于多种学术研究专业,这样首屈一指的软件使得它在全世界都十分流行。也是数字图像处理仿真的好帮手。本文送给从未接触过matlab的朋友们。
关于数图处理的一些前景知识;
图像处理系统基础设计的一个重要特点是测试和实验的有效程度。系统方法和快速原型候选解决方案的能力在减少运算开销和时间方面起着重要的作用。
一幅图像可以定义为一个二维函数f(x,y),其中x和y是空间坐标,而f在任意坐标(x,y)处的幅度称为图像在该点处的亮度和灰度。彩色图像是由多个单色图像组合而成。当x,y和f的幅值都是有限的离散值时,称该函数为数字图像。数字图像是由有限数量的数组组成的,每个元素都有一个特殊的位置和数值。这些元素称为图片元素(picture element)、图像元素(image element)和像素(pixels\pels)。
数字图像处理分为低中高三种处理: 低级处理包括原始操作(降低噪声、对比度增强..),输入输出都是图像。 中级处理(分割..),把图像分为区域或目标,然后对目标进行描述。输入是图像,输出是图像提取出的属性。 高级处理通过执行通常与人类视觉相关的感知函数,来对识别的对象进行总体确认。
matlab与数字图像处理的一些关系;
一幅图像可定义为一个二维数组f(x,y),其中x和y是空间(平面)坐标。图像关于x坐标、y坐标和幅度是连续的。将坐标值数字化称为采样,将幅值数字化称为量化。当x、y和幅值f都是有限的、离散的量时,我们称该图像为数字图像。
采样和量化得到的是一个实数矩阵。假设对一幅图像f(x,y)采样后得到一个M行、N列的图像。我们可以称这幅图像的大小是MxN,坐标的值是离散量。
这样,一幅二维数字图像就可以把它看做成一个矩阵函数f(x,y),把阵列的每个元素赋值就可以显示出东西。这个阵列的每个元素都称为图像元素、图画元素或像素。一个1N的矩阵被称为一个行向量,一个M1的矩阵被称为一个列向量。一个1*1的矩阵则被称为标量。
把二位数字图像看成矩阵,这样我们就可以轻松地在matlab中做各种仿真尝试惹。
matlab数据的表示和运算;
matlab的命令行(>>)窗口是我们操作matlab的一个重要媒介。
我们可以进行一些简单计算,比如把2+2的值赋给变量a。
1
|
|
如果输入的表达式后面加上分号;的话,那么结果就不会显示出来。还有,matlab的变量名是对大小写字母敏感的。它主要支持以下数值运算符:
1
|
|
同时,matlab中还提供一些预定义变量可以直接使用。
1 2 3 4 5 6 7 8 9 10 |
|
matlab矩阵的表示和运算;
我们可以指定元素建立向量。创建一个1*4的行向量:
1
|
|
也可以增加向量,变成1 3 5 7 8:
1
|
|
用等间隔元素建立向量:
1
|
|
这个命令创建了一个1*101的向量,元素为0,0.1,0.2,…,10。这个表达式中前面的数字表示初值,后面的数字表示终值,中间的数字表示增量。
函数linespace和logspace也可用于创建向量;
1 2 3 4 |
|
矩阵可以通过输入行列元素获得:
1 2 3 |
|
矩阵特定位置元素可以通过下面的命令赋值:
1
|
|
用下面几个命令可以定义一些特殊矩阵:
1 2 3 4 |
|
要得到向量或矩阵的规模可以用下面这两个函数:
1 2 |
|
matlab部分基本常用功能;
波形的绘制:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
数据的输入和输出:
1 2 3 4 5 |
|
其它常用matlab命令:
1 2 3 4 5 6 7 |
|
你还可以尝试在安卓或ios端安装matlab官方的远程软件操控电脑端的matlab,需要局域网环境和较新版本的matlab。
1 2 3 |
|
matlab下的数字图像处理快速上手;
读入数字二维图像文件到matlab变量f:
1
|
|
在新的图形窗口显示变量f中的图像:
1
|
|
写入图像write函数(调整质量的范例):
1 2 |
|
matlab提供惹一个图像处理工具箱,它把matlab数值计算环境扩展到图像处理的函数合集。
工具箱支持4种图像类型:
灰度级图像(Gray-scale images)
二值图像(Binary images)
索引图像(Indexed images)
RGB图像(RGB images)
类和图像类型:
1 2 3 4 5 6 7 8 9 10 |
|
类uint8和logical广泛地用于图像处理,浮点类double和single用于计算灰度的操作。
灰度级图像:一幅灰度级图像是一个数据矩阵,矩阵的值表示灰度的浓淡。
二值图像:一幅二值图像是一个取值只有0和1的逻辑数组。使用函数logical可将数值数组转换为二值图像。
1 2 |
|
matlab下的M文件;
M文件是大量MATLAB命令的集合,它以文本文件的形式存储,文件后缀".m"。M文件可以是一个有输入、输出变量的函数,也可以是一系列的命令脚本。可以直接放到matlab里执行。
引例,一个计算两数之和的函数:
1 2 3 4 |
|
1 2 3 4 |
|
1 2 3 4 5 6 7 8 9 |
|
matlab函数tic和toc可用于测量函数执行的时间。
1
|
|
函数timeit可用于得到函数调用的可靠的可重复的时间测量。
1
|
|
利用矩阵和向量形式写的M文件效率比较高。循环和if语句也可以在matlab中使用,但是计算效率较低,所以要谨慎使用。
向量化说明和函数meshgrid的介绍。
我们用matlab基于如下公式写函数来创建一幅合成图像:f(x,y)=Asin(u0x+v0y)
for循环版:
1 2 3 4 5 6 7 8 9 |
|
meshgrid向量版:
1 2 3 4 5 6 |
|
检验:
1 2 3 |
|
向量化形式运行的时间约可少50%。
本地磁盘姬
ohayou.aimo.moe
微博:@本地磁盘姬碟酱
Twitter:本地磁盘姬
2019年07月16日