数字图像处理与分析基础
数字图像处理与分析基础
?黄爱民 安向京 骆力
?中国水利水电出版社
?新世纪电子信息与自动化系列课程改革教材
?ISBN7-5084-2930-3
第四章 Matlab图像处理基础
数字图像处理与分析基础
主要内容
? MALTLAB概述
? MATLAB使用中需要注意的问题
? MATLAB图像处理工具箱
? MATLAB图形接口( GUI)简介
数字图像处理与分析基础
4.1 Matlab概述
? 1,MATLAB
? 2、语言特点
? 3,Matlab软件构成
? 4、主要功能
数字图像处理与分析基础
4.1.1什么是 Matlab
? 美国新墨西哥大学 Cleve,Moler博士,
20世纪 70年代后期,Linpack 和 Eispic
的接口程序, Linpack是解线性方程的
Fortran程序库,Eispic是解特征值问题
的 Fortran程序库 。
? 接口程序命名为 MATLAB(即 matrix和
laboratory的前三个字母的组合,意思
是“矩阵实验室”)。
数字图像处理与分析基础
4.1.2MATLAB的特点
? 界面友好,编程效率高
? 语法规则更简单,编程特点更贴近人的思
维,问题的提出和解答只需要用数学方式
表达和描述
? 功能强大
? 集成了数值分析、矩阵计算、信号处理和
图形显示等众多的功能
数字图像处理与分析基础
特点
? 开放性、易扩展性
? 所有的程序都不需要使用低层代码来编写
? 许多新的软件包都是使用者提供的
? 目前随着应用领域的扩大和爱好者的增加,
它的功能越来越强大
数字图像处理与分析基础
4.1.3 Matlab系统的构成
? 主包,SIMULINK以及应用程序构成
? Matlab系统(主包)包括五个部分
? Matlab语言
? Matlab工作环境
? MATLAB图形处理系统
? Matlab数学函数库
? Matlab应用程序接口
数字图像处理与分析基础
1,MATLAB语言
? 一种高级矩阵语言
? 带有独特的数据结构、输入输出、流程
控制语句和函数,并且是面向对象的高
级语言。
? 在工程计算方面具有无可比拟的优异性
能。
? 它集计算、数据可视化和程序设计于一体
? 能将问题和解决方案以用户熟悉的数学符
号表示出来
数字图像处理与分析基础
2,Matlab工作环境
? 命令窗口
? 是 MATLAB提供给用户的操作界面,在命令窗口
中,用户可以实现 MATLAB的各种功能。
? M文件编辑器( M文件是 MATLAB所特有的
使用该语言编写的磁盘文件)
? 是 MATLAB为用户提供的用于编辑 M文件的程序
? M文件调试器
? 用于调试 M文件的程序。
? MATLAB工作空间
? 显示用户在 MATLAB中通过命令行进行操作的变
量集合的窗口。
? 在线帮助文档
数字图像处理与分析基础
3,MATLAB图形处理系统
? 形处理系统提供图形处理功能,用于工
程计算结果的可视化。
? 绘制二维图形
? 绘制三维图形及交互式观看
? 定制图形用户界面
数字图像处理与分析基础
4,Matlab数学函数库
? 既有求和、正余弦计算等简单函数,也有
“线性代数”中常见的各种矩阵运算、信号
分析中的快速傅立叶变换等复杂函数。
? MATLAB数学函数通过两种方式提供给用户:
? (1)内部函数
? MATLAB内部数学函数是一些简单的函数,直接内置于
MATLAB核心中,执行效率较高。
? (2)以 M文件的形式提供的函数
? 这种形式便于 MATLAB不断增强功能,能够运用于越来
越多的领域。
? 执行效率相对低
数字图像处理与分析基础
5,Matlab应用程序接口
? ( API)是一个让 MATLAB语言同 C,
Fortran等其它高级语言进行交互的函数
库,通过动态连接来读写 MATLAB文件。
? ( 1)从 MATLAB中调用 C和 Fortran程序;
? ( 2)从 MATLAB中输入和输出数据;
? ( 3)在 MATLAB和其它应用程序间建立
客户 /服务器关系
数字图像处理与分析基础
4.2 MATLAB使用中需注意的问题
? MATLAB的数据类型
? MATLAB的基本编程
数字图像处理与分析基础
4.2.1 Matlab的数据类型
? 可运算的数据只有两种
? 字符型( uint8),即为无符号数
? 双精度型
? 存储型
? 只能存储数据,而不能参与数学运算
? int8,uint8,int16,uint16,int32、
uint32等,。
? 在基本数据类型的基础上,可以构建单
元数组和结构。
数字图像处理与分析基础
1、矩阵的生成
? 用于乘法运算的初始矩阵通常赋成,1”
矩阵;
? 用于加法运算的初始矩阵,通常赋成
,0”矩阵。
数字图像处理与分析基础
0矩阵与数组
( 1) 0矩阵(矩阵或数组的所有元素为 0)
的生成:
A=zeros(n),生成一个 n个元素均为 0
的行矢量 A;
A=zeros(m,n),生成一个 m行 n列的元
素均为 0的矩阵 A,或用 A=zeros([m n]);
A=zeros(d1,d2,d3,… ) 返回一个维数为
d1?d2?d3?… 的所有元素为 0的数组,或用
A=zeros([d1 d2 d3 … ]);
A=zeros(size(B)),生成一个全 0的 矩阵
A,它的尺寸与另一个矩阵 B一致 。
数字图像处理与分析基础
0数组与矩阵
X=zeros(3)
X=
0 0 0
X=zeros(3,4)
X=
0 0 0 0
0 0 0 0
0 0 0 0
数字图像处理与分析基础
“1”矩阵或数组
( 2) 1矩阵(矩阵或数组的所有元素为 1)的生
成:
A=ones(n),生成一个 n个元素均为 1的行矢
量 A;
A=ones(m,n),生成一个 m行 n列的元素均为
1的矩阵 A,或用 A=ones([m n]);
A=ones(d1,d2,d3,… ) 返回一个维数为
d1?d2?d3?… 的所有元素为 1的数组,或用
A=ones([d1 d2 d3 … ]);
A=ones(size(B)),生成一个全 1的矩阵 A,它
的尺寸与另一个矩阵 B一致。
数字图像处理与分析基础
1矩阵与数组
A=ones(3,3,2)
A(:,:,1)=
1 1 1
1 1 1
1 1 1
A(:,:,2)=
1 1 1
1 1 1
1 1 1
数字图像处理与分析基础
2.5.3.3 Matlab的图像处理功能
? 1、支持多种类型的图像文件以及各种
类型文件的互相转换
? 2、多种图像空间表示
? 3、多种数字图像文件
? 4、方便的数字图像输入 /输出
? 5、提供图像的矩阵表示及正交变换
? 6、图像增强
? 7、滤波器设计
? 8、二值图像分析
数字图像处理与分析基础
1、支持多种类型的图像文件及各种类型文件的转换
?支持四种基本图像类型,
?索引图像:图像矩阵与颜色图数组,
Colormap= [R G B]
?灰度图像,
double,值域 [0,1]; uint8类型,值域 [0,255]
?二进制图像,(0,1)
?RGB图像,图像数组为 m× n× 3,m,n表示图像象素
的行列数
?与时间有关的图像序列,帧,m× n× 3× f,m,n表示
图像象素的行列数,f表示帧数,cat( )
数字图像处理与分析基础
?提供三种颜色空间的转换以及四种图像类型的转换
?HSV值与 RGB颜色空间的相互转换:
hsv2rgb(),rgb2hsv()
?NTSC值与 RGB颜色空间相互转换:
ntsc2rgb(),rgb2ntsc()
?灰度图像与索引图像的相互转换:
gray2ind(),ind2gray()
?RGB图像转换为灰度图像,rgb2gray()
?RGB图像与索引图像相互转换,
rgb2ind(),ind2rgb()
?将图像转换为二进制图像, im2bw()
?从灰度图像产生索引图像,grayslice( )
?判断图像类型函数,
isbw(),isrgb(),isind(),isgray()
?矩阵转换为灰度图像函数,mat2gray()
数字图像处理与分析基础
2、方便的数字图像输入 /输出
?图像输入 /输出函数为 imread( ),imwrite( ):
BMP,HDF,JPEG,PCX,TIFF,XWD等格式
?查看图像文件信息,imfinfo( )
?mat文件:将内存中的图像用 save命令以 mat
文件形式保存到磁盘中,随时可用 load命令调
用。
数字图像处理与分析基础
3、方便的图像显示
?颜色条显示,colorbar( )
?从轴上获取图像数据函数,getimage( )
?显示图像,image( ),subimage( ), imshow( )
?调整数据并显示成图像函数,imagesc( )
?从多帧索引图像中制作电影, immovie( )
?调整图像显示大小,truesize( )
?显示图像为纹理表面,warp( )
?二维图像放大或缩小命令,zoom( )
数字图像处理与分析基础
4、图像的矩阵表示及正交变换
? 图像的矩阵表示和向量表示,
?
?
?
?
?
?
?
?
?
?
?
?
????
?
?
?
)1,1()1,1()0,1(
)1,1()1,1()0,1(
)1,0()1,0()0,0(
NMfMfMf
Nfff
Nfff
F
?
????
?
?
TMffff ],.,,,,[ 110 ??
数字图像处理与分析基础
相关函数
? 图像象素值及其统计
? 图像像素值, impixel(), improfile(),
imcontor(), imhist()
? 一般统计特性,均值 mean2(),标准差
std2(),相关系数 corr2()
? 图像矩阵运算, 秩,范数,特征值、
特征向量、特征多项式,逆矩阵或伪
(广义)逆矩阵,非线性运算
? 图像的正交变换, Fourier、
Hadamard,DCT等
数字图像处理与分析基础
5、图像增强
? ( 1)增强图像的对比度,改善视觉效果的算
法:
? imadjust( ), brighten( ), histeq( )
? ( 2)去除图像噪声的平滑滤波算法:
? imnoise( ), medfilt2( ), ordfilt2( ), wiener2()
? ( 3) 增强图像边缘的锐化算法;
? ( 4)提供了与图像处理有关的二维线性滤波
器及其设计方法,
? conv2( ), convmtx2( ), convn( ), filter( ),
fspecial( ), freqspace( ), freqz2( ),
fsamp2( ), ftrans2( ), fwind1( ), fwind2( )
数字图像处理与分析基础
6、数字图像操作与分析 (1/3)
(1)二进制图像操作,
?构造查找表,makelut()
?使用查找表进行邻域操作,applylut()
?计算二进制图像中的物体区域,bwarea()
?计算二进制图像的 Euler数,bweuler()
?二进制图像的背景区域填充,bwfill()
?标志二进制图像中的相连成分,bwlabel()
?二进制图像形态运算, bwmorph ()
?二进制图像腐蚀,erode()
?二进制图像膨胀,dilate()
?确定二进制图像中的物体二进制图像扩大:
bwselect( )
数字图像处理与分析基础
6、数字图像操作与分析 (2/3)
(2)颜色图操作
?使颜色图变成更亮或更暗的图, brighten()
?重新排列颜色图中的颜色, cmpermute()
?寻找符合图像的独特的颜色图的颜色, cmunique()
?设置或获取颜色查找表, colormap()
?由较少颜色的图像近似索引图像, imapprox()
(3)图像邻域及块操作
?选择块处理的块大小, bestblk()
?对图像实施不同的块处理, blkproc()
?重新安排矩阵列到图像块, col2im()
?使用列方向函数执行邻域运算; colfilt()
?重新安排图像块到矩阵列,im2col()
?进行一般邻域运算,nfilter()
数字图像处理与分析基础
6、数字图像操作与分析 (3/3)
(4)基于区域图像处理
?依据颜色选择要处理的区域 roicolor()
?在任意区域内平滑插值 roifill()
?对一特殊区域进行滤波 roifilt2()
?选择要处理的多边形区域 roipoly()
(5)图像分析
?检测灰度图形的边缘 edge()
?执行四叉树分解 qtdecomp()
?获取四叉树分解块值 qtgetblk()
?设置四叉树分解块值 qtsetblk()
(6)图像几何运算
?图像裁减 imcrop()
?图像大小调整 imresize(),imrotate(),interp2()