全部商品分类

您现在的位置: 全部商品分类 > 电子电脑 > 电工无线电自动化 > 无线电电子.电讯

MATLAB图像处理(理论算法与实例分析)/科学与工程计算技术丛书

  • 定价: ¥109
  • ISBN:9787302555247
  • 开 本:16开 平装
  •  
  • 折扣:
  • 出版社:清华大学
  • 页数:533页
我要买:
点击放图片

导语

  

内容提要

  

    本书主要介绍了数字图像处理理论、算法及MATLAB实现。全书共13章,主要内容包括数字图像处理概述、MATLAB基础知识、MATLAB图像处理基础、图像基础性运算、图像正交变换、图像增强、图像复原、图像数学形态学处理、图像分割、图像描述与分析、图像压缩编码、图像匹配、MATLAB图像处理GUI设计,涉及MATLAB图像处理基础、图像基础处理算法及实现、图像分析及实现、图像综合处理及实现。
    本书由浅入深,全面、系统地讲解了各种处理算法的原理及MATLAB实现,内容翔实,有充足的编程实例,便于读者学习、实践和应用。
    本书可以作为理工科高等院校研究生、本科生教学用书,也适合作为相关专业科研工程技术人员的参考用书。

作者简介

    蔡利梅,中国矿业大学信息与控制工程学院副教授。长期从事图像处理与模式识别领域的教学和研究工作。先后开设“图像处理”“模式识别”“计算机图形学”“数字视频技术”“图像分析及识别”等多门本科生及研究生课程。获教育部高等学校科学技术进步奖二等奖、河南省科技进步奖二等奖、江苏省科学技术奖三等奖、中国煤炭工业协会科学技术奖一等奖等省部级以上科技奖励8项,并获得其他科技奖励6项;申请国家发明专利4项(已获授权2项);出版教材1部;获校级优秀教学成果一等奖1项,全国煤炭行业教育教学成果奖三等奖1项。

目录

第一篇  MATLAB数字图像处理基础
第1章  数字图像处理概述
  1.1  图像与数字图像处理
    1.1.1  图像
    1.1.2  数字图像处理
  1.2  颜色
    1.2.1  颜色的表示
    1.2.2  颜色模型
  1.3  数字图像的生成与表示
    1.3.1  图像信号的数字化
    1.3.2  数字图像类型
    1.3.3  常用的坐标系
    1.3.4  常见的数字图像格式
  1.4  本章小结
第2章  MATLAB基础知识
  2.1  MATLAB工作环境
    2.1.1  MATLAB窗口
    2.1.2  MATLAB参数设置
  2.2  MATLAB数据类型
    2.2.1  数值型数据
    2.2.2  逻辑型数据
    2.2.3  字符与字符串
    2.2.4  结构体
    2.2.5  元胞数组
    2.2.6  表
    2.2.7  函数句柄
  2.3  矩阵及其运算
    2.3.1  矩阵的创建
    2.3.2  常规运算
    2.3.3  矩阵运算相关函数
  2.4  MATLAB控制语句
    2.4.1  条件语句
    2.4.2  循环语句
    2.4.3  流程控制语句
  2.5  MATLAB图形可视化
    2.5.1  二维图形绘制
    2.5.2  三维图形绘制
  2.6  本章小结
第3章  MATLAB图像处理基础
  3.1  图像文件的读取与显示
    3.1.1  图像文件信息读取
    3.1.2  图像文件数据读取
    3.1.3  图像的显示
    3.1.4  像素信息的获取与显示
    3.1.5  局部区域的获取与显示
    3.1.6  图像数据类型及转换
    3.1.7  图像文件的保存
  3.2  图像类型的转换
    3.2.1  彩色图像转换为灰度图像
    3.2.2  多值图像转换为二值图像
    3.2.3  灰度图像转换为彩色图像
    3.2.4  索引图像的转换
  3.3  色彩空间转换
    3.3.1  RGB空间和HSV空间的转换
    3.3.2  RGB空间和YCbCr空间的转换
    3.3.3  RGB空间和YIQ空间的转换
    3.3.4  RGB空间和LAB空间的转换
  3.4  视频文件的读写
    3.4.1  视频文件信息读取
    3.4.2  视频文件数据读取
    3.4.3  视频的播放
    3.4.4  视频文件的保存
  3.5  实例
  3.6  本章小结
第二篇  MATLAB图像基础处理
第4章  图像基础性运算
  4.1  图像几何变换
    4.1.1  图像几何变换原理
    4.1.2  图像平移
    4.1.3  图像镜像
    4.1.4  图像旋转
    4.1.5  图像缩放
    4.1.6  图像错切
    4.1.7  图像转置
  4.2  图像代数运算
    4.2.1  加法运算
    4.2.2  减法运算
    4.2.3  乘法运算
    4.2.4  除法运算
    4.2.5  逻辑运算
  4.3  邻域及模板运算
    4.3.1  邻点及邻域
    4.3.2  邻接与连通
    4.3.3  邻域处理与模板运算
  4.4  实例
  4.5  本章小结
第5章  图像正交变换
  5.1  离散傅里叶变换
    5.1.1  离散傅里叶变换的定义
    5.1.2  离散傅里叶变换的实现
    5.1.3  离散傅里叶变换的性质
    5.1.4  离散傅里叶变换在图像处理中的应用
  5.2  离散余弦变换
    5.2.1  离散余弦变换的定义
    5.2.2  离散余弦变换的实现
    5.2.3  离散余弦变换在图像处理中的应用
  5.3  K-L变换
    5.3.1  K-L变换原理
    5.3.2  图像的K-L变换及其实现
    5.3.3  K-L变换在图像处理中的应用
  5.4  Radon变换
    5.4.1  Radon变换的原理
    5.4.2  Radon变换的实现
    5.4.3  Radon变换的应用
  5.5  小波变换
    5.5.1  小波
    5.5.2  一维小波变换
    5.5.3  二维小波变换
    5.5.4  小波变换在图像处理中的应用
  5.6  本章小结
第6章  图像增强
  6.1  灰度级变换
    6.1.1  线性灰度级变换
    6.1.2  非线性灰度级变换
    6.1.3  基于直方图的灰度级变换
  6.2  空域滤波
    6.2.1  噪声与平滑滤波
    6.2.2  边缘与锐化滤波
  6.3  频域滤波
    6.3.1  低通滤波
    6.3.2  高通滤波
    6.3.3  基于小波变换的图像增强
  6.4  基于照度-反射模型的图像增强
    6.4.1  同态滤波
    6.4.2  基于Retinex理论的图像增强
  6.5  实例
  6.6  本章小结
第7章  图像复原
  7.1  图像退化与复原
  7.2  图像退化函数的估计
    7.2.1  运动模糊退化函数估计
    7.2.2  其他退化函数模型
  7.3  图像复原的代数方法
    7.3.1  无约束最小二乘方复原
    7.3.2  约束复原
  7.4  典型图像复原方法及其实现
    7.4.1  逆滤波复原
    7.4.2  维纳滤波复原
    7.4.3  等功率谱滤波
    7.4.4  几何均值滤波
    7.4.5  约束最小二乘方滤波
    7.4.6  Richardson-Lucy算法
  7.5  盲去卷积复原
  7.6  几何失真校正
  7.7  本章小结
第8章  图像数学形态学处理
  8.1  数学形态学的基本概念
  8.2  二值图像数学形态学处理
    8.2.1  基本形态变换
    8.2.2  复合形态变换
    8.2.3  图像的平滑处理
    8.2.4  图像的边缘提取
    8.2.5  区域填充
    8.2.6  击中击不中变换
    8.2.7  细化
  8.3  灰度图像数学形态学处理
    8.3.1  膨胀运算和腐蚀运算
    8.3.2  开运算和闭运算
    8.3.3  形态学梯度
    8.3.4  Top-hat和Bottom-hat变换
  8.4  实例
  8.5  本章小结
第三篇  MATLAB图像分析
第9章  图像分割
  9.1  阈值分割
    9.1.1  基于灰度直方图的阈值选择
    9.1.2  基于模式分类思路的阈值选择
    9.1.3  其他阈值分割方法
  9.2  边界分割
    9.2.1  霍夫变换
    9.2.2  边界跟踪
  9.3  区域分割
    9.3.1  区域生长
    9.3.2  区域合并
    9.3.3  区域分裂
    9.3.4  区域分裂合并
  9.4  基于聚类的图像分割
  9.5  分水岭分割
  9.6  实例
  9.7  本章小结
第10章  图像描述与分析
  10.1  几何描述
    10.1.1  常用几何特征
    10.1.2  几何特征计算
  10.2  形状描述
    10.2.1  矩形度
    10.2.2  圆形度
    10.2.3  中轴变换
  10.3  边界描述
    10.3.1  边界链码
    10.3.2  傅里叶描绘子
    10.3.3  边界片段
  10.4  矩描述
    10.4.1  矩
    10.4.2  与矩相关的特征
  10.5  纹理描述
    10.5.1  灰度共生矩阵法
    10.5.2  灰度差分统计法
    10.5.3  行程长度统计法
    10.5.4  LBP特征
  10.6  其他描述
    10.6.1  梯度方向直方图
    10.6.2  Haar-like特征
  10.7  本章小结
第四篇  MATLAB图像综合处理
第11章  图像压缩编码
  11.1  图像编码的基本理论
    11.1.1  图像压缩的可能性
    11.1.2  图像编码方法的分类
    11.1.3  图像编码压缩术语简介
  11.2  无损压缩编码
    11.2.1  Huffman编码
    11.2.2  算术编码
    11.2.3  行程长度编码
    11.2.4  LZW编码
  11.3  预测编码
  11.4  变换编码
  11.5  JPEG标准
  11.6  本章小结
第12章  图像匹配
  12.1  基于灰度的图像匹配
    12.1.1  相似性度量
    12.1.2  图像配准
  12.2  角点检测
    12.2.1  Moravec角点检测
    12.2.2  Harris角点检测
    12.2.3  最小特征值角点检测
    12.2.4  SUSAN角点检测
    12.2.5  FAST角点检测
  12.3  特征描述
    12.3.1  SIFT描述子
    12.3.2  SURF描述子
    12.3.3  BRISK描述子
    12.3.4  FREAK描述子
    12.3.5  MSER描述子
    12.3.6  特征描述子提取的实现
  12.4  特征匹配
  12.5  实例
  12.6  本章小结
第13章  MATLAB图像处理GUI设计
  13.1  认识GUI
    13.1.1  设计环境
    13.1.2  控件
    13.1.3  菜单
    13.1.4  对话框
  13.2  GUI界面设计
    13.2.1  背景设计
    13.2.2  菜单设计
    13.2.3  显示区设计
    13.2.4  自定义分割区设计
  13.3  菜单函数设计
    13.3.1  文件菜单函数设计
    13.3.2  图像分割菜单函数设计
    13.3.3  自定义分割菜单函数设计
    13.3.4  退出菜单函数设计
  13.4  自定义分割设计
    13.4.1  流程初始化
    13.4.2  流程设计与实现
  13.5  本章小结
参考文献

前言

  

    前言
    数字图像处理(Digital Image Processing)是利用计算机对图像进行变换、增强、复原、分割、压缩、分析、理解等处理的理论、方法和技术,是现代信息处理的研究热点。数字图像处理技术发展迅速,应用领域越来越广,对国民经济、社会生活和科学技术等方面产生巨大的影响。
    数字图像处理技术的学习和应用离不开计算机仿真和实验。MATLAB基于矩阵计算,适合作为二维矩阵的数字图像处理,其认可当今常用的多种图像文件格式,提供图像处理工具箱,实现了图像变换、增强、分析、复原、形态学等方面的处理运算,是一款优秀的仿真软件。本书在介绍数字图像处理的相关概念及MATLAB软件的基础上,对数字图像基础处理、图像分析及综合处理算法的原理,以及MATLAB实现进行了详细的讲解。全书共分为如下四篇。第一篇,MATLAB数字图像处理基础。介绍了数字图像处理的相关概念、颜色、数字图像的生成表示等概述性内容; 工作环境、数据类型、矩阵、控制语句、图形可视化等MATLAB基础知识; 图像文件的读写与显示、图像类型转换、色彩空间转换、视频文件的读写等MATLAB图像处理基础。
    第二篇,MATLAB图像基础处理。介绍了几何变换、代数运算、模板运算等图像基础性运算; DFT、DCT、KL变换、Radon变换和DWT等图像正交变换; 灰度级变换、空域滤波、频域滤波等图像增强技术; 图像退化函数的估计、图像复原方法; 数学形态学基本概念、二值、灰度图像的形态学处理等算法。详细介绍了各种算法的MATLAB实现。
    第三篇,MATLAB图像分析。介绍了基于阈值、边界、区域、聚类、分水岭等的图像分割算法; 几何描述、形状描述、边界描述、矩描述、纹理描述方法及相关描绘子。详细介绍了各种算法的MATLAB实现。
    第四篇,MATLAB图像综合处理。介绍了图像编码的基本理论、无损编码、预测编码、变换编码、JPEG标准等图像压缩编码方法及MATLAB实现; 基于灰度的图像匹配、多种角点检测算子、特征描述算子、特征匹配及MATLAB实现; GUI设计基础及图像分割GUI设计。
    本书内容由浅入深、循序渐进,通过充足的例程,便于读者理解算法及掌握MATLAB图像处理的方法。
    由于编者水平所限,书中不足之处敬请读者不吝指正。
    编者2020年8月

精彩页(或试读片断)

  

    第3章 MATLAB图像处理基础
    本章主要介绍利用MATLAB实现数字图像处理的基本操作,为后续更好地学习并仿真各种图像处理算法奠定基础
    本章主要包括以下内容: 图像文件的读取与显示、图像类型转换、色彩空间转换、视频文件的读写等。
    3.1图像文件的读取与显示
    图像文件的读取与显示是进行图像处理的第一步。本节介绍MATLAB提供的相应函数及其实现。
    3.1.1图像文件信息读取
    MATLAB提供了函数imfinfo和imageinfo来获取图像文件的信息。
    1. 函数imfinfo
    函数imfinfo用于返回一个结构体数组,以存储图像文件的相关信息。其调用格式如下。
    INFO=imfinfo(FILENAME,FMT): FILENAME是当前路径下或指定了路径的图像文件的文件名; FMT是文件的扩展名; INFO是一个结构体,包含了文件中的图像信息,不同格式的文件最终得到的INFO所包含的字段不同,但其前9个字段一致,如表31所示。如果FILENAME是包含不止一幅图像的文件,如TIFF、HDF、ICO、GIF或CUR等,则INFO是一个结构体数组,数组中每一个元素是一个包含一幅图像信息的结构体,如INFO(2)是文件中第2幅图像的信息。
    表31imfinfo函数返回的结构体数组基本内容
    INFO结构体字段名含义
    Filename文件名称,包含文件所在路径
    FileModDate文件最近修改或者下载的日期和时间(日月年 时: 分: 秒)
    FileSize文件大小,整数,单位: 字节
    Format文件格式或扩展名,由FMT指定
    FormatVersion文件格式版本号
    Width
    图像的宽度,整数,单位: 像素
    Height
    图像的高度,整数,单位: 像素
    BitDepth
    图像文件中每一个像素存储所占位数,整数
    ColorType
    图像类型,包含但不限于: 'truecolor'RGB图像、'grayscale'灰度图像、'indexed'索引图像
    2. 函数imageinfo
    函数imageinfo用于创建一个图像信息工具,用于显示当前figure(图形图像窗口)中图像的信息,包括宽、高、图像类型等。其调用格式如下。
    (1) imageinfo(H): 基于H创建图像信息工具,H为figure、坐标系或图像对象的句柄。
    (2) imageinfo(FILENAME): 根据文件名创建图像信息工具,图像不一定要在figure窗口显示。
    (3) imageinfo(INFO): 使用INFO结构体创建图像信息工具。
    (4) imageinfo(HIMAGE,FILENAME): 创建图像信息工具,显示被HIMAGE句柄指定的图像基本属性和FILENAME指定的图像文件的元数据。
    (5) imageinfo(HIMAGE,INFO): 创建图像信息工具,显示被HIMAGE句柄指
    clear,clc,close all;
    Image1=imread('football.jpg');
    Image2=imread('autumn.tif');
    Image3=imread('autumn.tif','PixelRegion',{[100 200],[10 200]});
    %读取TIFF图像中的子图像
    subplot(131),imshow(Image1),title('JPEG图像');
    subplot(132),imshow(Image2),title('TIFF原图像');
    subplot(133),imshow(Image3),title('TIFF子图像');
    程序运行结果如图34所示,Image3仅为Image2中的一部分。在MATLAB工作窗口工作区,查看各变量,取值情况如表36所示。8位的JPEG文件,无论采用有损还是无损压缩方式,读出来的数据类型都为uint8型数据,如Image1。Image3的宽高正如程序中设定的一样。
    图34采用imread函数读取JPEG、TIFF图像
    表36例34各变量取值
    名称尺寸数 据 类 型最小值最大值
    Image1256×320×3uint86255
    Image2206×345×3uint81248
    Image3101×191×3uint816176
    3.1.3图像的显示
    MATLAB主要利用imshow和imtool函数实现图像的显示,此外,也提供了适应一些特殊需求的显示函数,如image、imagesc、montage和imshowpair。
    1. 函数imshow
    函数imshow用于在通用的图形图像窗口显示图像,自动设置图像窗口、坐标轴和图像属性。根据图像源文件的不同,有如下多种调用格式。
    (1) imshow(I): 显示灰度图像I。
    (2) imshow(I,[LOW HIGH]): 指定灰度级范围[LOW HIGH]来显示灰度图像I,低于等于LOW值的显示为黑,高于等于HIGH值的显示为白,默认按256个灰度级显示。若未指定LOW和HIGH值,则将图像中最低灰度显示为黑色,最高灰度显示为白色。
    (3) imshow(RGB): 显示真彩色图像RGB。
    (4) imshow(BW): 显示二值图像BW,像素值为0显示黑色,像素值为1显示白色。
    (5) imshow(X,MAP): 显示索引图像,X为索引图像的数据矩阵,MAP为其颜色映射表。
    (6) imshow(FILENAME): 显示FILENAME指定的图像。此格式下,imshow通过调用imread或dicomread从文件FILENAME中读取图像数据。因此,要求图像能够被imread或dicomread读取。若文件包括多帧图像,则显示第一帧,且文件必须在当前目录或MATLAB路径下。
    (7) HIMAGE=imshow(…): 返回创建的图像对象句柄。
    (8) imshow(…,PARAM1,VAL1,PARAM2,VAL2,…): 显示图像时指定相关参数及其取值,参数如表37所示。
    表37imshow函数参数表
    参数取值及含义
    Border一个字串,指明图像在figure窗口显示时是否显示边界,可取'tight' 和'loose',默认情况下取'loose'
    ColormapM×3实数矩阵,设置要显示图像的颜色映射表,也可用来将灰度图像进行伪彩色显示
    DisplayRange二维向量[LOW HIGH],指定灰度范围显示灰度图像。在图像数据已经读取后显示,可以省略参数名,如imshow(I,[LOW HIGH]); 若imshow中采用FILENAME指定文件,则不能省略。根据图像I的值取整数或浮点数
    InitialMagnification数值,或字串'fit',指定图像初始显示比例: 如100,则图像以100%比例显示; 若为'fit',以适合窗口的比例显示整幅图像。若图像太大不能显示完全,将进行警告并以适合屏幕的最大比例显示图像。默认为100。采用坐标定位显示时,将忽略指定的数值,取'fit'值; 使用'Reduce'参数时,只能取'fit'值
    Reduce逻辑值,指明是否对文件FILENAME中的图像进行下采样。仅适用TIFF图像,用以显示大图像的概貌
    Parent指向图像对象的父对象的坐标系句柄
    XData二维向量,用以建立非默认的空间坐标系统
    YData二维向量,用以建立非默认的空间坐标系统
    【例35】采用imshow函数的不同形式显示图像。
    程序如下:
    clear,clc,close all;
    [Image1,MAP1]=imread('girl.bmp');
    [Image2,MAP2]=imread('pig.bmp');
    figure,imshow(Image2,MAP2,'InitialMagnification',40),title('显示比例为40%');
    figure,imshow(Image2,MAP2,'Border','tight'),title('figure中不显示边界');
    figure,
    subplot(221),imshow(Image1),title('默认显示');
    subplot(222),imshow(Image1,[50 100]),title('指定灰度范围显示');
    subplot(223),imshow(Image1,'Colormap',MAP2),title('用颜色映射表MAP2显示');
    subplot(224),imshow(Image2,'XData',[100 300],…
    'YData',[200 280]),title('建立新坐标系统显示');
    程序运行结果如图35所示。
    图35imshow函数显示图像
    2. 函数imtool
    1) 图像工具窗口
    在命令窗口输入指令:
    >> imtool
    打开一个空的图像工具窗口,可以通过选择菜单File下的Open或者Import From Workspace选项选择一幅图像显示,如图36所示。在窗口内,可以通过菜单Tools下的选项,实现对图像显示比例的放大、缩小,对图像进行剪切、对比度调整、选择颜色映射表等处理。图像工具窗口的部分功能如图37所示。
    图36imtool函数显示图像
    图37图像工具窗口部分功能示意图
    2) 函数imtool的调用
    函数imtool也可以如同imshow函数一样,直接调用来显示具体图像。
    (1) imtool(I): 显示灰度图像I。
    (2) imtool(I,[LOW HIGH]): 指定灰度级范围显示灰度图像I,低于等于LOW的灰度显示为黑色,高于等于HIGH的灰度显示为白色,中间的按灰度级别依次显示; 不指定LOW和HIGH,则将图中的最低灰度显示为黑色,最高灰度显示为白色。
    (3) imtool(RGB): 显示真彩色图像RGB。
    (4) imtool(BW): 显示二值图像,像素值0显示为黑色,像素值1显示为白色。
    (5) imtool(X,MAP): 显示索引图像,X为索引图像的数据矩阵,MAP为其颜色映射表。
    (6) imtool(FILENAME): 显示FILENAME指定的图像。此格式下,要求图像能够被
    函数imread或dicomread读取,或者是由
    函数rsetwrite创建的数据集。若文件包括多帧图像,则显示第一帧,且文件必须在当前目录或MATLAB路径下。
    (7) HFIGURE=imtool(…): 返回创建的图像对象句柄。
    (8) CLOSE(HFIGURE): 关闭图像工具窗口。
    (9) imtool CLOSE ALL: 关闭所有的图像工具窗口。
    (10) imtool(…,PARAM1,VAL1,PARAM2,VAL2,…): 显示图像时指定相关参数及其取值,参数有'Colormap'、'DisplayRange'、'InitialMagnification'等。
    【例36】采用imtool函数的不同形式显示图像。
    程序如下:
    clear,clc,imtool close all;
    Image1=imread('girl.bmp');
    imtool(Image1);%直接显示图像
    imtool(Image1,[50 100]);%指定灰度级范围显示
    imtool(Image1,'Colormap',jet);%指定颜色映射表显示
    程序运行结果如图38所示。
    图38调用imtool函数显示图像
    3. 函数image和imagesc
    函数image将矩阵中的数据显示为图像,函数imagesc采用拉伸过的色彩显示图像,有多种调用格式。
    (1) image(C): 将矩阵C中的数据显示为图像,C的每一个元素指定图像中一个像素的颜色。当C为二维的M×N 矩阵时,每一个元素的值作为像素颜色值在当前颜色映射表中的索引值,由图像对象的CDataMapping属性决定: CDataMapping取'direct'(默认),C中元素值直接作为颜色索引; 取'scaled',C中的元素值先进行拉伸再作为索引值。当C为三维的M×N×3矩阵时,C(:,:,1)、C(:,:,2)、C(:,:,3)依次作为颜色的R、G、B分量值。如果C中元素的数据类型为double,则颜色值变化范围为[0.0,1.0]; 如果C中元素为uint8或uint16数据类型,则颜色值变化范围为[0,255]。
    (2) image(x,y,C): x、y用于指定显示图像时,C中元素的坐标位置。函数image显示图像时,同时显示坐标轴,不设定x、y的值,则C(1,1)位于坐标(1,1)处,C(M,N)位于坐标(M,N)处; 设定x、y值,则C(1,1)位于坐标(x(1),y(1))处,C(M,N)位于坐标(x(end),y(end))处。
    (3) imagesc(…): 数据经过拉伸作为颜色索引值,显示图像。
    (4) imagesc(…,CLIM): 利用向量CLIM=[CLOW CHIGH]设置拉伸范围,CLOW对应颜色映射表中的第1个颜色,CHIGH对应颜色映射表中的最后一个颜色,中间的灰度线性对应颜色映射表中的其余颜色。
    【例37】采用image和imagesc函数的不同形式显示图像。
    程序如下:
    clear,clc,close all;
    Image1=imread('football.jpg');
    [Image2,MAP2]=imread('girl.bmp');
    figure,image(Image1),title('彩色图像');
    figure,colormap(hot), h1=image(50,60,Image2),title('不拉伸映射');
    %设置窗口颜色映射表为hot型,指定数据矩阵(1,1)位于(50,60)处
    Y1=get(h1,'CDataMapping');%获取CDataMapping属性值
    figure,colormap(hot),h2=imagesc(Image2,[30,150]),title('拉伸映射');
    %灰度30对应颜色映射表第1个颜色,灰度150对应最后一个颜色
    Y2=get(h2,'CDataMapping'); %获取CDataMapping属性值
    程序运行结果如图39所示。
    图39调用image和imagesc函数显示图像
    从工作区可以看到,Y1='direct',Y2='scaled',即采用image函数显示不拉伸数据,而采用imagesc函数拉伸数据。
    4. 函数montage
    函数montage用矩形蒙太奇方式显示多帧图像的每帧,其调用格式如下。
    (1) montage(FILENAMES): 显示FILENAMES指定的多帧图像。若FILENAMES不在当前目录或MATLAB路径下,则需要指明路径。
    (2) montage(I): 显示多帧图像I,I可以是二值、灰度、彩色图像序列。
    (3) montage(X,MAP): 显示索引图像的所有帧,X为多帧图像数据,共用颜色映射表MAP。
    (4) montage(…,NAME1,VALUE1,NAME2,VALUE2,…): 定制显示,其参数如表38所示。
    (5) H=montage(…): 返回图像对象句柄。
    表38montage函数部分参数表
    参数取值及含义
    Size二维向量[NROWS NCOLS],指定蒙太奇行列数。行列数之一可以设定为NaN,在显示时,根据显示图像的总帧数和已知的行或列数目自动计算另一个
    Indices一个数字序列,指明哪些帧要显示,如m:n,表示显示从第m帧到第n帧,默认为1:K,K为总帧数
    DisplayRange1×2的向量[LOW HIGH],对显示的图像进行灰度拉伸,含义见函数imshow
    【例38】采用montage 函数显示含有多帧的GIF、TIF图像。
    程序如下:
    clear,clc,close all;
    [Image1,MAP1]=imread('fly.gif');%读取GIF图像
    figure,montage(Image1,MAP1,'size',[2 NaN]),title('GIF图像'); %两行排列显示GIF图像各帧
    info=imfinfo('snoopy.tif');%获取TIF图像信息
    len=length(info);%TIF图像含图像数
    for i=1:len
    [Image2(:,:,:,i),MAP2]=imread('snoopy.tif',i);%依次读取TIF文件中各图像
    end
    figure,montage(Image2,MAP2,'size',[1 NaN]),title('TIF图像'); %一行排列显示TIF图像各帧
    程序运行结果如图310所示。
    图310调用montage函数显示多帧图像
    5. 函数imshowpair
    函数imshowpair将图像成对显示,以比较图像间的差异。其调用格式如下。
    (1) H=imshowpair(A,B,METHOD): 将图像A和B间的差异以METHOD指定的方式实现可视化,并返回创建的图像句柄H。如果A和B的大小不一致,则将较小的图像变为和较大图像同样大小,扩充的像素补0。METHOD的取值如表39所示。
    表39imshowpair函数参数表
    参数取值含义
    METHOD
    falsecolor将A和B作为不同色彩通道合成RGB图像,默认值
    blend采用α混合重叠A和B
    checkerboard从A和B创建具有交替矩形区域的图像
    diff从A和B创建差异图像
    montage将A和B在同一幅图像中相邻放置
    Scaling
    independent
    图像各自缩放,默认值
    joint适用于在图像的动态范围之外具有大量填充值的单模态图像可视化
    none不额外进行缩放
    Parent指向创建的图像父对象的坐标轴的句柄
    ColorChannels当METHOD取'falsecolor'时使用,将每个图像分配到输出图像中的特定颜色通道。设置为[R G B],指定哪一幅图像被指定到RGB对应通道,R、G、B取1表示该通道指定第1幅图像,取2表示第2幅图像,取0表示没有图像被指定; 可取'redcyan',等同于[R G B]=[1 2 2]; 可取'greenmagenta',等同于[R G B]=[2 1 2],默认值
    (2) H=imshowpair(A,RA,B,RB): 根据RA和RB提供的空间参考信息显示A和B图像的差异。RA和RB由imref2d函数定义。
    (3) imshowpair(…,PARAM1,VAL1,PARAM2,VAL2,…): 指定显示和混合方式显示图像。参数名称不区分大小写。各参数及取值含义见表39。
    【例39】采用imshowpair函数显示GIF图像的不同帧。
    程序如下:
    clear,clc,close all;
    info=imfinfo('fly.gif');
    len=length(info);
    for i=1:len定的图像基本属性和结构体INFO指定的图像文件的元数据。
    (6) HFIGURE=imageinfo(…): 创建图像信息工具,并返回图像信息工具窗口句柄。
    【例31】读取图像文件信息并显示查看。
    程序如下:
    clear,clc,close all;
    imageinfo('flower.jpg');%创建图像信息工具,显示flower.jpg图像元数据
    h=imshow('flower.jpg');%显示图像,并返回figure窗口句柄
    info1=imfinfo('cameraman.jpg'); %获取cameraman.jpg图像信息,返回结构体数据info1
    hfigure=imageinfo(h,info1);
    %创建图像信息工具,显示flower.jpg的基本属性和cameraman.jpg的元数据
    info1%在命令窗口输出结构体info1的数据
    info2=imfinfo('water.gif');%获取water.gif图像信息,返回结构体数据info2
    info2(2)%在命令窗口输出water.gif文件中第2幅图像的信息
    程序运行,创建的图像信息工具如图31所示。
    图31创建的图像信息工具
    在命令窗口显示INFO结构体数据,ans为water.gif文件中第2幅图像的信息。
    Info=
    struct with fields:
    Filename: 'E:\MATLAB\3 Chapter\cameraman.jpg'
    FileModDate: '04-Mar-2013 10:51:36'
    [Image(:,:
    FileSize: 31761
    Format: 'jpg'
    FormatVersion: ''
    Width: 256
    Height: 256
    BitDepth: 24
    ColorType: 'truecolor'
    FormatSignature: ''
    NumberOfSamples: 3
    CodingMethod: 'Huffman'
    CodingProcess: 'Sequential'
    Comment: {}
    Orientation: 1
    Software: 'ACD Systems Digital Imaging'
    DateTime: '2013:03:04 10:51:32'
    YCbCrPositioning: 'Centered'
    DigitalCamera: [1×1 struct]
    ans =
    struct with fields:
    Filename: 'E:\MATLAB\3 Chapter\water.gif'
    FileModDate: '05-Nov-2008 08:57:36'
    FileSize: 95308
    Format: 'GIF'
    FormatVersion: '89a'
    Left: 1
    Top: 57
    Width: 240
    Height: 264
    BitDepth: 8
    ColorType: 'indexed'
    FormatSignature: 'GIF89a'
    BackgroundColor: 215
    AspectRatio: 0
    ColorTable: [256×3 double]
    Interlaced: 'no'
    DelayTime: 13
    TransparentColor: 256
    DisposalMethod: 'LeaveInPlace'
    3.1.2图像文件数据读取
    MATLAB主要利用imread函数实现图像文件数据的读取,为适应不同的文件格式,有不同的调用格式。
    (1) A=imread(FILENAME,FMT): 从FILENAME指定的文件中读取图像数据。FILENAME是当前路径下或指定了路径的图像文件的文件名; FMT是文件的扩展名,可以使用IMFORMATS函数查看当前扩展名支持的格式; 返回值A是包含图像数据的矩阵,对于灰度图像,A为M×N的矩阵; 对于真彩色图像,A为M×N×3的矩阵; 对于包含使用CMYK颜色模型图像的TIFF文件,A为M×N×4的矩阵。
    (2) [X,MAP]=imread(FILENAME,FMT): 读取索引图像数据,图像数据存放于X中,颜色映射表数据自动归一化到[0,1],存放于MAP中。
    (3) […]=imread(FILENAME): 根据文件内容推断图像类型,并根据待读取图像数据的类型选择格式1或格式2。
    (4) […]=imread(URL,…): 读取来自网络的图像文件。
    在MATLAB中,图像数据类型有uint8、uint16、double、logical、single等,在灰度级别的表示方面,uint8型数据用0~255表示,uint16型数据用0~65535表示,double型数据用0~1表示,logical型数据用0、1表示。
    【例32】读取不同类型图像,并查看各返回值。
    程序如下:
    clear,clc,close all;
    Image1=imread('flower.bmp');
    Image2=imread('bird.bmp');
    [Image3,MAP3]=imread('pig.bmp');
    subplot(131),imshow(Image1),title('彩色图像');
    subplot(132),imshow(Image2),title('二值图像');
    subplot(133),imshow(Image3,MAP3),title('索引图像');
    程序运行结果如图32所示。在MATLAB工作窗口工作区,查看各变量,取值情况如表32所示,可以看出彩色图像数据为M×N×3的uint8矩阵,二值图像数据为M×N的logical矩阵,索引图像的颜色映射表为取值为0~1的P×3矩阵,P为颜色数目。
    图32采用imread函数读取不同类型图像
    表32例32各变量取值
    名称尺寸数 据 类 型最小值最大值
    Image1264×352×3uint80255
    Image2359×304logical
    Image3182×268uint8188
    MAP3256×3double01
    (5) […]=imread(…,IDX): 读取包含多幅图像的ICO、CUR文件中的某一幅,IDX是整型数据,指定读取图像中的第几幅图像,默认情况下,读取文件中第1幅图像。
    (6) [A,MAP,ALPHA]=imread(…): 返回图标文件的AND模板,用于处理透明像素信息。
    (7) […]=imread(…,IDX): 读取动图GIF文件中的一幅或多幅图像,IDX取整数或整数向量,如3或者1:5,分别指读取第3幅或前5幅图像; IDX默认情况下,读取全部图像数据。
    (8) […]=imread(…,'Frames',IDX): 读取动图GIF文件中的一幅或多幅图像,IDX可以取'all',则所有帧全部被读取,并且按照在文件中的顺序返回。由于GIF
    的文件结构,特定帧的读取也需要读取所有帧数据,因此,IDX使用指定向量或'all'读取所有帧数据,比采用循环读取多帧运算速度快。
    (9) […]=imread(…,REF): 读取HDF文件中的一幅图像,REF指定所读取图像的参考编号,但在HDF文件中,参考编号顺序和图像顺序未必一致,可以使用imfinfo函数获取某一幅图像的参考编号; REF默认情况下读取第1幅图像。
    (10) […]=imread(…,'BackgroundColor',BG): 读取PNG图像文件,将透明像素与BG中的指定颜色合成。BG取
    'none',则不合成; 如果输入的图像是索引图像,BG取[1,P]范围的整数,其中P为颜色数目; 如果输入的图像是灰度图像,BG取[0,1]范围的值; 如果输入图像是彩色图像,BG是三维向量,其元素取值范围为[0,1]。
    (11) [A,MAP,ALPHA]=imread(…): 假如存在透明信息,则返回ALPHA通道数据,否则ALPHA为[]。这种格式下,BG默认值为'none'; 如果PNG文件包含了背景色,则BG默认值为背景色; 如果不使用ALPHA通道并且文件不包含背景色,对于索引图像,BG默认值为1; 灰度图像,BG默认值为0; RGB图像默认值为[0 0 0]。如果'BackgroundColor'被指定,则ALPHA数据为[]。灰度图像或真彩色图像MAP数据为[]。
    【例33】采用imread函数的不同调用格式读取ICO、GIF、PNG图像,并查看各返回值。
    程序如下:
    clear,clc,close all;
    Image1=imread('weather.ico',8);
    %读取ICO文件的第8幅图像
    [Image2,MAP2]=imread('water.gif',2);%读取GIF文件的第2幅图像
    [Image3,MAP3]=imread('water.gif');%读取GIF文件的全部帧
    [Image4,MAP4]=imread('water.gif','frames','all');%读取GIF文件的全部帧
    Image5=imread('fish.png');%读取PNG图像,透明像素与默认值合成
    [A,MAP5,ALPHA] = imread('fish.png','BackgroundColor',[0 1 0.3]);
    %读取PNG图像,透明像素与指定值合成
    subplot(221),imshow(Image1),title('weather.ico第8幅图像');
    subplot(222),imshow(Image2,MAP2),title('water.gif第2幅图像');
    subplot(223),imshow(Image5),title('透明像素与默认的黑色合成');
    subplot(224),imshow(A),title('透明像素与指定颜色合成');
    程序运行结果如图33所示。
    图33采用imread函数读取ICO、GIF、PNG图像
    在MATLAB工作窗口工作区,查看各变量,取值情况如表33所示。
    表33例33各变量取值
    名称尺寸数 据 类 型最小值最大值
    Image148×48×3uint80233
    Image2320×240uint80254
    Image34Duint80254
    Image44Duint80254
    Image5128×128×3uint80255
    A128×128×3uint80255
    ALPHA[]double
    MAP2256×3double00.9843
    MAP3256×3double00.9843
    MAP4256×3double00.9843
    MAP5[]double
    可以看出Image3和Image4都是读取了GIF图像的所有帧,即默认IDX和IDX设为'all'效果一样。由于GIF图像最多为256色,读取图像时,需要同时读取颜色映射表信息,全部帧共用同一颜色映射表,因此MAP2、MAP3和MAP4是一样的。
    (12) […]=imread(…,'Param1',value1,'Param2',value2,…): 设定参数读取图像,JPEG 2000图像读取时参数如表34所示,TIFF图像读取时参数如表35所示。
    表34JPEG 2000图像读取时参数表
    参数取值及含义
    ReductionLevel一个非负整数,指定图像分辨率的降低。若为L,则图像分辨率降低一个因子2L。默认值为0,代表分辨率不减少。imfinfo函数返回的结构体中,WaveletDecompositionLevels 字段指定分解级别,限制ReductionLevel的取值
    PixelRegion{ROWS,COLS}。imread函数返回由ROWS和COLS中的值作为边界所指定的子图像。行列数都是二维向量,表示从1开始的索引[START STOP]。如果ReductionLevel大于0,则ROWS和COLS是在尺寸减小的图像上的坐标
    V79Compatible逻辑值: 为真,返回的图像转换为和imread早期版本一致的灰度或RGB图像,采用本参数转换YCC图像为RGB图像。默认值为假
    表35TIFF图像读取时参数表
    参数取值及含义
    Index正整数,指定TIFF图像文件中哪一幅图像被读取
    Info函数imfinfo输出的结构体数组。当读取包含多幅图像的TIFF文件时,采用Info作为参数将提高imread函数在文件中定位要读取图像的速度
    PixelRegion{ROWS,COLS}。imread函数返回由ROWS和COLS中的值作为边界所指定的子图像。行列数为二维或三维向量,二维向量表示从1开始的索引[START STOP]; 三维向量表示从1开始的索引[START INCREMENT STOP],允许图像下采样
    各种不同格式的文件在用imread函数读取时,有像素位数、对应文件类型的细致区别,如有需要可以查阅MATLAB帮助文件。
    【例34】采用imread函数读取JPEG、TIFF图像,并查看各返回值。
    程序如下: