8位纯数字 由两个数字重叠组成 数字为1个1,2个2,3个3以此类推 英语,

若P是一个由数字1,2,3,4,5,6,7,8,9,组成的2n位正整数,并同时满足如下两个条件:①数字1,2,3,…,n在P中各出现两次;②每两个相同的数字i(i=1,2,3,…,n)之间恰有i个数字..域名:学优高考网,每年帮助百万名学子考取名校!问题人评价,难度:0%若P是一个由数字1,2,3,4,5,6,7,8,9,组成的2n位正整数,并同时满足如下两个条件:①数字1,2,3,…,n在P中各出现两次;②每两个相同的数字i(i=1,2,3,…,n)之间恰有i个数字。此时,我们称这样的正整数P为“好数”。例如,当n=3时,P可以是312132。试确定满足条件的正整数n的值;并各写出一个相应的好数P。马上分享给朋友:答案还没有其它同学作出答案,大家都期待你的解答点击查看答案解释还没有其它同学作出答案,大家都期待你的解答点击查看解释相关试题第2章 Matlab图像处理工具箱 图像处理软件Photoshop是一种著名的图像处理软件,该软件能够实现图像显示、增强、剪切、滤波等一系列操作,效果非常不错,该软件生成的图像格式.psd已经作为国际标准予以应用。图像处理= Photoshop? 针
对不同的领域需要不同的图像处理算法,因此掌握一门高级语言来编写自己的图像处理程序,MATLAB无疑是一个不错的选择。 2.1 Matlab简介Matlab (Matrix Laboratory) 是当今很流行的科学计算软件。信息技术、计算机技术发展到今天,科学计算在各个领域得到了广泛的应用,在诸如控制论、时间序列分析、系统仿真、图像信号处理等方面产生了大量的矩阵及其他计算问 题。Matlab软件适时推出,为人们提供了一个 方便的数值计算和动态仿真平台。 Matlab简介-特点1 高效、简单的程序环境Matlab是一个交互式的系统,其开发环境是MATLAB语 言的基础和核心部分,全部功能都能在开发环境中实现。2 强大的数值运算功能提供大量的矩阵及其它运算函数,方便地进行一些很复 杂的计算,而且运算效率极高。Matlab命令和数学中的符号、 公式非常接近,可读性强,容易掌握。3 丰富的工具箱根据各专门领域中的特殊需要提供了许多可选的工具箱, 已有涉及数学、控制、通信、信号处理、图像处理、经 济、地理等多种学科的20多种Matlab工具箱投入应用。 变量管理中心,可以显 示变量的名称、尺寸、 字节和类别等信息。Matlab简介-开发环境可以在提示符后键 入各种命令 提供当前路径下文 件的操作。显示已执行过的命 令及相应时间。系统中全部程序和帮助文件 的管理和启动功能。 Matlab简介-M文件Matlab通常使用命令驱动方式,当单行命令输入时,Matlab立即处理并显示结果,同时将运行 说明和命令存入历史命令窗口。Matlab语句的磁 盘文件称作M文件,因为这些文件名的末尾是.M 形式。M文件有两种类型:命令(Script)文件函数(function)文件 命令(Script)文件第一类型M文件称为命令(Script)文件,特点如下:(1)最简单的M文件,它是一系列命令、语句的简单组合; (2)没有输入和输出参数; (3)顺序执行文件后变量是全局变量,保存 在工作空间中; (4)可以直接运行。 命令(Script)文件例:%绘制花瓣theta=-pi:0.01: 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)将所有命令复制粘贴到命令行窗口,按回车执行。 (2)在M文件编辑器中选择?Debug?,再选 ?Run? 运行,或直接按?F5?运行程序。(3)在命令行中键入文件名,再回车,注意不要加扩展名?.m? 。 注意M文件命名时不要用纯数字,这样会导致错误的结果。若有一个名为?1.m?的M文件,运行 后 的结果只能是1。 函数(Function)文件函数文件的特点如下:(1)以function为引导;(2)可以接受输入、输出参数;(3)内部变量为局部变量,运行完被释放。 (4)不能直接运行,必须调用。 函数(Function)文件function X=total (n) %total 计算从1到n的n个数之和 注释行:在命令窗口键入help %如果n比1小,则提示错误。 total后显示出来.显示内容为 连续的若干个%右边的文字。 if n&1 error ('Input must be larger than 1'); end k=1:n; 函数体:包括函数的全部程序代码 X=sum (k);函数定义行 function 函数名,输入变量,输出变量 注意函数文件编写完之后,保存的 文件名必须与函数名同名! 2.2 Matlab常用的基本命令1. 常用矩阵的生成( 1) 全 0A=zeros(n): 生成n×n的全0A=zeros(m,n): 生成m×n的全0 A=zeros(a1,a2,a3,…): 生成a1×a2×a3×…的全0 矩 A=zeros(size(B)): 生成与矩阵B大小相同的全0矩阵。 (2) 全1A=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矩阵。 (3) 单位矩阵A=eye(n): 生成n×n的单位矩阵;A=eye(m,n): 生成m×n的单位矩阵;A=eye([m,n]): 生成m×n的单位矩阵; A=eye(size(B)): 生成与矩阵B大小相同的单位矩阵。 (4)A=rand(n): 生成n×nA=rand(m,n): 生成m×nA=rand([m,n]): 生成m×nA=rand(a1,a2,a3,…): 生成a1×a2×a3×…的随机矩阵; A=rand(size(B)): 生成与矩阵B大小相同的随机矩阵。 ( 5)A=randn(n): 生成n×nA=randn(m,n): 生成m×nA=randn([m,n]): 生成m×n A=randn(a1,a2,a3,…): 生成a1×a2×a3×…的随机矩阵; A=randn(size(B)): 生成与矩阵B大小相同的随机矩阵。 2. 简单矩阵的生成在Matlab中,可以采用多种不同的方式生成矩阵。 (1) 直接输入矩阵元素 对于较小的简单矩阵,从键盘上直接输入矩阵是最常用的数值矩阵创建方法,需要遵循以下几个基本原则:① 矩阵每行的元素之间必须用空格或逗号分开;②③在矩阵中,采用分号或回车表明每行的结束;整个输入矩阵必须包含在方括号中。 (2) 从外部数据文件调入矩阵元素 用Matlab生成的矩阵存储成二进制文件或包含数值数据的文本文件可以生成矩阵。文本文件中,数据必须排成一个数据表,数据之间用空格分隔,文件的每行包含矩阵的一行,并且每行的元素个数必须相等。 (3) 利用用户文件创建的M文件矩阵 当矩阵的尺寸较大时,直接在命令窗口输入元素就显 得比较笨拙,容易出现错误且不便修改。为了解决这个问题,按照原来的创建原则写入一个M文件,运行该M文件,即将矩阵调用到工作空间。 3.Matlab可以采用多种不同的方式生成向量。(1)冒号?:?是Matlab中常用算子之一,不仅可以作数组下标,对数组元素进行引用、增加和删除,还可以 冒号?:?使用下列格式生成均匀等分向量。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=[ Matlab常用命令命令clear clc clf who whos功能工作空间中清除所有变量 清除命令窗口中显示内容 清除图形窗口内容 列出当前工作空间中的变量 列出当前工作空间中的变量及信息 获得在线帮助help &命令名& 补充:矩阵的基本操作1.利用矩阵创建矩阵* diag(A) -返回矩阵A对角元素成列向量;* diag(v)* flipud(A) * fliplr(A) * rot90(A) * tril(A) * triu(A)-以向量v作对角元素创建矩阵;-矩阵上下翻转; -矩阵左右翻转; -矩阵逆时针翻转90度; -提取矩阵A的下三角矩阵; -提取矩阵A的上三角矩阵。 2. 寻访矩阵中的数据* x=[1 2 3 4 5] %产生1×5的数组* b=x(3)* b=x([1 2 5]) * b=x(1:3)%寻访数组x的第3个元素%寻访x的第1、2、5元素 %寻访前三个元素* b=x(3:end)* b=x(find(x&3)) * b=x(3:-1:1)%寻访第三个元素到最后一个%由大于3的元素构成数组 %由前3个数倒排成数组* b=x([1 2 3 4 4 3 2 1]) %对元素的重复访问 3. 修改数据* x=[1,2,3;4,5,6;7,8,9] %产生3×3的矩阵* b=x(find(x&4))* x(2,2)=10%大于4的元素构成数组%第2行第2列值改为10* x(3,:)=20* x=ones(5) * x(2:4,2:4)=0%第3行的值改为20%产生5×5全为1的矩阵 %第2、3、4行的第2、3、4列元素改0 4. 插入、提取、拉长及臵空插入:x=4:6;A=[x-3;x;x+3] %插入创建新矩阵提取:C=A(1:2,2:3)拉长:D=A(:)%提取A的部分%拉长成列臵空:A(:,2)=[]%删除A的第二列 5. 矩阵的规模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) %返回行数、列数最大者 练习 已知:矩阵A=[3 2 5 3 3 4 7 2 4 2 7 1 6 试对矩阵矩阵A进行操作得 4 5 到以下结果。 1]① 返回矩阵A的大小; ②返回矩阵A1=[5 7 7 6 5],A2=[3 3 4 6]; ③返回矩阵A3=[1 1 2 3 A4=[3 3 4 6 5 7 7 5 4 2 4 2 6 4 3 3] 2 4 2 4 8 8 8 8 3 2 1 1] A5=[3 4 6 2 2 4 5 7 5 3 1 1] 2.3 图像处理工具箱简介Matlab是一种基于向量(数组)而不是标量的高级程序语言,因而Matlab从本质上就提供了对图像的支持。数字图像实际上是一组有序离散的数据,使用Matlab可以对这些离散数据形成的矩阵进行一次性的处理。 Matlab对图像的处理功能主要集中在它的图像处理工 具箱(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 Matlab中的图像类型及类型转换2.4.1 图像和图像数据Matlab中的数字图像是由一个或多个矩阵表示的, Matlab强大的矩阵运算功能完全可以应用于图像,那 些适用于矩阵运算的语法对Matlab中的数字图像同样 适用。 缺省:double (64位浮点数) uint8(无符号8位整型) 本节的讲授思路图像的四种类型图像的读取、写 入、信息查询图像的显示图像类型转换 2.4.2 图像处理工具箱所支持的图像类型图像处理工具箱支持4 真彩色图像(RGB images索引色图像(index images灰度图像(intensity images二值图像(binary images)此外,Matlab还支持由多帧图像组成的图像序列。 1. 真彩色图像真彩色图像用 R、G、B 3个分量表示1个像素的颜色,所以对1个尺寸为m×n的真彩色图像来说,其数据结构就是一个m×n×3的多维数组。如果要读取图像中(100,50)处的像素值,可以查看三元组(100,50,1∶3)。 真彩色图像可用双精度存储,此时亮度值的范围是 [0,1]。常用的存储方法是用无符号整型存储,亮度值 的范围为[0,255]。 真彩色图像数据格式双精度类: Double 整数类:Uint8(每个像素占8个字节) (每个像素占1个字节)数组大小:m×n×3 数组大小:m×n×3 (:,:,1)-红色分量 (:,:,1)-红色分量 (:,:,2)-绿色分量 (:,:,2)-绿色分量 (:,:,3)-蓝色分量 (:,:,3)-蓝色分量 像素取值:[0,1] 像素取值:[0,255] 图2.2 真彩色图像的结构 2.索引图像是把像素值直接作为RGB调色板下标的图像。Matlab中的索引色图像包含2个结构,一个是调色板map;另外一个是图像数据矩阵X。调色板是一个有3列和若干行的色彩映像矩阵,矩阵的每行都代表一种色彩,通过3个分别代表红、绿、蓝颜色强度的双精度数,形成一 种特定的颜色。图像数据可以是uint8或是双精度 需要注意的是Matlab中的调色板的色彩强度是[0,1] 中的浮点数,0代表最暗,1代表最亮。 图2.3 索引色图像的结构 索引图像的数据格式双精度类:Double(每个元素占8个字节)整数类:Uint8(每个元素占1个字节)图像数组大小:m×n图像元素取值:[1,p] 调色板矩阵:p×3图像数组大小:m×n图像元素取值:[0,p-1] 调色板矩阵:p×3 3. 灰度图像存储灰度图像只需 要一个数据矩阵,数 据类型可以是double 也可以是uint8。 存储时会使用一个默认的调色板来显示图像。 4. 二值图像与灰度图像相同,二值图像只需一个数据矩阵,每个 像素只有2个灰度值。可以采用uint8或double类型存 储,工具箱中以二值图像作为返回结果的函数都使用 uint8类型。 5. 图像序列图像处理工具箱支持将多帧图像连接成图像序列。可以 使用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幅400×300真彩色图像的序列,其大小为 400×300×3×5 一个包含了5幅400×300灰度或是索引图像的序列,其大 小为 400×300×1×5 A=cat (4,A1,A2,A3,A4,A5), 4维 提取其中一帧(如第2帧) A(:,:,:,2) 2.4.3 图像文件的读写和查询imread:读取图形文件格式的图像;imwrite:写入图形文件格式的图像;imfinfo:获取图像的信息; load\save:以Mat文件加载或保存矩阵数据; imshow:显示加载到Matlab中的图像。 1. 图形图像文件的读取利用函数imread可以完成图形图像文件的读取操作, 其语法如下,一般:A=imread(filename, fmt)索引图像:[X, map]=imread(filename, fmt)[X, map]=imread(‘m83.tif’, ‘tif’) imread函数可以从任何Matlab 支持的图形文件中以特定的位宽读取图像。通常情况下,读取的大多数图像 均为8bit。当这些图像加载到内存中时,Matlab就将其 存储在类uint8 注意 对于索引图像来说,即使图像阵列的本身为uint8或 uint16,imread函数仍然将颜色映像表读取并存储到一 个双精度的浮点类型的阵列中。 2. 图形图像文件的写入(保存)利用imwrite函数可以完成图形图像文件的写入操作, 其语法为: imwrite(A, filename, fmt)imwrite(X, map, filename, fmt)Matlab 缺省的保存方式:uint8数据格式。在Matlab中使用的许多图像都是8bit,并且大多数的图像文件并不需要双精度的浮点数据。 imwrite(X, map, ‘lena.bmp’, ‘bmp’) 3.所获取的信息依文件类型的不同而不同,但至少包含下面Matlab提供了imfinfo函数用于从图像文件中查询其信息。文件名 文件格式的版本号 文件的字节大小 图像的长度(像素) 图像的宽度(像素) 每个像素的位数图像类型(即该图像是RGB(真彩)图像、灰度图像还是 索引图像) 查询图像信息imfinfo('autumn.tif') 2.4.4 图像文件的显示Matlab 7.0图像处理工具箱提供了一个高级的图像显 示函数imshow 灰度图像 imshow(I) imshow(I, n) 二值图像 imshow(BW) 索引图像 imshow(X, map) 真彩色图像 imshow(RGB)其中n为灰度级数目,缺 省值为256。[low high] 为图像数据的值域。imshow(I, [low high]) 1.索引图像包括一个数据矩阵X,一个颜色映像矩阵map。其中map是一个p×3的数据矩阵,其每个元素的值均为[0, 1]之间双精度浮点型数据。map矩阵的每一行分别 表示红色、绿色和蓝色的颜色值。而数据矩阵X可以是 double和uint8型的,调用格式如下: imshow(X, map) 对于X的每个像素,imshow显示存储在map相应行中 的颜色。图像矩阵中数值和调色板之间的关系依赖于图 像矩阵的类型(double、uint8 )。 双精度类型:数值1→调色板的第1行,数值2→第2行; uint8类型: 数值0→调色板的第1行,数值1→第2行, 以此类推。 索引图像的double与uint8型1 3 2 0 1 3图像数据42double0 0..0调色板0 0..627 0. 1uint80.627 1 索引图像的每一个像素都直接映射为调色板的一个入 口。如果调色板包含的颜色数目多于图像颜色数目,那 么额外的颜色都将被忽略;如果调色板包含的颜色数目 少于图像颜色数目,则超出调色板颜色范围的图像像素 都将被设臵为调色板中的最后一个颜色。 例如,如果一幅包含256色的uint8索引图像,使用 一个仅有16色的调色板显示,则所有数值大于或等于 15的像素都将被显示为调色板的最后一个颜色。 借助不同的调色板显示图像,课本P34,列出了10个产生调色板的函数,X=imread('cameraman.tif'); map=pink(256);imshow(X,map);%显示颜色条 2. 灰度图像及其显示一幅灰度图像是一个数据矩阵 I,其中数据均代表了 在一定范围内的颜色灰度值。Matlab 把灰度图像用数 据矩阵的形式进行存储,每个元素则表示了图像中的每 个像素。矩阵元素可以是doudle、uint8整数类型。多数情况下,灰度图像很少和颜色映像表一起保存,但在显示灰度图像时,Matlab 仍然在后台使用系统预 定义的缺省灰度颜色映像表。 imshow (1) 灰度图像显示最基本的调用格式 imshow(I) Matlab 中 imshow函数使用一个灰度级系统调色板 (R=G=B)来显示灰度图像。如果I是double型,若 像素值为0.0,则显示为黑色,1.0则显示为白色,0.0 和1.0之间的像素值将显示为灰影。 (2) 使用明确指定的灰度级数目 imshow(I, n)例如:以下语句将显示一幅32个灰度级的图像I imshow(I, 32) (3) 某些情况下,可能将一些超出数据惯例范围的数据显示为一幅灰度图像☆ 对于double型数组为[0,1],对于uint8型数组为[0,255] 为了将超过数据范围的数据显示为图像,用户可以直接定义数据范围,其调用格式如下,imshow(I,[low high]) 其中low、high分别为数据的最小和最大值。如果用户使用一个空矩阵[ ]指定数据范围, imshow将 自动进行数据标度。 3. RGB图像及其显示用imshow函数显示RGB图像基本的调用格式如下, imshow(RGB) 参数RGB是一个m×n×3的数组。对于RGB中的每一 个像素(r,c),imshow显示数值(r,c,1∶3)所描述的颜色。每个屏幕像素使用24位颜色系统直接显示真彩图像,系统给每个像素的红、绿、蓝颜色分量分配8位 (256级),这样就有1000多万种颜色(224)。 4.显示二进制图像用如下语句, imshow(BW) 在Matlab 中,二进制图像是一个逻辑类,仅包括0和 1两个数值,像素0显示为黑色,像素1 在显示时,也可以通过NOT(~)命令,对二进制图像进行取反,使数值0显示为白色,1例如: BW=imread(‘circles.png’); imshow(BW); figure, imshow(~BW); 二进制图像显示效果 5.通常,在显示一幅图像前首先要调用imread函数装载图像,将数据存储为Matlab工作平台中的一个或多个变量。但是,如果不希望在显示图像之前装载图像,则可 imshow filename 其中,filename为要显示的图像文件的文件名。 imshow rice.png imshow(‘rice.png’) 补充:多幅图像文件的显示1.创建新的图像窗口,每个图像显示在一个窗口中 figure,imshow功能:新建一个图像窗口,用于显示新图像(从而不让新的图像覆盖原来图像)。 调用imshow函数显示图像,如下页图所示。 I=imread(′rice.png′) J=filter2([1 2;-1 -2],I) %用模板[1 2;-1 -2]对imshow(I)figure,imshow(J,[ ])思考:如果没有figure的话, 将产生什么结果? 用imshow显示滤波前后的图像 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); 子图显示效果 补充:多帧图像的电影片段若一个tif的图像文件包含有多帧的图像,我们一般用 immovie来实现创建电影片段的功能,比如说,以下调用 将根据多帧索引图像X创建电影片段。 mov=immovie(X,map) mri=uint8(zeros(128,128,1,27)); for frame=1:27 end mov=immovie(mri,map);初始化一个包括27帧 的灰度图像的文件 mri.tif[mri(:,:,:,frame),map]=imread('mri.tif',frame);movie(mov);将mri.tif的每一帧读入图 相应的图像帧中 2.4.5 Matlab图像类型转换1.图像类型转换的必要性 对于索引图像进行滤波时,必须把它转换为RGB图 像,否则光对图像的下标进行滤波,得到的结果是毫无 意义的。2.各种类型图像的转换关系索引图像 灰度图像 数据矩阵真彩图像二值图像 工具箱中提供了许多图像类型转换的函数,从函数名称可以看出它们的功能。1. dither函数 功能:图像抖动,利用仅能显示少数彩色的设备显示含 有丰富颜色信息图像的一种非常有用的方法。 该函数可以把RGB图像转换成索引图像或把灰度图像转换成二值图像。格式:X=dither(RGB,map) BW=dither(I) 抖动效果图 (1) RGB图像抖动成索引图像例: I=imread('autumn.tif');map=pink(1024); X=dither(I,map); imshow(I);figure,imshow(X,map); colorbar 抖动效果图 (2) 灰度图像抖动成二值图像例: I=imread('rice.png');bw=dither(I);imshow(I);figure,imshow(bw); 抖动效果图 2. gray2ind函数格式:[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); 3. grayslice函数 功能:通过设定阈值将灰度图像转换成索引色图像。 格式:X=grayslice(I, n)例:I=imread('cameraman.tif');X=grayslice(I,16); imshow(I); figure,imshow(X,bone(16)); 4. im2bw函数功能:将灰度图像、索引色图像和真彩色图像转化成二值图像。 格式:BW=im2bw(I, level) BW=im2bw( X, map, level) BW=im2bw(RGB, level)level是一个归一化阈值,取值在[0,1]。例:真彩色转换为二值图像I=imread('autumn.tif'); X=im2bw(I,0.5); imshow(I); figure,imshow(X); 5. ind2gray函数 功能:将索引图像转换成灰度图像。 格式:I= ind2gray(X, map)索引图像转换成灰度图像 6. ind2rgb 格式:RGB=ind2rgb(X, map)例: [I,map]=imread('m83.tif');X=ind2rgb(I,map); imshow(I,map); figure,imshow(X); 7. mat2gray 功能:将一个数据矩阵转换成一幅灰度图像。格式:I=mat2gray(A, [amin amax])I=mat2gray(A) 8. rgb2gray 功能:将一幅真彩色图像转换成灰度图像。 格式:I= rgb2gray(RGB)例: RGB=imread('autumn.tif');X=rgb2gray(RGB); imshow(RGB);figure,imshow(X); 转换效果图 9. rgb2ind 功能:将真彩色图像转换成索引色图像。 格式: [X,map] = rgb2ind(RGB,n)例:RGB=imread('autumn.tif');[X,map]=rgb2ind(RGB,128); imshow(RGB); figure,imshow(X,map); 补充:图像的纹理映射对于一个真彩色图像来说, warp函数可以把它通过 图像纹理映射创建一个三维效果。 [x,y,z]=%创建一个圆柱面 I=imread(‘autumn.tif’);%读取一个真彩色图像warp(x,y,z,I);%把图像映射成圆柱体的表面纹理 补充:图像的空间变换将输入图像的像素映射到输出图像的新位臵,如调整图像大小、旋转、剪切等。△ 调整图像的大小-imresize Y=imresize(X,M); 其中M>1表示放大,0<M<1表示缩小。Y=imresize(X,[M N]);产生一个指定的M×N大小的图像Y。 △ 图像的旋转-imrotateY=imrotate(X, angle, method); Y=imrotate(X, angle, method, ’crop’); 其中angle为逆时针旋转的角度,method为插值方法,指 定‘crop’参数对旋转后的图像进行剪切。例: I=imread('lena.bmp');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); 若不指定区域,则光标会变成十字型,可通过拖拽鼠 标选择矩形,释放鼠标后,将产生一个新的图像。 补充:图像的运算△ 图像的加法imadd(X,Y);Y可以是另一幅图像,也可以是一个常数。例1: I=imread('rice.png');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); △ 图像的减法 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(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);
第2章 Matlab图像处理工具箱1.Matlab基础 2.Matlab图像处理工具箱 四种图像类型 四种图像类型的读取,写入,查询信息四种图像类型的显示图像类型的相互转换(九个函数) 补充:图像的运算
数字图像处理王慧琴版第2章——为大家提供各种日常写作指导,同时提供范文参考。主要栏目有:范文大全、个人简历、教案下载、课件中心、 优秀作文、考试辅导、试题库、诗词鉴赏。
相关文档:
下载文档:
搜索更多:
All rights reserved Powered by
copyright &copyright 。甜梦文库内容来自网络,如有侵犯请联系客服。|

我要回帖

更多关于 以此类推 日语 的文章

 

随机推荐