精通MATLAB图像处理

第一部分:MATLAB及图像处理基础
第一章:MATLAB基础知识
第二章:MATLAB矩阵及其运算
第三章:MATLAB图像处理基础


markdown页面内跳转:https://blog.csdn.net/qiangzhenyi1207/article/details/79170072#1


第一章:MATLAB基础知识

#### 1.1 MATLAB概述与桌面操作 >1、matlab将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中。 >2、matlab分别在每年的3月和9月进行产品发布,3月发布的产品为a,9月发布的产品为b。 >3、命令行窗口常用命令
命令 功能
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等

1.2 查询帮助命令

在命令行窗口中获取帮助信息的主要命令为help和lookfor以及模糊寻找。
1、help命令
help:会显示当前的帮助系统中所包含的所有项目
help 函数名:可以了解函数的具体用法
当用户不知道一些函数的确切名称,此时help函数就无能为力了,但可以使用lookfor函数方便地解决这个问题
2、模糊寻找
Matlab还提供一种模糊寻找的命令查询方法,只需在命令行窗口输入命令的前几个字母。

1.3 Matlab变量与表达式

Matlab在使用一个变量时,可以直接对该变量进行赋值并运算,而不需要事先对变量的类型及大小进行定义。
1、数值与变量
科学计数法:1.26e3=1.26*10^3
虚数的扩展名:i和j
在一般情况下,matlab内部每一个数据元素都是用双精度数来表示和存储的,数据输出时用户可以用format命令设置或改变数据输出格式。
2、变量
(1)变量名区分大小写
(2)变量名最多包含63个字符,如果超出限制范围,则会忽略后边的字符
(3)变量名必须以字母开头,后可以跟数字、字母、下划线
(4)不允许出现标点符号
(5)关键字不能作为变量,iskeyword

1.4 符号运算

在matlab中,符号数学工具箱(symbolic Math Toolbox)用于实现符号运算。
数值运算过程中,参与运算的变量都是被赋值的数值变量。
符号运算的整个过程中,参与运算的都是符号变量,即使在符号运算中所出现的数字也按符号变量处理。
符号常量计算的结果是精确的数学表达式,而数值常量是进行约分后的常数。
符号计算:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/4296365.html
sym(‘常量’):创建符号常量

1.5 程序流程控制语句

如:顺序结构、判断语句、分支语句、循环语句及其他流程控制语句
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

第二章:MATLAB矩阵及其运算

2.1 矩阵的创建

1、矩阵的创建
matlab创建矩阵有4个方法:
(1)直接输入法
(2)载入外部数据文件
(3)利用matlab内置函数
(4)利用M文件编辑
1)直接输入法:
创建矩阵:
矩阵元素必须在“【】”内;
矩阵的同行元素之间用空格(或“,”)隔开;
矩阵的行与行之间用“;”隔开。
2)载入外部数据文件
3)利用matlab内置函数(ones() zeros() eye() rand())
4)利用M文件编辑(纯数据文件)

2.2 矩阵的寻访

在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):取矩阵的最后一个元素

2.3 矩阵的拼接

水平拼接: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。

2.4 矩阵的运算

矩阵的运算包括:+ - * /(右除) (左除) ^(乘方)
1、矩阵的加减运算:
两个矩阵相加减是指有相同行和列的两矩阵的对应元素相加减。
2、矩阵的乘除运算
矩阵乘法需要被乘矩阵的列数与乘矩阵的行数相等
矩阵除法运算:\和/分别表示左除和右除
A\B等效于A的逆左乘B矩阵
A/B等效于A的逆右乘B矩阵
3、矩阵的乘方
做乘方的矩阵必须是方阵
4、按位运算
矩阵的按位运算定义为矩阵各元素的运算。
按位乘(.*)按位右除(./) 按位右除(.\)的两个操作数是大小相同的数值数值,或者其中之一为标量
5、矩阵的行列式与秩
矩阵的行列式是一个数值,矩阵线性无关的行数与列数称为矩阵的秩,
det():用于求方阵A所对应的行列式的值
rank():用于求矩阵的秩
6、矩阵的逆与迹
inv():用于求方阵的逆矩阵
trace():用于求矩阵的迹
7、矩阵的范数及其计算函数
8、矩阵的特征值与特征向量
9、矩阵的超越函数

第二章:MATLAB图像处理基础

3.1 常用图像的文件格式与类型

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图像的亮度值直接存在在图像数组中。

3.2 图像处理的基本函数

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:用于缩小图像

3.3 图像类型的转换

在对图像进行处理时,有时候对图像的类型有特殊的要求,例如,在对索引图像进行滤波时,必须把它转换为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图像转换为灰度图像,索引图像

3.4 Matlab的颜色模型转换

颜色模型:
1、rgb2hsv函数与hsv2rgb函数
2、rgb2ntsc函数与ntsc2rgb函数
3、rgb2ycbcr函数与ycbcr2rgb函数

你可能感兴趣的:(精通MATLAB图像处理)