第十一章 Matlab图像处理应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11.5 图像的线性过滤操作
在冲洗照片时,有时底片有一些瑕疵,专业人员可以通过对底 片的修改来完善我们的照片,这就相当于一次过滤。当然我们这 里对图像的过滤是通过某种数学的方法,突出或忽略图像的某些 特征。
11.5.1 卷积滤波convolution
对图像矩阵施以一个矩阵的加工,即通过图像矩阵与一个过滤 矩阵的乘积生成一个新的图形矩阵,这种变换即称卷积过滤操作。 【例7.5.1】对一个图像矩阵进行卷积滤波,A为图像矩阵,h为一 个卷积矩阵 h=[8 1 6 A = [ 17 24 1 8 15 3 5 7 23 5 7 14 16 4 9 2] 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 ]
索引图像是由一个数据矩阵X和一个颜色映像矩阵Map组成。
11.2.2 强度图像 (Intensity)
MATLAB中的强度图像也就是Windows下的灰度图像。一幅强度 图像有一个数据矩阵I,其元素代表了该点的颜色强度值。矩阵中 的元素可以是双精度的浮点类型、8位或16位无符号的整数类型。 在多数情况下,强度图像很少和颜色映像表一起保存。
结果图像为图11.2.3
11.3 图像的读、写பைடு நூலகம்显示
要对图形进行加工,首先就需要将图像文件从存储设备上 读入计算机内存。对加工后的图像按某种格式进行输出等等,图 像输入输出和有关的命令列表如下:
11.3.1 图像文件的读入 读入文件命令的一般格式为: A = imread(filename,fmt) [X,map] = imread(filename,fmt)
imgsize=size(img);
figure(1); imshow(img);
11.3.2 图形的显示
一般语法为: imshow(I,n) imshow(BW) imshow(RGB) % 显示强化图形,及其强度。 % 显示黑白图形 % 显示真彩图形 imshow(I,[low high]) imshow(X,map) % 显示索引图形X,并伴随图形矩阵map imshow(...,display_option)
可读入的图形格式为:
【例11.3.1】2001年全国大学生数学建模中,我们要把血管的横 截面图像文件读入内存,在进行各种加工,MATLAB程序如下: clc; img=imread('f:\zhang\a_test_bmp\38.bmp'); % 在指定的路径下将指定的文件读入计算机 imgEdgeMatrix=edge(img,'roberts'); [imgEdgeX,imgEdgeY]=find(imgEdgeMatrix==1); edgesize=size(imgEdgeX) maxCircle=0;
fmt:为输出文件的格式
注意:fbmp.bmp的大小为65kb,fjpg.jpg为2kb
11.3.4 图形的信息命令 利用imfinfo命令可以查询图像的有关信息,例如:
文件名 文件格式 文件格式的版本号 文件修改时间 文件的大小 图像的宽度 图像的长度 每个像素的位数 图像的类型,如是否为真彩色或强度图像等。
11.4.3 图像的剪切
图像剪切命令为imcrop,这是一个交互命令,即当执行到该 命令时拉动鼠标选择一个区域后即可将该区域裁剪下来。 【例7.4.3】将所给的图像进行截取 I=imread('saturn.tif') imshow(I) J=imcrop(I) subplot(1,2,1), subimage(I) subplot(1,2,2), subimage(J)
imshow(x,y,A,...)
imshow filename h = imshow(...)
【例11.3.3】读入地球气象图,并用强度图显示出来。 load earth image(X,map)
11.3.3 图像的输出 图像输出的一般命令格式下: imwrite(A,filename,fmt) imwrite(X,map,filename,fmt) imwrite(...,filename) imwrite(...,Param1,Val1,Param2,Val2...)
NewSubfileType: 0 BitsPerSample: [8 8 8] Compression: 'Uncompressed' PhotometricInterpretation: 'RGB' StripOffsets: [73x1 double] SamplesPerPixel: 3 RowsPerStrip: 5 StripByteCounts: [73x1 double] XResolution: 72 YResolution: 72 ResolutionUnit: 'Inch' Colormap: [] PlanarConfiguration: 'Chunky' TileWidth: [] TileLength: [] TileOffsets: [] TileByteCounts: [] Orientation: 1
【例11.3.2】读入一个图像文件并显示的信息 imread('flowers.tif') info=imfinfo('flowers.tif') 则计算结果为: info = Filename: 'D:\MATLAB6p1\toolbox\images\imdemos\flowers.tif' FileModDate: '26-Oct-11196 06:11:10' FileSize: 543962 Format: 'tif' FormatVersion: [] Width: 500 Height: 362 BitDepth: 24 ColorType: 'truecolor' FormatSignature: [73 73 42 0] ByteOrder: 'little-endian' NewSubfileType: 0
分别为8位数,这样可以调制成上千万种颜色。在MATLAB中可
以用image(RGB)命令来显示真彩图像,例如: 【例11.2.3】读入并显示真彩色图像 X=imread('flowers.tif'); imwrite(X,'ff.jpg','Quality',100) imfinfo('ff.jpg') image(imread(‘ff.jpg’)) axis image off %读取TIFF格式的图象文件 %图象以JPG格式文件保存 %读取图象文件特征信息 %读取JPG格式文件,并显示图像 %保持宽高比和隐去坐标
[...] = imread(filename) [...] = imread(...,idx) (CUR, ICO, and TIFF only) [...] = imread(...,ref) (HDF only) [...] = imread(...,'BackgroundColor',BG) (PNG only) [A,map,alpha] = imread(...) (PNG only) 这里: Filename: 文件的路径和名字 Fmt:为读入的图形文件的格式 X:输出的文件 Map:为颜色矩阵
11.4 图像的几何加工处理
MATLAB 提供了很多有效的命令来进行对图像的加工处理, 例如我们可以对图像进行变换、可以获得图像的边界、改变图像 的亮度和对比度等等。 11.4.1 图像的缩放操作 B = imresize(A,m,method) B = imresize(A,[mrows ncols],method) B = imresize(...,method,n)
显示一幅强度图像时需要函数imagesc。我们来看一个例子 【例11.2.2】读入并显示灰度图像 load clown clims = [10 60]; imagesc(X,clims) colormap(gray) 结果见图11.2.2
11.2.3 真彩图像 (RGB)
真彩图像在MATLAB ZH 中存储为n×m×3的超立体数组,它定 义了图像像素的平面位置和该点的颜色。颜色元素中红、绿、蓝
图11.1.1
打开 Image Processing Toolbox,我们可以看到有关图像处理 的详细资料、一个典型的例子、和对图像进行处理的所有命令的列 表。
11.2 image图像的基本概念
图像文件是以BMP、HDF、JPEG、PCX、BNG、TIFF、 XWD为扩展名的WINDOWS文件。MATLAB对于图像的存储形式 大部分是用二维数组(矩阵)进行的,矩阵中的一个元素对应图像 的一个像素,例如:一个由200行300列不同颜色的点组成的图像 可以用200×300的矩阵来表示。而有些图像例如RGB即真彩色的 图像需要三维的数组来表示,第一维是红色像素的深度,第二维是 绿色像素的深度,第三维是兰色像素的深度。 图像分三种类型 索引图像 强度图像
真彩(RGB)图像
11.2.1 索引图像 (Indexed)
其中Map是一个m×3的数据矩阵,其每一个元素是[0,1]之间 的双精度浮点型数据,每一行是一个有红、绿、蓝调色成的一个 点。这样矩阵X的行定位了一个像素的平面位置,Map矩阵相应 的行定义了该点的颜色。我们可以用以下命令显示一幅索引图像 【例11.2.1】读入一个图像文件并显示出来 load clown % 输入一个图形文件 clims = [10 60]; image(X) colormap(map) 则索引图像为图11.2.1
B = imresize(...,method,h)
其中参数mathod含义如下: nearest 系统内定,最近邻插值
bilinear 双线性插值
bicubic 双立方插值
【例11.4.1】读入一幅图像,放大一倍并同时显示出来 I=imread('ic.tif') J=imresize(I,2,'bicubic') %利用双立方插值放大一倍 subplot(1,2,1), subimage(I) subplot(1,2,2), subimage(J)
第十一章 图像处理工具箱
11.1 图像处理工具箱知识点搜索 11.2 图像处理的基本概念 11.3 图像的读、写、显示 11.4 图像的几何加工处理 11.5 图像的线性过滤操作 11.6 图像的函数变换 11.7 图像的加工和分析
图像作为一种特殊的数据近来已经作为科学计算的对象,而 近几年的数学建模竞赛也不断出现有关的题目。例如2001年全 国大学生数学建模竞赛的A题,给你一段血管的100个横截面的 图像,让你再现真实血管的中心曲线的公式。2002年美国数学 建模竞赛的C题,给你一张美国佛罗里达某类蜥蜴的栖息地地图 让你建立该种群的生存与栖息地的关系等等。
这里: X=imread('flowers.tif'); imwrite(X,'fbmp.bmp','bmp') imwrite(X,'fjpg.jpg','jpg') image(imread('fbmp.bmp')) figure(2) image(imread('fjpg.jpg'))
filename:输出的文件
11.4.2 图像的旋转 对图像旋转的命令为:
B = imrotate(A,angle,method)
B = imrotate(A,angle,method,'crop')
【例11.4.2】对读入的图像进行旋转并显示 I=imread(‘saturn.tif’) % 读入土星图象数据
J=imrotate(I,45,‘bicubic’) % 旋转45度 subplot(1,2,1), subimage(I) subplot(1,2,2), subimage(J)
MATLAB提供了一个强大的图像处理功能,包括各种类型图像文 件的读入、输出。图像的各种加工命令等。本章介绍image图像 的基本概念和计算机上的存储方式,各种对图像进行操作的命令, 以及一些数学建模中的一些例子。
11.1 图像处理模块知识点搜索
在MATLAB的Help界面的左下的栏进行搜索,在该栏中 可以看到一个Image Processing Toolbox即图像处理工具箱, 见图11.1.1
相关文档
最新文档