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