数字图像处理02Matlab图像处理工具箱.ppt

上传人:小飞机 文档编号:6576865 上传时间:2023-11-14 格式:PPT 页数:96 大小:3.53MB
返回 下载 相关 举报
数字图像处理02Matlab图像处理工具箱.ppt_第1页
第1页 / 共96页
数字图像处理02Matlab图像处理工具箱.ppt_第2页
第2页 / 共96页
数字图像处理02Matlab图像处理工具箱.ppt_第3页
第3页 / 共96页
数字图像处理02Matlab图像处理工具箱.ppt_第4页
第4页 / 共96页
数字图像处理02Matlab图像处理工具箱.ppt_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《数字图像处理02Matlab图像处理工具箱.ppt》由会员分享,可在线阅读,更多相关《数字图像处理02Matlab图像处理工具箱.ppt(96页珍藏版)》请在三一办公上搜索。

1、数字图像处理第02章 Matlab图像处理基础,高振国,第2章 Matlab图像处理工具箱,1.Matlab基础2.Matlab图像处理工具箱四种图像类型四种图像类型的读取,写入,查询信息四种图像类型的显示图像类型的相互转换(九个函数)补充:图像的运算,针对不同的领域需要不同的图像处理算法,因此掌握一门高级语言来编写自己的图像处理程序,MATLAB无疑是一个不错的选择。,2.1 Matlab简介,Matlab(Matrix Laboratory)是当今很流行的科学计算软件。信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用,在诸如控制论、时间序列分析、系统仿真、图像信号处理等方

2、面产生了大量的矩阵及其他计算问题。Matlab软件适时推出,为人们提供了一个方便的数值计算和动态仿真平台。,Matlab简介-特点,1 高效、简单的程序环境2 强大的数值运算功能3 丰富的工具箱,Matlab是一个交互式的系统,其开发环境是MATLAB语言的基础和核心部分,全部功能都能在开发环境中实现。,提供大量的矩阵及其它运算函数,方便地进行一些很复杂的计算,而且运算效率极高。Matlab命令和数学中的符号、公式非常接近,可读性强,容易掌握。,根据各专门领域中的特殊需要提供了许多可选的工具箱,已有涉及数学、控制、通信、信号处理、图像处理、经济、地理等多种学科的20多种Matlab工具箱投入应

3、用。,可以在提示符后键入各种命令,变量管理中心,可以显示变量的名称、尺寸、字节和类别等信息。,提供当前路径下文件的操作。,显示已执行过的命令及相应时间。,系统中全部程序和帮助文件的管理和启动功能。,Matlab简介-开发环境,Matlab简介-M文件,Matlab通常使用命令驱动方式,当单行命令输入时,Matlab立即处理并显示结果,同时将运行说明和命令存入历史命令窗口。Matlab语句的磁盘文件称作M文件,因为这些文件名的末尾是.M形式。M文件有两种类型:命令(Script)文件 函数(function)文件,命令(Script)文件,第一类型M文件称为命令(Script)文件,特点如下:(

4、1)最简单的M文件,它是一系列命令、语句的简单组合;(2)没有输入和输出参数;(3)顺序执行文件后变量是全局变量,保存在工作空间中;(4)可以直接运行。,例:%绘制花瓣,test02_01.m theta=-pi:0.01:pi;rho(1,:)=2*sin(5*theta).2;rho(2,:)=cos(10*theta).3;rho(3,:)=sin(theta).2;rho(4,:)=5*cos(3.5*theta).3;for k=1:4 subplot(2,2,k),polar(theta,rho(k,:)end,命令(Script)文件,运行方式(1)将所有命令复制粘贴到命令行窗口

5、,按回 车执行。(2)在M文件编辑器中选择“Debug”,再选“Run”运行,或直接按“F5”运行程序。(3)在命令行中键入文件名,再回车,注意不要 加扩展名“.m”。,命令(Script)文件,M文件命名时不要用纯数字,这样会导致错误的结果。若有一个名为“1.m”的M文件,运行后的结果只能是1。,注意,函数(Function)文件,函数文件的特点如下:(1)以function为引导;(2)可以接受输入、输出参数;(3)内部变量为局部变量,运行完被释放。(4)不能直接运行,必须调用。,函数(Function)文件,function X=total(n)%total 计算从1到n的n个数之和%如

6、果n比1小,则提示错误。if n1 error(Input must be larger than 1);end k=1:n;X=sum(k);,函数定义行function 函数名,输入变量,输出变量,注释行:在命令窗口键入help total后显示出来显示内容为连续的若干个右边的文字。,函数体:包括函数的全部程序代码,test02_02.m,2.2 Matlab常用的基本命令,(1)全0矩阵 A=zeros(n):生成nn的全0矩阵;A=zeros(m,n):生成mn的全0矩阵;A=zeros(a1,a2,a3,):生成a1a2a3的全0 矩 A=zeros(size(B):生成与矩阵B大小

7、相同的全0矩阵。,1.常用矩阵的生成,(2)全1矩阵 A=ones(n):生成nn的全1矩阵;A=ones(m,n):生成mn的全1矩阵;A=ones(m,n):生成mn的全1矩阵;A=ones(a1,a2,a3,):生成a1a2a3的全1矩阵;A=ones(size(B):生成与矩阵B大小相同的全1矩阵。,(3)单位矩阵 A=eye(n):生成nn的单位矩阵;A=eye(m,n):生成mn的单位矩阵;A=eye(m,n):生成mn的单位矩阵;A=eye(size(B):生成与矩阵B大小相同的单位矩阵。,(4)均匀分布的随机矩阵 A=rand(n):生成nn的随机矩阵;A=rand(m,n):

8、生成mn的随机矩阵;A=rand(m,n):生成mn的随机矩阵;A=rand(a1,a2,a3,):生成a1a2a3的随机矩阵;A=rand(size(B):生成与矩阵B大小相同的随机矩阵。注意:上述rand生成的元素在区间(0,1)内均匀分布,(5)正态分布的随机矩阵 A=randn(n):生成nn的随机矩阵;A=randn(m,n):生成mn的随机矩阵;A=randn(m,n):生成mn的随机矩阵;A=randn(a1,a2,a3,):生成a1a2a3的随机矩阵;A=randn(size(B):生成与矩阵B大小相同的随机矩阵。注意:上述randn生成的元素服从均值为0,方差为1的正太分布,

9、在Matlab中,可以采用多种不同的方式生成矩阵。,2.简单矩阵的生成,(1)直接输入矩阵元素,对于较小的简单矩阵,从键盘上直接输入矩阵是最常用的数值矩阵创建方法,需要遵循以下几个基本原则:矩阵每行的元素之间必须用空格或逗号分开;在矩阵中,采用分号或回车表明每行的结束;整个输入矩阵必须包含在方括号中。,用Matlab生成的矩阵存储成二进制文件或包含数值数据的文本文件可以生成矩阵。格式:save 文件名 变量名列表 示例:a=1;b=2;save abc a b,(2)从外部数据文件调入矩阵元素,当矩阵的尺寸较大时,直接在命令窗口输入元素就显得比较笨拙,容易出现错误且不便修改。为了解决这个问题,

10、按照原来的创建原则写入一个M文件,运行该M文件,即将矩阵调用到工作空间。例:test02_03.m,(3)利用用户文件创建的M文件矩阵,A=1,2,3;4,5,6;7,8,9;10,11,12;,Matlab可以采用多种不同的方式生成向量。(1)利用冒号“:”生成向量 冒号“:”是Matlab中常用算子之一,不仅可以作数组下标,对数组元素进行引用、增加和删除,还可以用来生成向量。,3.向量的生成,冒号“:”使用下列格式生成均匀等分向量。x=j:k 如果jk,则生成空向量x=;x=j:i:k 如果i0且jk,则生成向量 x=j,j+i,j+2i,k;如果i0且jk或i0且jk,则生成空向量x=;

11、,Matlab常用命令,clear 工作空间中清除所有变量,clc 清除命令窗口中显示内容,help 获得在线帮助,命令 功能,clf 清除图形窗口内容,who 列出当前工作空间中的变量,whos 列出当前工作空间中的变量及信息,补充:矩阵的基本操作,*diag(A)返回矩阵A对角元素成列向量;*diag(v)以向量v作对角元素创建矩阵;*flipud(A)矩阵上下翻转;*fliplr(A)矩阵左右翻转;*rot90(A)矩阵逆时针翻转90度;*tril(A)提取矩阵A的下三角矩阵;*triu(A)提取矩阵A的上三角矩阵。,1.利用矩阵创建矩阵,*x=1 2 3 4 5%产生15的数组*b=x

12、(3)%寻访数组x的第3个元素*b=x(1 2 5)%寻访x的第1、2、5元素*b=x(1:3)%寻访前三个元素*b=x(3:end)%寻访第三个元素到最后一个*b=x(find(x3)%由大于3的元素构成数组*b=x(3:-1:1)%由前3个数倒排成数组*b=x(1 2 3 4 4 3 2 1)%对元素的重复访问,2.寻访矩阵中的数据,*x=1,2,3;4,5,6;7,8,9%产生33的矩阵*b=x(find(x4)%大于4的元素构成数组*x(2,2)=10%第2行第2列值改为10*x(3,:)=20%第3行的值改为20*x=ones(5)%产生55全为1的矩阵*x(2:4,2:4)=0%第

13、2、3、4行的第2、3、4列元素改0,3.修改数据,插入:x=4:6;A=x-3;x;x+3%插入创建新矩阵 提取:C=A(1:2,2:3)%提取A的部分 拉长:D=A(:)%拉长成列 置空:A(:,2)=%删除A的第二列,4.插入、提取、拉长及置空,A=3:6;1:4%产生24的矩阵 s=size(A)%返回s为行数 列数 r,c=size(A)%返回r为行数,c为列数 r=size(A,1)%只返回行数 c=size(A,2)%只返回列数 n=length(A)%返回行数、列数最大者,5.矩阵的规模,练习,已知:矩阵A=3 3 4 6 2 4 2 4 5 7 7 5 3 2 1 1,试对矩

14、阵矩阵A进行操作得到以下结果。,返回矩阵A的大小;,返回矩阵A1=5 7 7 6 5,A2=3 3 4 6;,返回矩阵A3=1 1 2 3 A4=3 3 4 6 A5=3 4 6 5 7 7 5 2 4 2 4 2 2 4 4 2 4 2 8 8 8 8 5 7 5 6 4 3 3 3 2 1 1 3 1 1,2.3 图像处理工具箱简介,Matlab是一种基于向量(数组)而不是标量的高级程序语言,因而Matlab从本质上就提供了对图像的支持。数字图像实际上是一组有序离散的数据,使用Matlab可以对这些离散数据形成的矩阵进行一次性的处理。,Matlab对图像的处理功能主要集中在它的图像处理工具

15、箱(Image Processing Toolbox)中。,图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、数学形态学处理等图像处理操作。,图像处理工具箱主要有:,Image Acquisition Toolbox Image Processing Toolbox Signal Processing Toolbox Wavelet Toolbox Statistics Toolbox Bioinformatics Toolbox Matlab Compiler Matlab COM builder,2.4 Matla

16、b中的图像类型及类型转换,Matlab中的数字图像是由一个或多个矩阵表示的,Matlab强大的矩阵运算功能完全可以应用于图像,那些适用于矩阵运算的语法对Matlab中的数字图像同样适用。,2.4.1 图像和图像数据,缺省:double(64位浮点数)uint8(无符号8位整型),内容顺序,图像的四种类型,图像的读取、写入、信息查询,图像的显示,图像类型转换,2.4.2 图像处理工具箱所支持的图像类型,图像处理工具箱支持4种图像类型,它们是:真彩色图像(RGB images)索引色图像(index images)灰度图像(intensity images)二值图像(binary images)此

17、外,Matlab还支持由多帧图像组成的图像序列。,1.真彩色图像,真彩色图像用 R、G、B 3个分量表示1个像素的颜色,所以对1个尺寸为mn的真彩色图像来说,其数据结构就是一个mn3的多维数组。如果要读取图像中(100,50)处的像素值,可以查看三元组(100,50,13)。真彩色图像可用双精度存储,此时亮度值的范围是0,1。常用的存储方法是用无符号整型存储,亮度值的范围为0,255。,真彩色图像数据格式,图2.2 真彩色图像的结构,2.索引色图像,索引图像是把像素值直接作为RGB调色板下标的图像。Matlab中的索引色图像包含2个结构,一个是调色板map;另外一个是图像数据矩阵X。调色板是一

18、个有3列和若干行的色彩映像矩阵,矩阵的每行都代表一种色彩,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定的颜色。图像数据可以是uint8或是双精度的。需要注意的是Matlab中的调色板的色彩强度是0,1中的浮点数,0代表最暗,1代表最亮。,图2.3 索引色图像的结构,索引图像的数据格式,3.灰度图像,存储灰度图像只需要一个数据矩阵,数据类型可以是double也可以是uint8。显示时会使用一个默认的调色板来显示图像。,4.二值图像,与灰度图像相同,二值图像只需一个数据矩阵,每个像素只有2个灰度值。可以采用uint8或double类型存储,工具箱中以二值图像作为返回结果的函数都使用u

19、int8类型。,5.图像序列(不能用于RGB图),图像处理工具箱支持将多帧图像连接成图像序列。可以使用Matlab的cat函数将分散的图像合并成图像序列,前提是各图像的尺寸必须相同,如果是索引色图像,调色板也必须是一样的。比如要将A1、A2、A3、A4、A5五幅图像合并成一个图像序列A,Matlab语句为 A=cat(1,A1,A2,A3,A4,A5),1维,纵向排列 A=cat(2,A1,A2,A3,A4,A5),2维,横向排列 A=cat(3,A1,A2,A3,A4,A5),3维,竖向排列,图像序列也可以产生一个四维的数组,图像帧的序号在图像的长、宽、颜色深度之后构成第四维。一个包含了5幅

20、400300真彩色图像的序列,其大小为 40030035 一个包含了5幅400300灰度或是索引图像的序列,其大小为 40030015 A=cat(4,A1,A2,A3,A4,A5),4维 提取其中一帧(如第2帧)A(:,:,:,2),2.4.3 图像文件的读写和查询,imread:读取图形文件格式的图像;imwrite:写入图形文件格式的图像;imfinfo:获取图像的信息;loadsave:以Mat文件加载或保存矩阵数据;imshow:显示加载到Matlab中的图像。,利用函数imread可以完成图形图像文件的读取操作,其语法如下,一般:A=imread(filename,fmt)索引图像

21、:X,map=imread(filename,fmt),X,map=imread(m83.tif,tif),1.图形图像文件的读取,imread函数可以从任何Matlab 支持的图形文件中以特定的位宽读取图像。通常情况下,读取的大多数图像均为8bit。当这些图像加载到内存中时,Matlab就将其存储在类uint8中。对于索引图像来说,即使图像阵列的本身为uint8或uint16,imread函数仍然将颜色映像表读取并存储到一个双精度的浮点类型的阵列中。,注意,2.图形图像文件的写入(保存),利用imwrite函数可以完成图形图像文件的写入操作,其语法为:imwrite(A,filename,f

22、mt)imwrite(X,map,filename,fmt)Matlab 缺省的保存方式:uint8数据格式。在Matlab中使用的许多图像都是8bit,并且大多数的图像文件并不需要双精度的浮点数据。,imwrite(X,map,lena.bmp,bmp),3.图形图像文件信息的查询,Matlab提供了imfinfo函数用于从图像文件中查询其信息。所获取的信息依文件类型的不同而不同,但至少包含下面的内容。文件名 文件格式 文件格式的版本号 文件修改时间 文件的字节大小 图像的宽度(像素)图像的长度(像素)每个像素的位数 图像类型(即该图像是RGB(真彩)图像、灰度图像还是索引图像),查询图像信

23、息,imfinfo(autumn.tif),2.4.4 图像文件的显示,Matlab 7.0图像处理工具箱提供了一个高级的图像显示函数imshow。其语法格式如下,灰度图像 imshow(I)imshow(I,n)imshow(I,low high)二值图像 imshow(BW)索引图像 imshow(X,map)真彩色图像 imshow(RGB),其中n为灰度级数目,缺省值为256。low high为图像数据的值域。,索引图像包括一个数据矩阵X,一个颜色映像矩阵map。其中map是一个p3的数据矩阵,其每个元素的值均为0,1之间双精度浮点型数据。map矩阵的每一行分别表示红色、绿色和蓝色的颜

24、色值。而数据矩阵X可以是double和uint8型的,调用格式如下:imshow(X,map),1.索引图像及其显示,对于X的每个像素,imshow显示存储在map相应行中的颜色。图像矩阵中数值和调色板之间的关系依赖于图像矩阵的类型(double、uint8)。双精度类型:数值1调色板的第1行,数值2第2行;uint8类型:数值0调色板的第1行,数值1第2行,以此类推。,索引图像的double与uint8型test02_04.m,double,uint8,图像数据,调色板,图像数据,索引图像的每一个像素都直接映射为调色板的一个入口。如果调色板包含的颜色数目多于图像颜色数目,那么额外的颜色都将被

25、忽略;如果调色板包含的颜色数目少于图像颜色数目,则超出调色板颜色范围的图像像素都将被设置为调色板中的最后一个颜色。,例如,如果一幅包含256色的uint8索引图像,使用一个仅有16色的调色板显示,则所有数值大于或等于15的像素都将被显示为调色板的最后一个颜色。,借助不同的调色板显示图像,用HSV,GRAY,HOT,COOL,BONE,COPPER可生成系统预定义调色版。test02_05.m,X=imread(cameraman.tif);map=pink(256);imshow(X,map);colorbar;%显示颜色条,2.灰度图像及其显示,一幅灰度图像是一个数据矩阵 I,其中数据均代表

26、了在一定范围内的颜色灰度值。Matlab 把灰度图像用数据矩阵的形式进行存储,每个元素则表示了图像中的每个像素。矩阵元素可以是doudle、uint8整数类型。多数情况下,灰度图像很少和颜色映像表一起保存,但在显示灰度图像时,Matlab 仍然在后台使用系统预定义的缺省灰度颜色映像表。,(1)灰度图像显示最基本的调用格式 imshow(I)Matlab 中 imshow函数使用一个灰度级系统调色板(R=G=B)来显示灰度图像。如果I是double型,若像素值为0.0,则显示为黑色,1.0则显示为白色,0.0和1.0之间的像素值将显示为灰影。,imshow函数显示灰度图像,imshow(I,n)

27、例如:以下语句将显示一幅32个灰度级的图像I。imshow(I,32),(2)使用明确指定的灰度级数目,(3)某些情况下,可能将一些超出数据惯例范围的数 据显示为一幅灰度图像,对于double型数组为0,1,对于uint8型数组为 0,255,为了将超过数据范围的数据显示为图像,用户可以直接定义数据范围,其调用格式如下,imshow(I,low high)其中low、high分别为数据的最小和最大值。如果用户使用一个空矩阵 指定数据范围,imshow将自动进行数据标度。,3.RGB图像及其显示,用imshow函数显示RGB图像基本的调用格式如下,imshow(RGB)参数RGB是一个mn3的数

28、组。对于RGB中的每一个像素(r,c),imshow显示数值(r,c,13)所描述的颜色。每个屏幕像素使用24位颜色系统直接显示真彩图像,系统给每个像素的红、绿、蓝颜色分量分配8位(256级),这样就有1000多万种颜色(224)。,4.二进制图像及其显示,显示二进制图像用如下语句,imshow(BW)在Matlab 中,二进制图像是一个逻辑类,仅包括0和1两个数值,像素0显示为黑色,像素1显示为白色。在显示时,也可以通过NOT()命令,对二进制图像进行取反,使数值0显示为白色,1显示为黑色。例如:BW=imread(circles.png);imshow(BW);figure,imshow(

29、BW);显示的结果如下图所示。,二进制图像显示效果,5.直接从磁盘显示图像,通常,在显示一幅图像前首先要调用imread函数装载图像,将数据存储为Matlab工作平台中的一个或多个变量。但是,如果不希望在显示图像之前装载图像,则可以使用以下命令格式直接进行图像文件的显示,imshow filename 其中,filename为要显示的图像文件的文件名。,imshow rice.pngimshow(rice.png),补充:多幅图像文件的显示,figure,imshow 功能:新建一个图像窗口,用于显示新图像(从而不让新的图像覆盖原来图像)。,1.创建新的图像窗口,每个图像显示在一个窗口中,调用

30、imshow函数显示图像,如下页图所示。test02_06.m,I=imread(rice.tif);J=filter2(1 2;-1-2,I);%用模板1 2;-1-2对图像滤波figure;subplot(1,2,1);imshow(I);subplot(1,2,2);imshow(J,);,用imshow显示滤波前后的图像,subplot(m,n,k),imshow%绘制并显示m行n 列第k个子图 例:X1=imread(rice.png);X2=imread(coins.png);X3=imread(bag.png);subplot(1,3,1),imshow(X1);subplot(

31、1,3,2),imshow(X2);subplot(1,3,3),imshow(X3);,2.用子图、多个图像显示在一个图像窗口中,子图显示效果,补充:多帧图像的电影片段,若一个tif的图像文件包含有多帧的图像,我们一般用immovie来实现创建电影片段的功能,比如说,以下调用将根据多帧索引图像X创建电影片段。mov=immovie(X,map),mri=uint8(zeros(128,128,1,27);for frame=1:27 mri(:,:,:,frame),map=imread(mri.tif,frame);end mov=immovie(mri,map);movie(mov);,

32、初始化一个包括27帧的灰度图像的文件mri.tif,将mri.tif的每一帧读入图相应的图像帧中,2.4.5 Matlab图像类型转换,1.图像类型转换的必要性 对于索引图像进行滤波时,必须把它转换为RGB图像,否则光对图像的下标进行滤波,得到的结果是毫无意义的。2.各种类型图像的转换关系,工具箱中提供了许多图像类型转换的函数,从函数名称可以看出它们的功能。1.dither函数 功能:图像抖动,利用仅能显示少数彩色的设备显示含有丰富颜色信息图像的一种非常有用的方法。该函数可以把RGB图像转换成索引图像或把灰度图像转换成二值图像。格式:X=dither(RGB,map)BW=dither(I),

33、抖动效果图,(1)RGB图像抖动成索引图像,例:test02_07.m,I=imread(lena.jpg);map=pink(256);X=dither(I,map);figure;subplot(1,2,1);imshow(I);subplot(1,2,2);imshow(X,map);,(2)灰度图像抖动成二值图像,例:,I=imread(rice.png);bw=dither(I);imshow(I);figure,imshow(bw);,功能:将灰度图像转换成索引图像。格式:X,map=gray2ind(I,n)按照指定的灰度级n 把灰度图像I转换成索引图像X,map 为gray(n

34、),n的缺省值为64。例:test02_09.m,2.gray2ind函数,I=imread(cameraman.tif);X,map=gray2ind(I,16);figure;subplot(1,2,1);imshow(I);subplot(1,2,2);imshow(X,map);,功能:通过设定阈值将灰度图像转换成索引色图像。格式:X=grayslice(I,n)例:test02_10.m,3.grayslice函数,I=imread(cameraman.tif);X=grayslice(I,16);figure;subplot(1,2,1);imshow(I);subplot(1,2

35、,2);imshow(X,bone(16);,功能:将灰度图像、索引色图像和真彩色图像转化 成二值图像。格式:BW=im2bw(I,level)BW=im2bw(X,map,level)BW=im2bw(RGB,level)level是一个归一化阈值,取值在0,1。,4.im2bw函数,例:真彩色转换为二值图像,I=imread(lena.jpg);X=im2bw(I,0.5);Figure;subplot(1,2,1);imshow(I);subplot(1,2,2);imshow(X);,功能:将索引图像转换成灰度图像。格式:I=ind2gray(X,map),5.ind2gray函数,索

36、引图像转换成灰度图像,功能:将索引色图像转换成真彩色图像。格式:RGB=ind2rgb(X,map)例:I,map=imread(m83.tif);X=ind2rgb(I,map);imshow(I,map);figure,imshow(X);,6.ind2rgb函数,功能:将一个数据矩阵转换成一幅灰度图像。格式:I=mat2gray(A,amin amax)I=mat2gray(A),7.mat2gray函数,功能:将一幅真彩色图像转换成灰度图像。格式:I=rgb2gray(RGB)例:RGB=imread(lena.jpg);X=rgb2gray(RGB);figure;subplot(1

37、,2,1);imshow(RGB);subplot(1,2,2);imshow(X);,8.rgb2gray函数,功能:将真彩色图像转换成索引色图像。格式:X,map=rgb2ind(RGB,n)例:,9.rgb2ind函数,RGB=imread(lena.jpg);X=rgb2gray(RGB);figure;subplot(1,2,1);imshow(RGB);subplot(1,2,2);imshow(X);,补充:图像的纹理映射,对于一个真彩色图像来说,warp函数可以把它通过图像纹理映射创建一个三维效果。x,y,z=cylinder;%创建一个圆柱面 I=imread(lena.jp

38、g);%读取一个真彩色图像 warp(x,y,z,I);%把图像映射成圆柱体的表面纹理,补充:图像的空间变换,将输入图像的像素映射到输出图像的新位置,如调整图像大小、旋转、剪切等。,调整图像的大小-imresize,Y=imresize(X,M);其中M1表示放大,0M1表示缩小。Y=imresize(X,M N);产生一个指定的MN大小的图像Y。,图像的旋转-imrotate,Y=imrotate(X,angle,method);Y=imrotate(X,angle,method,crop);其中angle为逆时针旋转的角度,method为插值方法,指定crop参数对旋转后的图像进行剪切。,

39、例:,I=imread(lena.jpg);J1=imrotate(I,45);J2=imrotate(I,45,crop);subplot(131);imshow(I);subplot(132);imshow(J1);subplot(133);imshow(J2);,图像的剪切-imcrop,Y=imcrop(X,rect);其中X为待剪切的图像,rect定义剪切区的矩形坐标。比如说Y=imcrop(X,30 20 30 40);将左上角30列、20行的像素点的列数为31、行数为41的图像剪切出来。,Y=imcrop(X);若不指定区域,则光标会变成十字型,可通过拖拽鼠标选择矩形,释放鼠标后

40、,将产生一个新的图像。,补充:图像的运算,imadd(X,Y);Y可以是另一幅图像,也可以是一个常数。例1:I=imread(lena.jpg);J=imread(cameraman.tif);K=imadd(I,J);subplot(131);imshow(I);subplot(132);imshow(J);subplot(133);imshow(K);,图像的加法,例2:实现亮度的增加 RGB=imread(greens.jpg);RGB1=imadd(RGB,50);subplot(1,2,1);imshow(RGB);subplot(1,2,2);imshow(RGB1);,图像的减法

41、,Z=imsubtract(X,Y);计算X与Y的像素之差,负数将被截取为0。Z=imabsdiff(X,Y);计算X与Y的像素之差的绝对值,结果为非负的。,彩色图像的三分量的表示,RGB=imread(fabric.png);RGB1=RGB;R=RGB1(:,:,1);RGB1(:,:,2)=0;RGB1(:,:,3)=0;RGB2=RGB;RGB2(:,:,1)=0;G=RGB2(:,:,2);RGB2(:,:,3)=0;RGB3=RGB;RGB3(:,:,1)=0;RGB3(:,:,2)=0;B=RGB3(:,:,3);subplot(141),imshow(RGB);subplot(

42、142),imshow(RGB1);subplot(143),imshow(RGB2);subplot(144),imshow(RGB3);,RGB=imread(fabric.png);RGB1=RGB;RGB1(:,:,1)=0;RGB2=RGB;RGB2(:,:,2)=0;RGB3=RGB;RGB3(:,:,3)=0;subplot(141),imshow(RGB);subplot(142),imshow(RGB1);subplot(143),imshow(RGB2);subplot(144),imshow(RGB3);,本章小结,1.Matlab基础2.Matlab图像处理工具箱四种图像类型四种图像类型的读取,写入,查询信息四种图像类型的显示图像类型的相互转换(九个函数)补充:图像的运算,本章小结,Matlab编程基础Matlab图像处理基础,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号