四章节图像增强序.ppt
图像Matlab仿真处理基础,一、什么是Matlab?,美国新墨西哥大学Cleve.Moler博士,20世纪70年代后期,Linpack 和Eispic的接口程序,Linpack是解线性方程的Fortran程序库,Eispic是解特征值问题的Fortran程序库。接口程序命名为MATLAB(即matrix和laboratory的前三个字母的组合,意思是“矩阵实验室”)。,1.MATLAB的特点,界面友好,编程效率高语法规则更简单,编程特点更贴近人的思维,问题的提出和解答只需要用数学方式表达和描述功能强大集成了数值分析、矩阵计算、信号处理和图形显示等众多的功能,2.Matlab系统的构成,主包、SIMULINK以及应用程序构成 Matlab系统(主包)包括五个部分Matlab语言Matlab工作环境MATLAB图形处理系统Matlab数学函数库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和其它应用程序间建立客户/服务器关系,二、MATLAB使用中需注意的问题,MATLAB的数据类型MATLAB的基本编程,1 Matlab的数据类型,可运算的数据只有两种字符型(uint8),即为无符号数双精度型存储型只能存储数据,而不能参与数学运算int8、uint8、int16、uint16、int32、uint32等,。在基本数据类型的基础上,可以构建单元数组和结构。,1、矩阵的生成,用于乘法运算的初始矩阵通常赋成“1”矩阵;用于加法运算的初始矩阵,通常赋成“0”矩阵。,X=zeros(3)X=0 0 0X=zeros(3,4)X=0 0 0 00 0 0 00 0 0 0,(1)0矩阵(矩阵或数组的所有元素为0)的生成:A=zeros(n),生成一个n个元素均为0的行矢量A;A=zeros(m,n),生成一个m行n列的元素均为0的矩阵A,或用A=zeros(m n);,A=ones(3,3,2)A(:,:,1)=1 1 11 1 11 1 1A(:,:,2)=1 1 11 1 11 1 1,(2)1矩阵(矩阵或数组的所有元素为1)的生成:A=ones(n),生成一个n个元素均为1的行矢量A;A=ones(m,n),生成一个m行n列的元素均为1的矩阵A,或用A=ones(m n);,2.Matlab的图像处理功能,1)、支持多种类型的图像文件以及各种类型文件的互相转换2)、多种图像空间表示3)、多种数字图像文件4)、方便的数字图像输入/输出5)、提供图像的矩阵表示及正交变换6)、图像增强7)、滤波器设计8)、二值图像分析,1)、支持多种类型的图像文件及各种类型文件的转换,支持四种基本图像类型:索引图像:图像矩阵与颜色图数组,ColormapR G B 灰度图像:double,值域 0,1;uint8类型,值域 0,255 二进制图像:(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()将图像转换为二进制图像:im2bw()从灰度图像产生索引图像:grayslice()判断图像类型函数: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)、图像的矩阵表示及正交变换,图像的矩阵表示和向量表示:,相关函数,图像象素值及其统计 图像像素值: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(),