《MATLAB图像处理实例详解》:学习第四天(2022.09.29)

3.4 图像文件的显示

3.4.1 图像显示函数

  • 使用MATLAB图像工具浏览器(Image Tool Viewer),通过调用函数imtool( )来实现。
  • 使用MATLAB的通用图形图像视窗,通过调用函数 imshow( )来实现。

1、函数imtool( )

        在图像工具浏览器中显示图像:当需要打开图像工具浏览器时,可以调用函数imtool( ),并指定想要用浏览器浏览的图像,其实现方式如下:

fig=imread ( 'moon.tif ' );

imtool(fig);

也可以直接指定图像名,语句格式为:

imtool('moon.tif');

        注:该语句执行要求图像文件必须位于MATLAB的当前路径。此外,imtool('moon.tif')这种直接指定图像文件名的显示方式不同于fig=imread('moon.tif');imtool(fig),因为通过imtool('moon.tif')显示的图像并没有被存储到MATLAB的workspace (工作空间)中。

        如果指定的图像文件包含多幅图像,用函数imtool()只会显示文件中的第一幅图像。如果想要显示多幅图像,可以用函数 imread()将每一幅图像都读入到workspace中,然后多次调用函数 imtool()来显示。如果想要同时显示所有帧,可以调用函数montage( )。

函数imtool()具体使用及设置方式如下。

  • 指定图像的起始大小:默认情况下,函数imtool( )将100%的显示整幅图像。其中100%是指图像的每一个像素一一映射到屏幕窗口的每一个像素。具体实现方法为:设置函数imtool( )的IntialMagnification值,默认值为100,即将原图像按照100%的放大倍数显示;设置为fit表示按照图像工具浏览器窗口全屏显示,如下所示。

imtool (..., 'IntialMagnification' , 'fit');

  • 关闭图像工具浏览器:要关闭当前图像工具浏览器,可以直接单击该图像工具浏览器窗口的关闭按钮。当有多个浏览器窗口同时处于打开状态时,可以使用下面语句关闭所有的图像工具浏览器窗口:imtool close all;

2、函数imshow( )

  • imshow(Ⅰ):该函数是显示灰度图像,其中Ⅰ是代表灰度图像矩阵。
  • imshow('filename.fmt')或者imshow filename:该函数是直接显示图像文件 filename中的图像。该调用格式要求被显示的图像必须在当前目录下或在MATLAB的目录下,如果不在,则'filename.fmt'必须指定该图像的完整路径。

        注:使用该种显示方式并没有将图像数据存储在MATLAB的workspace 中。如果想把当前显示的图像存储到Workspace中,必须借助函数getimage( ),该函数将返回当前句柄图形图像对象的数据,调用格式为X=getimage;该格式将当前显示的图像赋值给变量X。与函数imtool( )的使用类似,在调用函数imshow( )在图形图像视窗内显示图像时,既可以使用默认的显示设置,即一个图像像素对应一个屏幕像点,也可以通过设置函数imshow( )的参数来达到更改图像显示方式的目的,此时需要借助truesizeu( )函数来设定图像像素到屏幕像点的映射关系。

  • imshow(Ⅰ,n):该函数是用n个离散的灰度级来显示图像Ⅰ。如果省略了n,函数imshow( )将使用24位表示的256个灰度级来显示该图像。
  • imshow(Ⅰ,[low,high] ):该函数是把图像Ⅰ作为一幅灰度图像来显示,[low,high]指定了图像Ⅰ的灰度值范围。图像中所有灰度值不超过low 的像素显示为黑色,灰度值不低于high 的像素显示为白色,灰度值在限定范围内的像素按照其原来的灰度级显示。如果限定范围为空,函数imshow( )默认的获取 low 和 high 的值分别为min(Ⅰ(:))和 max(Ⅰ(:)),显示的规则同上。
  • imshow(BW):该函数是用于显示二值图像BW,即显示0为黑色,1为白色。
  • imshow(X,map):该函数是用于显示索引色图像X,map是与相关的颜色映射表。
  • imshow(RGB):该函数是用于显示真彩色图像RGB。
  • imshow(...,diplay_option):该函数是在显示图像时,确定图像像素点与屏幕像点的映射关系。“...”表示根据显示任务的不同可以采取上面介绍的某种格式。display_option参数是用于指定图像显示时图像像素点与屏幕像点的映射关系,它的取值有两个,即'notruesize' 或 'truesize'。
  • imshow(x,y,A....):该函数是用2个元素的矢量x和y建立非默认的空间坐标系统,x和y指定了MATLAB句柄图形图像对象(Handle Graphics image object)属性XData和 YData。
  • G=imshow(...):该函数是显示图像的同时生成图像句柄G。

3、函数image( )和函数imagesc( )

        在MATLAB中,常用的显示图像函数除了函数imtool( )和函数 imshow( )以外,还有函数image( )和函数imagesc( )。这两个函数的功能基本与前者相近,可以显示一幅图像,自动设置图像的一些属性。这些自动设置的属性包括图像对象的CData属性、CDataMapping属性和坐标轴对象的属性等,具体调用格式如下:

  • image(C):该函数是将一个数据矩阵显示为一幅图像,其中C可以是二维的M×N的矩阵,也可以是M×N×3的矩阵,矩阵中的元素数据类型可以是double型、uint8型和 uint16型。当C是M×N的矩阵时,数组中的元素直接作为颜色映射表的颜色值来确定为该图像的颜色;当C是M×N×3的矩阵时,数组中元素C(,:,1)将作为红色分量,元素C(,:,2)将是绿色分量,元素C(:,:,3)将是蓝色分量,红绿蓝三色叠加后形成彩色图像。该彩色图像没有CDataMapping 属性。如果C中的元素数据类型为double,则颜色值变化范围为[0.0,1.0],如果C中的元素是uint8型和uint16型数据类型,则颜色值变化范围为[0,255]。
  • image(X,Y,C):该函数是利用向量X和Y来为图像在显示时进行定位。在没有向量X和Y时,即格式image(C),默认元素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))处。C中的其他元素将会分布在这两点之间,这样在每行和每列中,每一个像素都是相同的高度和宽度。
  • imagesc(...):该函数与函数image(...)的功能相同,只是所使用的colormap有区别,函数imagesc(...)的颜色表是经过拉伸后的,而函数image(...)的颜色表未经过拉伸。
  • imagesc(....,CLim):该函数是利用向量CLim来设置colormap拉伸的范围,其中,CLim=[CLow,CHigh],它是用来确定灰度范围。灰度范围中的第一个值 CLow(通常是0),对应于颜色映象表中的第一个值(颜色),第二个值 CHigh(通常是1)则对应与颜色映象表中的最后一个值(颜色)。灰度范围中间的值则是线性对应颜色映象表中剩余的值(颜色)。在调用函数imagesc()时,若只使用一个参数,数据矩阵中的最小值对应于颜色映象表中的第一个颜色值,数据矩阵中的最大值对应于颜色映象表中的最后一个颜色值。

        注:在用函数imtool( )和函数 imshow( )显示图像时,图像上不会出现坐标轴,而用函数image( )和函数imagesc( )显示图像时,图像上会出现坐标轴。

4、函数colorbar( )

        在 MATLAB的图像显示中,可以利用函数colorbar( )给图像添加一个彩色条,该彩色条用来指示图像中不同颜色所对应的具体数值。该函数的调用格式如下:

  • colorbar:该函数是在图像上形成一个彩色条,默认位置是在图像的右侧。
  • colorbar('peer',AX):该函数是在图像的坐标轴上形成一个彩色条,并代替AX指定的坐标轴。
  • colorbar(...,location):该函数是指定彩色条的位置,其中 location的取值及表示含义如下表所示。

《MATLAB图像处理实例详解》:学习第四天(2022.09.29)_第1张图片

  • colorbar(...,P / V Pairs):该函数是给彩色条添加额外的属性 / 值对。
  • colorbar('off '),colorbar("'hide'),colorbar('delete'):该函数是删除所有与当前轴相关的彩色条。
  • colorbar(H, 'off '),colorbar(H, 'hide'),colorbar(H, 'delete'):该函数是删除所有由H指定的彩色条。
  • H=colorbar(...):该函数是返回彩色条句柄H。
     

 5、函数montage( )

        在MATLAB 中,要同时显示多帧图像序列,需要调用函数montage( ),其调用格式如下:

  • montage(Ⅰ):该函数是显示多帧灰度图像、二值图像或者RGB图像。其中Ⅰ表示图像序列数组,如果显示的是灰度图像或者二值图像,则Ⅰ将是M×N×1×K的数组;如果显示的是RGB图像,则Ⅰ将是M×N×3×K的数组。
  • montage(X,map):该函数是显示多帧索引色图像。其中X是一个M×N×1×K的数组,所有的索引图像的颜色值都用颜色映射表map中的颜色值。
  • montage(..., 'Parameter1', value1, 'Parameter2' , value2...):该函数是在显示多帧图像的同时,对图像的某些参数进行设置。该函数所包含的参数如下表所示。

《MATLAB图像处理实例详解》:学习第四天(2022.09.29)_第2张图片

 6、命令zoom

利用zoom命令可实现图像上任意区域的拉伸,该函数具体使用如下:

  • zoom on:该语句执行之后,MATLAB的图形窗口对象进入区域拉伸状态。此时,按下鼠标左键,拖动鼠标指示,则图形窗口中将出现以虚框表示的选择矩形。松开鼠标左键后,则该选中的图像区域将被放大到整个图形窗口的显示空间。
  • zoom out:在放大区域中右击将会出现选项菜单,选择zoom out选项可将刚刚放大的图形恢复到原来的状态。
  • zoom off:如果在命令行输入zoom off命令,那么将关闭图形窗口的拉伸功能。

7、函数warp ( )

        在MATLAB中,纹理映射是一种将二维图像映射到三维图形表面的技术。这种技术通过转换颜色数据使二维图像与三维图形表面保持一致。在 MATLAB中的纹理映射是利用双线性渐变算法来实现图像映射的。

        MATLAB的图像处理工具箱提供了一个专门的函数,即函数 warp( ),将图像作为纹理进行映射,使该图像显示在一个特定的三维空间中。下面具体介绍该函数的调用格式。

  • warp(X,map):该函数是将索引图像映射到矩形平面上显示,其中[X,map]代表索引图像。
  • warp(Ⅰ,n):该函数是将灰度图像映射到矩形平面上显示,其中Ⅰ代表灰度图像,n指定灰度级。
  • warp(BW):该函数是二值图像映射到矩形平面区域上显示,其中 BW代表二值图像。
  • warp(RGB):该函数是将真彩色图像映射到矩形平面区域上显示,其中 RGB代表真彩色图像。

注:由于矩形平面区域本身就是一个二维图形区域,所以调用这4种格式来显示图像与直接调用函数imshow( )的显示结果是一致的,唯一差别就是图像上是否有坐标轴。

  • warp(z,...):该函数是将图像映射到z图形表面上。
  • warp(x,y ,z,...):该函数是将图像映射到由(x,y,z)确定的图形表面上。
  • H=warp(...):该函数是返回纹理映射后的图形句柄H。

8、函数subimage ( )

为了便于在多幅图像之间进行比较,需要将这些要比较的图像显示在一个图形窗口中。

  • subimage(X,map),subimage(I),subimage(BW),subimage(RGB):该函数的这4种调用格式是分别将索引色图像、灰度图像、二值图像和真彩色图像进行显示。
  • subimage(x,y,...):该函数是将图像按指定的坐标系(x,y)显示。在具体应用时,主要是设置横轴和纵轴的坐标值范围。
  • H=subimage(...):该函数是显示图像并返回图像对象的句柄H。

        函数subimage ()必须与函数 subplot( )一起使用,后者用于指定下一个显示的图像在整个图像显示窗口中所在的分块。例如 subplot(223),subimage(I);该语句表示将窗口划分为2×2共4块区域,将要显示的图像Ⅰ在图像窗口的第3块区域进行显示。函数subimage()显示的图像可以是logical、uint8、uint16或double类型。

 

9、常用图像类型的显示函数及格式

《MATLAB图像处理实例详解》:学习第四天(2022.09.29)_第3张图片

《MATLAB图像处理实例详解》:学习第四天(2022.09.29)_第4张图片

 

3.4.2 像素信息的显示

1、函数impixel( )

        函数impixel( )可以返回选中像素或像素集的数据值。用户可以直接将像素坐标作为该函数的输入参数或者用鼠标选中像素。其调用格式为如下:

(1)用鼠标选中像素

  • P=impixel(Ⅰ):该函数是显示灰度图像指定的像素的灰度值,其中Ⅰ指的是灰度图像,Р是用来存放像素灰度值的数组。
  • P=impixel(X,map):该函数是显示索引图像指定像素的颜色值,其中[X,map]指的是索引图像,Р是用来存放像素颜色值的数组。
  • P=impixel(RGB):该函数是显示真彩色图像指定像素的颜色值,其中RGB指的是真彩色图像,Р是用来存放像素颜色值的数组。

        在图像显示出来后,单击图像选择像素,按下【Backspace】键或者【Delete】键可以移除之前选择的像素点,双击或者右击,表示你选择的是最后一个像素点结束选择,或者按下回车,最后将在命令窗口显示所选择的像素点的颜色值或者灰度值。如果显示的是彩色图像,则Р将会是一个M×3的数组。

(2)将像素坐标作为函数输入参数,具体调用格式如下:

  • P=impixel(Ⅰ,C,R):该函数是输出灰度图像中指定的像素灰度值,其中Ⅰ表示灰度图像,R和C是长度相同的向量,向量中的元素对应图像中像素的坐标值,R对应横坐标,C对应纵坐标,即R和C是用来指定图像中特定坐标的像素。Р中存放的是指定像素点的灰度值。那么数组Р第k行的灰度值将是像素(R[k],C[k])所对应的灰度值。此时Р是一维向量。
  • P=impixel(X,map,C,R):该函数是输出索引图像中指定像素的颜色值,其中[X,map]表示索引图像,R和C意义同上,P中存放的是指定像素点的颜色值。那么数组P第k 行的颜色值将是像素(R[k],C[k])所对应的颜色值。此时Р是二维数组,每行有3个元素,分别表示红色、绿色和蓝色颜色值。
  • P=impixel(RGB,C,R):该函数是输出RGB图像中指定的像素的颜色值,其中 RGB表示真彩色图像,R和C意义同上,P中存放的是指定像素点的颜色值。

另外,函数impixel( )输出参数可以是多个,例如[C,R,P]=impixel(...)该语句的输出包含3个参数,R和C对应指定像素的坐标值,P的意义同上。

 

2、函数impixelinfo( )

        函数impixelinfo 的功能是在当前显示的图像中创建一个像素信息工具。这个像素信息工具显示的是鼠标光标所在图像的像素点的信息,并且可以显示该图像窗口中的所有图像中的像素的信息。该像素信息显示工具默认在图像窗口的左下角,其内容包括两个部分,一是一个字符串 Pixel Info,二是在字符串后的像素信息。根据所显示的图像类型不同,显示像素信息的形式也不相同,具体如表所示。如果光标处在图像区域之外,那么像素信息工具将显示默认的字符串。

《MATLAB图像处理实例详解》:学习第四天(2022.09.29)_第5张图片

        函数impixelinfo( )具体调用格式如下:

  • impixelinfo:该函数是在默认情况下,创建一个图像像素信息显示工具。如果在创建该工具时,想去掉字符串 Pixel Info,则直接用函数impixelinfoval( )。
  • impixelinfo(H):该函数是在由句柄H指定的图像窗口中创建一个图像像素信息显示工具。其中句柄H可以是一个图像,一个轴,一个uipanel或者一个图形对象,它们中至少包含一幅图像对象。
  • H=impixelinfo(...):该函数表示创建一个像素信息工具同时返回一个工具对象句柄H。

你可能感兴趣的:(MATLAB图像处理实例详解,matlab,图像处理,学习)