第一部分:MATLAB及图像处理基础
第一章:MATLAB基础知识
第二章:MATLAB矩阵及其运算
第三章:MATLAB图像处理基础
markdown页面内跳转:https://blog.csdn.net/qiangzhenyi1207/article/details/79170072#1
命令 | 功能 |
---|---|
clc | 擦去一页命令窗口,光标回到屏幕的左上角 |
clear | 清除工作空间中所有的变量 |
clear all | 从工作空间清除所有变量和函数 |
clear 变量名 | 清除指定的变量 |
clf | 清除图形窗口内容 |
delete <文件名> | 从磁盘中删除指定的文件 |
help<命令名> | 查询所示命令的帮组信息 |
which<文件名> | 查找指定文件的路径 |
who | 显示当前工作空间中所有变量的一个简单列表 |
whos | 列出变量的大学,数据格式等详细信息 |
what | 列出当前目录下的.m文件和.mat文件 |
load name | 下载name文件中的所有变量到工作空间 |
load name x y | 下载name文件中的变量x,y到工作空间 |
save name | 保存工作空间变量到文件name.mat中 |
save name x y | 保存工作空间变量x,y到文件name.mat中 |
pack | 整理工作空间内存 |
size(变量名) | 显示当前工作空间中变量的尺寸 |
length(变量名) | 显示当前工作空间中变量的长度 |
Home或Ctrl+A | 光标移动到行首 |
End或Ctrl+E | 光标移动到行尾 |
Esc或Ctrl+U | 清除一行 |
Del或Ctrl+D | 清除光标后字符 |
Back Space 或 Ctrl +H | 清除光标前字符 |
Ctrl+K | 清除光标至行尾字 |
Ctrl+C | 中断程序运行 |
4、M文件编辑窗口
直接在命令行窗口调用edit即可,也可使用图像化界面
调试功能:
(1)设置或清除断点:使用快捷键F12
(2)执行:使用快捷键F5
(3)单步执行:快捷键F10
(4)step in:当遇见函数时,进入函数内部,使用快捷键F11
(5)step out:执行流程跳出函数,使用快捷键shift + F11
5、帮助系统窗口
常用的获取帮助信息命令有:help,demo,doc,who,whos,what,which,lookfor,helpbrowser,helpdesk,exit,web等。
如which函数是用来进行函数定位的
6、图像窗口
图形窗口是用来显示MATLAB所绘制的图形,这些图形既可以是二维图形,也可以是三维图形。
操作:新建-图形
或直接用命令:figure,imshow \ plot等
在命令行窗口中获取帮助信息的主要命令为help和lookfor以及模糊寻找。
1、help命令
help:会显示当前的帮助系统中所包含的所有项目
help 函数名:可以了解函数的具体用法
当用户不知道一些函数的确切名称,此时help函数就无能为力了,但可以使用lookfor函数方便地解决这个问题
2、模糊寻找
Matlab还提供一种模糊寻找的命令查询方法,只需在命令行窗口输入命令的前几个字母。
Matlab在使用一个变量时,可以直接对该变量进行赋值并运算,而不需要事先对变量的类型及大小进行定义。
1、数值与变量
科学计数法:1.26e3=1.26*10^3
虚数的扩展名:i和j
在一般情况下,matlab内部每一个数据元素都是用双精度数来表示和存储的,数据输出时用户可以用format命令设置或改变数据输出格式。
2、变量
(1)变量名区分大小写
(2)变量名最多包含63个字符,如果超出限制范围,则会忽略后边的字符
(3)变量名必须以字母开头,后可以跟数字、字母、下划线
(4)不允许出现标点符号
(5)关键字不能作为变量,iskeyword
在matlab中,符号数学工具箱(symbolic Math Toolbox)用于实现符号运算。
数值运算过程中,参与运算的变量都是被赋值的数值变量。
符号运算的整个过程中,参与运算的都是符号变量,即使在符号运算中所出现的数字也按符号变量处理。
符号常量计算的结果是精确的数学表达式,而数值常量是进行约分后的常数。
符号计算:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4296365.html
sym(‘常量’):创建符号常量
如:顺序结构、判断语句、分支语句、循环语句及其他流程控制语句
1、数据的输入与输出
input() 数据输入
格式:A=input(提示信息,选项)
选项默认为变量,‘s’为字符串
disp() 数据输出
格式:disp(输出项)
2、顺序结构
3、判断语句if 表达式1 执行程序块1 elseif 表达式2 执行程序块2 elseif 表达式3 执行程序块3 ...... else 执行程序块 end
4、分支语句
在matlab中,还提供了另一种多选择语句为分支语句
分支语句结构如下:switch 分支语句 case 条件语句 执行程序块 case {条件语句1,条件语句2,条件语句3,...} 执行程序块 otherwise 执行程序块 end
5、for循环语句与while循环语句
for循环语句for index=初值:增量:终值 语句组A end
while循环语句
while表达式 执行程序块 end
1、矩阵的创建
matlab创建矩阵有4个方法:
(1)直接输入法
(2)载入外部数据文件
(3)利用matlab内置函数
(4)利用M文件编辑
1)直接输入法:
创建矩阵:
矩阵元素必须在“【】”内;
矩阵的同行元素之间用空格(或“,”)隔开;
矩阵的行与行之间用“;”隔开。
2)载入外部数据文件
3)利用matlab内置函数(ones() zeros() eye() rand())
4)利用M文件编辑(纯数据文件)
在matlab中,矩阵寻访主要有下标元素访问、单元素访问和多元素访问
1、下标元素访问:
matlab有双下标和单下标两种,双下标就是(行,列),单下标就是默认将所有元素按照从上到下,行从左到又排成一列,只需要使用一个下标索引就可以定位矩阵中的任何一个一个元素。
sub2ind(size(A),4,2):用于双下标计算单下标
ind2sud(size(A),13):用于单下标计算双下标
2、单元素访问
即指定矩阵中元素所在的行和列
3、多元素访问
矩阵多元素的访问,包括访问该矩阵的某一行或某一列的若干元素、整行或整列元素、若干行或若干列的元素以及矩阵所有元素等。
(1)A(e1:e2:e3):取A中的e1元素到e3元素,步长为e2
(2)A([m n 1]):按列取A中的第m个、n个和第一个元素
(3)A(:,j)表示取A矩阵第j列的所有元素
(4)A(i,:)表示A矩阵第i行的全部元素
(5)A(i:i+m,:)表示取A矩阵第i~i+m行的全部元素
(6)A(:,k:k+m)表示取A矩阵第k~k+m列的全部元素
(7)A(i:i+m,k:k+m)表示取A矩阵第ii+m行内,并在第kk+m列内的所有元素
(8)A(end):取矩阵的最后一个元素
水平拼接:C=[A B]或C=[A ,B]
垂直拼接:C=[A ;B]
在matlab中,除了使用矩阵拼接符[],还可以使用矩阵拼接函数执行。
(1)C=cat(dim,A,B):按照dim指定的方向连接矩阵A和B,构造矩阵C。
dim:1水平拼接,2垂直拼接,3三维数组
(2)B=repmat(A,m,n):repmat函数建立一个大矩阵B,B是由矩阵A的备份拼接而成的,纵向摆m个,横向摆n个。
(3)horzcat(A1,A2,…):对矩阵进行水平拼接
(4)vercat(A1,A2,…):对矩阵进行垂直拼接
(5)blkdiag(A,B,C,…):对输入的矩阵A,B,C,…构造一个块对角矩阵T。
矩阵的运算包括:+ - * /(右除) (左除) ^(乘方)
1、矩阵的加减运算:
两个矩阵相加减是指有相同行和列的两矩阵的对应元素相加减。
2、矩阵的乘除运算
矩阵乘法需要被乘矩阵的列数与乘矩阵的行数相等
矩阵除法运算:\和/分别表示左除和右除
A\B等效于A的逆左乘B矩阵
A/B等效于A的逆右乘B矩阵
3、矩阵的乘方
做乘方的矩阵必须是方阵
4、按位运算
矩阵的按位运算定义为矩阵各元素的运算。
按位乘(.*)按位右除(./) 按位右除(.\)的两个操作数是大小相同的数值数值,或者其中之一为标量
5、矩阵的行列式与秩
矩阵的行列式是一个数值,矩阵线性无关的行数与列数称为矩阵的秩,
det():用于求方阵A所对应的行列式的值
rank():用于求矩阵的秩
6、矩阵的逆与迹
inv():用于求方阵的逆矩阵
trace():用于求矩阵的迹
7、矩阵的范数及其计算函数
8、矩阵的特征值与特征向量
9、矩阵的超越函数
Matlab支持以下几种图像文件格式:
(1)PCX格式
(2)BMP格式
(3)HDF格式
(4)JPEG格式
(5)TIFF格式
(6)XWD格式
Matlab中,一幅图像可能包含一个数据矩阵,也可能包含一个颜色映射表矩阵,Matlab有四种基本的图像类型。
(1)索引图像:包括图像矩阵与颜色图数组,其中,颜色图数组是按图像中颜色值进行排序后的数组。(图像矩阵的值就是颜色图中的索引)
(2)灰度图像:矩阵可以为双精度类型,其值域为【0,1】,也可以是uint8类型,其数据范围为【0,255】。矩阵的每个元素代表不同的亮度或灰度级。
(3)二值图像
(4)RGB图像:与索引图像不同的是,rgb图像的亮度值直接存在在图像数组中。
1、图像文件的查询与读取
imfinfo():加上文件及其完整路径名来查询一个图像文件的信息
imread():用于图像文件读取
2、图像文件的存储与数据类型转换
IMwrite():还可以转换存储类型
im2double():
im2uint8():
im2uint16():
3、图像显示
image函数是matlab中显示图像的基本手段,该函数还产生了图像对象的句柄,并允许进行对象的属性设置。
image(x,y,C):在(x,y)的位置显示C
imagesc():将数据自动比例化,以全色图的方式显示
imshow():能自动设置句柄图像的各种属性
colorbar():将颜色条添加到坐标轴对象中,如果该坐标轴包含一个图像对象,则添加的颜色条将指示出改图像中不同颜色的数据值。
subplot(行,列,位置):显示多张图像
多帧图像
matlab支持的多帧图像文件格式是HDF和TIFF,一旦被读入MATLAB,其图像帧数会在数组第4维中保存。size()的第四个值就是了。
montage():可以使多帧图像一次显示
immovie():将多帧图像以动画的形式显示
wrap():纹理映射是一种将二维图像映射到三维图形表面的一种显示技术[x,y,z]=sphere(50); %定义一个球体 warp(x,y,z,im); %将二维图像映射到球体上
zoom:可以将图像或二维图形进行放大或缩小显示
zoom on:用于打开缩放模式
zoom off:用于关闭该模式
zoom in:用于放大局部图像
zoom out:用于缩小图像
在对图像进行处理时,有时候对图像的类型有特殊的要求,例如,在对索引图像进行滤波时,必须把它转换为RGB图像,否则仅对图像的下标进行滤波,得到的是毫无意义的结果。
1、dither函数 {dither:踌躇,发抖}
dither函数:实现对图像的抖动。
颜色抖动:
即改变边沿像素的颜色,使像素周围的颜色近似于原始图像的颜色,从而以空间分辨率来换取颜色分辨率。
dither即可通过颜色抖动来增强输出图像的颜色分辨率
2、im2bw函数
im2bw函数:将图像转换为二值图像
BW=im2bw(I,level)
3、mat2gray函数
mat2gray函数:用于将数据矩阵转换为灰度图像
4、gray2ind函数与grayslice函数
gray2ind函数:用于灰度图像或二值图像向索引图像转换
【X,map】=gray2ind(I,n):按照指定的灰度级n把灰度图像I转换成索引图像X,map为gray(n),n的默认值为64。
grayslice函数:用于设定阈值将灰度图像转换为索引图像
5、ind2gray函数与ind2rgb函数
将索引图像转换为灰度图像,rgb图像
6、rgb2gray函数与rgb2ind函数
将rgb图像转换为灰度图像,索引图像
颜色模型:
1、rgb2hsv函数与hsv2rgb函数
2、rgb2ntsc函数与ntsc2rgb函数
3、rgb2ycbcr函数与ycbcr2rgb函数