数字图像处理图像处理工具箱_第1页
数字图像处理图像处理工具箱_第2页
数字图像处理图像处理工具箱_第3页
数字图像处理图像处理工具箱_第4页
数字图像处理图像处理工具箱_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字图像处理图像处理工具箱

第1页,课件共100页,创作于2023年2月

图像处理软件Photoshop是一种著名的图像处理软件,该软件能够实现图像显示、增强、剪切、滤波等一系列操作,效果非常不错,该软件生成的图像格式.psd已经作为国际标准予以应用。图像处理=Photoshop?第2页,课件共100页,创作于2023年2月

针对不同的领域需要不同的图像处理算法,因此掌握一门高级语言来编写自己的图像处理程序,MATLAB无疑是一个不错的选择。第3页,课件共100页,创作于2023年2月

2.1Matlab简介

Matlab(MatrixLaboratory)是当今很流行的科学计算软件。信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用,在诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其他计算问题。Matlab软件适时推出,为人们提供了一个方便的数值计算和动态仿真平台。第4页,课件共100页,创作于2023年2月

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

可以在提示符后键入各种命令变量管理中心,可以显示变量的名称、尺寸、字节和类别等信息。提供当前路径下文件的操作。显示已执行过的命令及相应时间。系统中全部程序和帮助文件的管理和启动功能。Matlab简介-开发环境第6页,课件共100页,创作于2023年2月

Matlab简介-M文件Matlab通常使用命令驱动方式,当单行命令输入时,Matlab立即处理并显示结果,同时将运行说明和命令存入历史命令窗口。Matlab语句的磁盘文件称作M文件,因为这些文件名的末尾是.M形式。M文件有两种类型:命令(Script)文件

函数(function)文件第7页,课件共100页,创作于2023年2月

命令(Script)文件第一类型M文件称为命令(Script)文件,特点如下:(1)最简单的M文件,它是一系列命令、语句的简单组合;(2)没有输入和输出参数;(3)顺序执行文件后变量是全局变量,保存在工作空间中;(4)可以直接运行。第8页,课件共100页,创作于2023年2月

例:%绘制花瓣

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;fork=1:4subplot(2,2,k),polar(theta,rho(k,:))end命令(Script)文件第9页,课件共100页,创作于2023年2月

运行方式(1)将所有命令复制粘贴到命令行窗口,按回车执行。(2)在M文件编辑器中选择“Debug”,再选“Run”运行,或直接按“F5”运行程序。(3)在命令行中键入文件名,再回车,注意不要加扩展名“.m”。命令(Script)文件第10页,课件共100页,创作于2023年2月

M文件命名时不要用纯数字,这样会导致错误的结果。若有一个名为“1.m”的M文件,运行后的结果只能是1。注意第11页,课件共100页,创作于2023年2月

函数(Function)文件函数文件的特点如下:(1)以function为引导;(2)可以接受输入、输出参数;(3)内部变量为局部变量,运行完被释放。(4)不能直接运行,必须调用。第12页,课件共100页,创作于2023年2月

函数(Function)文件functionX=total(n)%total计算从1到n的n个数之和%如果n比1小,则提示错误。ifn<1error('Inputmustbelargerthan1');endk=1:n;X=sum(k);函数定义行function函数名,输入变量,输出变量注释行:在命令窗口键入helptotal后显示出来.显示内容为连续的若干个%右边的文字。函数体:包括函数的全部程序代码第13页,课件共100页,创作于2023年2月

注意函数文件编写完之后,保存的文件名必须与函数名同名!第14页,课件共100页,创作于2023年2月

2.2Matlab常用的基本命令(1)全0矩阵A=zeros(n):生成n×n的全0矩阵;A=zeros(m,n):生成m×n的全0矩阵;A=zeros(a1,a2,a3,…):生成a1×a2×a3×…的全0矩A=zeros(size(B)):生成与矩阵B大小相同的全0矩阵。1.常用矩阵的生成第15页,课件共100页,创作于2023年2月

(2)全1矩阵A=ones(n):生成n×n的全1矩阵;A=ones(m,n):生成m×n的全1矩阵;A=ones([m,n]):生成m×n的全1矩阵;A=ones(a1,a2,a3,…):生成a1×a2×a3×…的全1矩阵;A=onse(size(B)):生成与矩阵B大小相同的全1矩阵。第16页,课件共100页,创作于2023年2月

(3)单位矩阵A=eye(n):生成n×n的单位矩阵;A=eye(m,n):生成m×n的单位矩阵;A=eye([m,n]):生成m×n的单位矩阵;A=eye(size(B)):生成与矩阵B大小相同的单位矩阵。第17页,课件共100页,创作于2023年2月

(4)均匀分布的随机矩阵A=rand(n):生成n×n的随机矩阵;A=rand(m,n):生成m×n的随机矩阵;A=rand([m,n]):生成m×n的随机矩阵;A=rand(a1,a2,a3,…):生成a1×a2×a3×…的随机矩阵;A=rand(size(B)):生成与矩阵B大小相同的随机矩阵。第18页,课件共100页,创作于2023年2月

(5)正态分布的随机矩阵A=randn(n):生成n×n的随机矩阵;A=randn(m,n):生成m×n的随机矩阵;A=randn([m,n]):生成m×n的随机矩阵;A=randn(a1,a2,a3,…):生成a1×a2×a3×…的随机矩阵;A=randn(size(B)):生成与矩阵B大小相同的随机矩阵。第19页,课件共100页,创作于2023年2月

在Matlab中,可以采用多种不同的方式生成矩阵。2.简单矩阵的生成(1)直接输入矩阵元素

对于较小的简单矩阵,从键盘上直接输入矩阵是最常用的数值矩阵创建方法,需要遵循以下几个基本原则:

①矩阵每行的元素之间必须用空格或逗号分开;

②在矩阵中,采用分号或回车表明每行的结束;

③整个输入矩阵必须包含在方括号中。第20页,课件共100页,创作于2023年2月

用Matlab生成的矩阵存储成二进制文件或包含数值数据的文本文件可以生成矩阵。文本文件中,数据必须排成一个数据表,数据之间用空格分隔,文件的每行包含矩阵的一行,并且每行的元素个数必须相等。(2)从外部数据文件调入矩阵元素第21页,课件共100页,创作于2023年2月

当矩阵的尺寸较大时,直接在命令窗口输入元素就显得比较笨拙,容易出现错误且不便修改。为了解决这个问题,按照原来的创建原则写入一个M文件,运行该M文件,即将矩阵调用到工作空间。(3)利用用户文件创建的M文件矩阵第22页,课件共100页,创作于2023年2月

Matlab可以采用多种不同的方式生成向量。(1)利用冒号“:”生成向量

冒号“:”是Matlab中常用算子之一,不仅可以作数组下标,对数组元素进行引用、增加和删除,还可以用来生成向量。3.向量的生成第23页,课件共100页,创作于2023年2月

冒号“:”使用下列格式生成均匀等分向量。x=j:k如果j<k,则生成向量x=[j,j+1,j+2,…,k];如果j>k,则生成空向量x=[];

x=j:i:k如果i>0且j<k或i<0且j>k,则生成向量x=[j,j+i,j+2i,…,k];如果i>0且j>k或i<0且j<k,则生成空向量x=[];第24页,课件共100页,创作于2023年2月

Matlab常用命令clear

工作空间中清除所有变量clc

清除命令窗口中显示内容help<命令名>

获得在线帮助命令功能

clf

清除图形窗口内容

who

列出当前工作空间中的变量whos

列出当前工作空间中的变量及信息第25页,课件共100页,创作于2023年2月

补充:矩阵的基本操作

*diag(A)-返回矩阵A对角元素成列向量;*diag(v)-以向量v作对角元素创建矩阵;

*flipud(A)-矩阵上下翻转;

*fliplr(A)-矩阵左右翻转;

*rot90(A)-矩阵逆时针翻转90度;*tril(A)-提取矩阵A的下三角矩阵;*triu(A)-提取矩阵A的上三角矩阵。1.利用矩阵创建矩阵第26页,课件共100页,创作于2023年2月

*x=[12345]%产生1×5的数组

*b=x(3)%寻访数组x的第3个元素

*b=x([125])%寻访x的第1、2、5元素

*b=x(1:3)%寻访前三个元素

*b=x(3:end)%寻访第三个元素到最后一个

*b=x(find(x>3))%由大于3的元素构成数组

*b=x(3:-1:1)%由前3个数倒排成数组

*b=x([12344321])%对元素的重复访问2.寻访矩阵中的数据第27页,课件共100页,创作于2023年2月

*x=[1,2,3;4,5,6;7,8,9]%产生3×3的矩阵

*b=x(find(x>4))%大于4的元素构成数组

*x(2,2)=10%第2行第2列值改为10

*x(3,:)=20%第3行的值改为20

*x=ones(5)%产生5×5全为1的矩阵

*x(2:4,2:4)=0%第2、3、4行的第2、3、4列元素改03.修改数据第28页,课件共100页,创作于2023年2月

插入:x=4:6;A=[x-3;x;x+3]%插入创建新矩阵提取:C=A(1:2,2:3)%提取A的部分拉长:D=A(:)%拉长成列置空:A(:,2)=[]%删除A的第二列4.插入、提取、拉长及置空第29页,课件共100页,创作于2023年2月

A=[3:6;1:4]%产生2×4的矩阵s=size(A)%返回s为[行数列数][r,c]=size(A)%返回r为行数,c为列数r=size(A,1)%只返回行数c=size(A,2)%只返回列数n=length(A)%返回行数、列数最大者5.矩阵的规模第30页,课件共100页,创作于2023年2月

练习已知:矩阵A=[3346242457753211]试对矩阵矩阵A进行操作得到以下结果。

①返回矩阵A的大小;②返回矩阵A1=[57765],A2=[3346];③返回矩阵A3=[1123A4=[3346A5=[34657752424224424288885756433]3211]311]第31页,课件共100页,创作于2023年2月

2.3图像处理工具箱简介Matlab是一种基于向量(数组)而不是标量的高级程序语言,因而Matlab从本质上就提供了对图像的支持。数字图像实际上是一组有序离散的数据,使用Matlab可以对这些离散数据形成的矩阵进行一次性的处理。第32页,课件共100页,创作于2023年2月

Matlab对图像的处理功能主要集中在它的图像处理工具箱(ImageProcessingToolbox)中。图像处理工具箱是由一系列支持图像处理操作的函数组成,可以进行诸如几何操作、线性滤波和滤波器设计、图像变换、图像分析与图像增强、数学形态学处理等图像处理操作。第33页,课件共100页,创作于2023年2月

图像处理工具箱主要有:*ImageAcquisitionToolbox

*ImageProcessingToolbox

*SignalProcessingToolbox

*WaveletToolbox

*StatisticsToolbox

*BioinformaticsToolbox

*MatlabCompiler

MatlabCOMbuilder第34页,课件共100页,创作于2023年2月

2.4Matlab中的图像类型及类型转换Matlab中的数字图像是由一个或多个矩阵表示的,Matlab强大的矩阵运算功能完全可以应用于图像,那些适用于矩阵运算的语法对Matlab中的数字图像同样适用。2.4.1图像和图像数据缺省:double(64位浮点数)uint8(无符号8位整型)第35页,课件共100页,创作于2023年2月

本节的讲授思路图像的四种类型图像的读取、写入、信息查询图像的显示图像类型转换第36页,课件共100页,创作于2023年2月

2.4.2图像处理工具箱所支持的图像类型图像处理工具箱支持4种图像类型,它们是:

真彩色图像(RGBimages)索引色图像(indeximages)灰度图像(intensityimages)二值图像(binaryimages)此外,Matlab还支持由多帧图像组成的图像序列。第37页,课件共100页,创作于2023年2月

1.真彩色图像真彩色图像用R、G、B3个分量表示1个像素的颜色,所以对1个尺寸为m×n的真彩色图像来说,其数据结构就是一个m×n×3的多维数组。如果要读取图像中(100,50)处的像素值,可以查看三元组(100,50,1∶3)。真彩色图像可用双精度存储,此时亮度值的范围是[0,1]。常用的存储方法是用无符号整型存储,亮度值的范围为[0,255]。第38页,课件共100页,创作于2023年2月

真彩色图像数据格式双精度类:Double(每个像素占8个字节)

整数类:Uint8(每个像素占1个字节)数组大小:m×n×3(:,:,1)-红色分量(:,:,2)-绿色分量(:,:,3)-蓝色分量像素取值:[0,1]

数组大小:m×n×3(:,:,1)-红色分量(:,:,2)-绿色分量(:,:,3)-蓝色分量像素取值:[0,255]第39页,课件共100页,创作于2023年2月

图2.2真彩色图像的结构第40页,课件共100页,创作于2023年2月

2.索引色图像索引图像是把像素值直接作为RGB调色板下标的图像。Matlab中的索引色图像包含2个结构,一个是调色板map;另外一个是图像数据矩阵X。调色板是一个有3列和若干行的色彩映像矩阵,矩阵的每行都代表一种色彩,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一种特定的颜色。图像数据可以是uint8或是双精度的。需要注意的是Matlab中的调色板的色彩强度是[0,1]中的浮点数,0代表最暗,1代表最亮。第41页,课件共100页,创作于2023年2月

图2.3索引色图像的结构第42页,课件共100页,创作于2023年2月

索引图像的数据格式双精度类:Double(每个元素占8个字节)

整数类:Uint8(每个元素占1个字节)

图像数组大小:m×n图像元素取值:[1,p]调色板矩阵:p×3图像数组大小:m×n图像元素取值:[0,p-1]调色板矩阵:p×3第43页,课件共100页,创作于2023年2月

3.灰度图像存储灰度图像只需要一个数据矩阵,数据类型可以是double也可以是uint8。存储时会使用一个默认的调色板来显示图像。第44页,课件共100页,创作于2023年2月

4.二值图像与灰度图像相同,二值图像只需一个数据矩阵,每个像素只有2个灰度值。可以采用uint8或double类型存储,工具箱中以二值图像作为返回结果的函数都使用uint8类型。第45页,课件共100页,创作于2023年2月

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维,竖向排列第46页,课件共100页,创作于2023年2月

图像序列也可以产生一个四维的数组,图像帧的序号在图像的长、宽、颜色深度之后构成第四维。一个包含了5幅400×300真彩色图像的序列,其大小为400×300×3×5一个包含了5幅400×300灰度或是索引图像的序列,其大小为400×300×1×5A=cat(4,A1,A2,A3,A4,A5),4维提取其中一帧(如第2帧)A(:,:,:,2)第47页,课件共100页,创作于2023年2月

2.4.3图像文件的读写和查询

imread:读取图形文件格式的图像;

imwrite:写入图形文件格式的图像;

imfinfo:获取图像的信息;

load\save:以Mat文件加载或保存矩阵数据;

imshow:显示加载到Matlab中的图像。第48页,课件共100页,创作于2023年2月

利用函数imread可以完成图形图像文件的读取操作,其语法如下,一般:A=imread(filename,fmt)索引图像:[X,map]=imread(filename,fmt)[X,map]=imread(‘m83.tif’,‘tif’)1.图形图像文件的读取第49页,课件共100页,创作于2023年2月

imread函数可以从任何Matlab支持的图形文件中以特定的位宽读取图像。通常情况下,读取的大多数图像均为8bit。当这些图像加载到内存中时,Matlab就将其存储在类uint8中。

对于索引图像来说,即使图像阵列的本身为uint8或uint16,imread函数仍然将颜色映像表读取并存储到一个双精度的浮点类型的阵列中。注意第50页,课件共100页,创作于2023年2月

2.图形图像文件的写入(保存)利用imwrite函数可以完成图形图像文件的写入操作,其语法为:imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)Matlab缺省的保存方式:uint8数据格式。在Matlab中使用的许多图像都是8bit,并且大多数的图像文件并不需要双精度的浮点数据。imwrite(X,map,‘lena.bmp’,‘bmp’)第51页,课件共100页,创作于2023年2月

3.图形图像文件信息的查询Matlab提供了imfinfo函数用于从图像文件中查询其信息。所获取的信息依文件类型的不同而不同,但至少包含下面的内容。

文件名文件格式文件格式的版本号文件修改时间文件的字节大小图像的宽度(像素)图像的长度(像素)每个像素的位数图像类型(即该图像是RGB(真彩)图像、灰度图像还是索引图像)第52页,课件共100页,创作于2023年2月

查询图像信息

imfinfo('autumn.tif')第53页,课件共100页,创作于2023年2月

2.4.4图像文件的显示Matlab7.0图像处理工具箱提供了一个高级的图像显示函数imshow。其语法格式如下,灰度图像imshow(I)imshow(I,n)imshow(I,[lowhigh])二值图像imshow(BW)索引图像imshow(X,map)真彩色图像imshow(RGB)其中n为灰度级数目,缺省值为256。[lowhigh]为图像数据的值域。第54页,课件共100页,创作于2023年2月

索引图像包括一个数据矩阵X,一个颜色映像矩阵map。其中map是一个p×3的数据矩阵,其每个元素的值均为[0,1]之间双精度浮点型数据。map矩阵的每一行分别表示红色、绿色和蓝色的颜色值。而数据矩阵X可以是double和uint8型的,调用格式如下:

imshow(X,map)

1.索引图像及其显示第55页,课件共100页,创作于2023年2月

对于X的每个像素,imshow显示存储在map相应行中的颜色。图像矩阵中数值和调色板之间的关系依赖于图像矩阵的类型(double、uint8)。双精度类型:数值1→调色板的第1行,数值2→第2行;uint8类型:数值0→调色板的第1行,数值1→第2行,以此类推。第56页,课件共100页,创作于2023年2月

索引图像的double与uint8型123401230000.06270.062700010.29020.6270.6270.38200.35781doubleuint8图像数据调色板第57页,课件共100页,创作于2023年2月

索引图像的每一个像素都直接映射为调色板的一个入口。如果调色板包含的颜色数目多于图像颜色数目,那么额外的颜色都将被忽略;如果调色板包含的颜色数目少于图像颜色数目,则超出调色板颜色范围的图像像素都将被设置为调色板中的最后一个颜色。第58页,课件共100页,创作于2023年2月

例如,如果一幅包含256色的uint8索引图像,使用一个仅有16色的调色板显示,则所有数值大于或等于15的像素都将被显示为调色板的最后一个颜色。借助不同的调色板显示图像,课本P34,列出了10个产生调色板的函数,X=imread('cameraman.tif');map=pink(256);imshow(X,map);colorbar;%显示颜色条第59页,课件共100页,创作于2023年2月

2.灰度图像及其显示一幅灰度图像是一个数据矩阵I,其中数据均代表了在一定范围内的颜色灰度值。Matlab把灰度图像用数据矩阵的形式进行存储,每个元素则表示了图像中的每个像素。矩阵元素可以是doudle、uint8整数类型。多数情况下,灰度图像很少和颜色映像表一起保存,但在显示灰度图像时,Matlab仍然在后台使用系统预定义的缺省灰度颜色映像表。第60页,课件共100页,创作于2023年2月

(1)灰度图像显示最基本的调用格式

imshow(I)Matlab中imshow函数使用一个灰度级系统调色板(R=G=B)来显示灰度图像。如果I是double型,若像素值为0.0,则显示为黑色,1.0则显示为白色,0.0和1.0之间的像素值将显示为灰影。imshow函数显示灰度图像第61页,课件共100页,创作于2023年2月

imshow(I,n)例如:以下语句将显示一幅32个灰度级的图像I。imshow(I,32)(2)使用明确指定的灰度级数目(3)某些情况下,可能将一些超出数据惯例范围的数据显示为一幅灰度图像☆对于double型数组为[0,1],对于uint8型数组为[0,255]第62页,课件共100页,创作于2023年2月

为了将超过数据范围的数据显示为图像,用户可以直接定义数据范围,其调用格式如下,

imshow(I,[lowhigh])其中low、high分别为数据的最小和最大值。

如果用户使用一个空矩阵[]指定数据范围,imshow将自动进行数据标度。第63页,课件共100页,创作于2023年2月

3.RGB图像及其显示用imshow函数显示RGB图像基本的调用格式如下,imshow(RGB)参数RGB是一个m×n×3的数组。对于RGB中的每一个像素(r,c),imshow显示数值(r,c,1∶3)所描述的颜色。每个屏幕像素使用24位颜色系统直接显示真彩图像,系统给每个像素的红、绿、蓝颜色分量分配8位(256级),这样就有1000多万种颜色(224)。第64页,课件共100页,创作于2023年2月

4.二进制图像及其显示显示二进制图像用如下语句,imshow(BW)

在Matlab中,二进制图像是一个逻辑类,仅包括0和1两个数值,像素0显示为黑色,像素1显示为白色。在显示时,也可以通过NOT(~)命令,对二进制图像进行取反,使数值0显示为白色,1显示为黑色。例如:BW=imread(‘circles.png’);imshow(BW);figure,imshow(~BW);显示的结果如下图所示。第65页,课件共100页,创作于2023年2月

二进制图像显示效果第66页,课件共100页,创作于2023年2月

5.直接从磁盘显示图像通常,在显示一幅图像前首先要调用imread函数装载图像,将数据存储为Matlab工作平台中的一个或多个变量。但是,如果不希望在显示图像之前装载图像,则可以使用以下命令格式直接进行图像文件的显示,

imshowfilename

其中,filename为要显示的图像文件的文件名。imshowrice.pngimshow(‘rice.png’)第67页,课件共100页,创作于2023年2月

补充:多幅图像文件的显示figure,imshow功能:新建一个图像窗口,用于显示新图像(从而不让新的图像覆盖原来图像)。1.创建新的图像窗口,每个图像显示在一个窗口中调用imshow函数显示图像,如下页图所示。I=imread(′rice.png′)J=filter2([12;-1-2],I)%用模板[12;-1-2]对图像滤波imshow(I)figure,imshow(J,[])思考:如果没有figure的话,将产生什么结果?第68页,课件共100页,创作于2023年2月

用imshow显示滤波前后的图像第69页,课件共100页,创作于2023年2月

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(1,3,2),imshow(X2);subplot(1,3,3),imshow(X3);2.用子图、多个图像显示在一个图像窗口中第70页,课件共100页,创作于2023年2月

子图显示效果第71页,课件共100页,创作于2023年2月

补充:多帧图像的电影片段若一个tif的图像文件包含有多帧的图像,我们一般用immovie来实现创建电影片段的功能,比如说,以下调用将根据多帧索引图像X创建电影片段。

mov=immovie(X,map)mri=uint8(zeros(128,128,1,27));forframe=1:27[mri(:,:,:,frame),map]=imread('mri.tif',frame);endmov=immovie(mri,map);movie(mov);初始化一个包括27帧的灰度图像的文件mri.tif将mri.tif的每一帧读入图相应的图像帧中第72页,课件共100页,创作于2023年2月

2.4.5Matlab图像类型转换1.图像类型转换的必要性

对于索引图像进行滤波时,必须把它转换为RGB图像,否则光对图像的下标进行滤波,得到的结果是毫无意义的。2.各种类型图像的转换关系索引图像灰度图像真彩图像二值图像数据矩阵第73页,课件共100页,创作于2023年2月

工具箱中提供了许多图像类型转换的函数,从函数名称可以看出它们的功能。1.dither函数

功能:图像抖动,利用仅能显示少数彩色的设备显示含有丰富颜色信息图像的一种非常有用的方法。该函数可以把RGB图像转换成索引图像或把灰度图像转换成二值图像。

格式:X=dither(RGB,map)BW=dither(I)第74页,课件共100页,创作于2023年2月

抖动效果图第75页,课件共100页,创作于2023年2月

(1)RGB图像抖动成索引图像

例:I=imread('autumn.tif');map=pink(1024);X=dither(I,map);imshow(I);figure,imshow(X,map);colorbar第76页,课件共100页,创作于2023年2月

抖动效果图第77页,课件共100页,创作于2023年2月

(2)灰度图像抖动成二值图像例:I=imread('rice.png');bw=dither(I);imshow(I);figure,imshow(bw);第78页,课件共100页,创作于2023年2月

抖动效果图第79页,课件共100页,创作于2023年2月

功能:将灰度图像转换成索引图像。格式:[X,map]=gray2ind(I,n)

按照指定的灰度级n把灰度图像I转换成索引图像X,map为gray(n),n的缺省值为64。例:I=imread('cameraman.tif');[X,map]=gray2ind(I,16);imshow(X,map);figure,imshow(I);2.gray2ind函数第80页,课件共100页,创作于2023年2月

功能:通过设定阈值将灰度图像转换成索引色图像。格式:X=grayslice(I,n)

例:I=imread('cameraman.tif');X=grayslice(I,16);imshow(I);figure,imshow(X,bone(16));

3.grayslice函数第81页,课件共100页,创作于2023年2月

功能:将灰度图像、索引色图像和真彩色图像转化成二值图像。

格式:BW=im2bw(I,level)BW=im2bw(X,map,level)BW=im2bw(RGB,level)

level是一个归一化阈值,取值在[0,1]。4.im2bw函数例:真彩色转换为二值图像I=imread('autumn.tif');X=im2bw(I,0.5);imshow(I);figure,imshow(X);第82页,课件共100页,创作于2023年2月

功能:将索引图像转换成灰度图像。格式:I=ind2gray(X,map)5.ind2gray函数索引图像转换成灰度图像第83页,课件共100页,创作于2023年2月

功能:将索引色图像转换成真彩色图像。格式:RGB=ind2rgb(X,map)例:[I,map]=imread('m83.tif');X=ind2rgb(I,map);imshow(I,map);figure,imshow(X);6.ind2rgb函数第84页,课件共100页,创作于2023年2月

功能:将一个数据矩阵转换成一幅灰度图像。格式:I=mat2gray(A,[aminamax])I=mat2gray(A)7.mat2gray函数功能:将一幅真彩色图像转换成灰度图像。

格式:I=rgb2gray(RGB)

例:RGB=imread('autumn.tif');X=rgb2gray(RGB);imshow(RGB);figure,imshow(X);

8.rgb2gray函数第85页,课件共100页,创作于2023年2月

转换效果图第86页,课件共100页,创作于2023年2月

功能:将真彩色图像转换成索引色图像。

格式:

[X,map]=rgb2ind(RGB,n)

例:RGB=imread('autumn.tif');[X,map]=rgb2ind(RGB,128);imshow(RGB);figure,imshow(X,map);

9.rgb2ind函数第87页,课件共100页,创作于2023年2月

补充:图像的纹理映射

对于一个真彩色图像来说,warp函数可以把它通过图像纹理映射创建一个三维效果。[x,y,z]=cylinder;%创建一个圆柱面I=imread(‘autumn.tif’);%读取一个真彩色图像warp(x,y,z,I);%把图像映射成圆柱体的表面纹理第88页,课件共100页,创作于2023年2月

补充:图像的空间变换

将输入图像的像素映射到输出图像的新位置,如调整图像大小、旋转、剪切等。△调整图像的大小-imresize

Y=imresize(X,M);其中M>1表示放大,0<M<1表示缩小。

Y=imresize(X,[MN]);产生一个指定的M×N大小的图像Y。第89页,课件共100页,创作于2023年2月

△图像的旋转-imrotate

Y=imrotate(X,angle,method);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论