《数字图像处理与机器视觉——Visual C++与Matlab实现》——1.5 图像的显示

    xiaoxiao2024-01-11  144

    本节书摘来自异步社区出版社《数字图像处理与机器视觉——Visual C++与Matlab实现》一书中的第1章,第1.5节,作者: 张铮 , 王艳平 , 薛桂香,更多章节内容可以访问云栖社区“异步社区”公众号查看。

    1.5 图像的显示

    数字图像处理与机器视觉——Visual C++与Matlab实现一般使用imshow函数来显示图像,该函数可以创建一个图像对象,并可以自动设置图像的诸多属性,从而简化编程操作。这里介绍imshow函数的几种常见调用方式。

    1.imshow函数imshow函数用于显示工作区或图像文件中的图像,在显示的同时可控制部分效果(参见例12.6),常用的调用形式为:

    imshow(I, [low high], param1, value1, param2, value2, …)  imshow(I, MAP)  imshow(filename)

    参数说明:

    I为要显示的图像矩阵。可选参数[low high]指定显示灰度图像时的灰度范围,灰度值低于low的像素被显示为黑色,高于high的像素被显示为白色,介于low和high之间的像素被按比例显示为各种等级的灰色。如果用此参数指定为空矩阵[ ],则函数会将图像矩阵中的最小值指定为low、最大值指定为high,从而达到灰度拉伸的显示效果。这个参数常常用于改善灰度图像的显示效果。可选参数param1、value1、param2、value2等可以用来指定显示图像的特定方法。MAP为颜色索引表,除了显示索引图像,在显示伪彩色图像时也可用到。filename参数用于指定图像文件名,这样可以不必将图像文件首先读入工作区。【例1.6】 图像文件的读取、显示、回写。

    % 读取图像文件 >>I = imread('gantrycrane.png'); % 显示图像 >>imshow(I); % 写回到文件 >>imwrite(I, 'gantrycrane.tif', 'TIFF');

    2.多幅图像的显示有时需要将多幅图像一起显示以比较它们之间的异同,这在考察不同算法对同一幅图像的处理效果时尤为有用。

    可以在同一窗口或者不同窗口显示多幅图像,这两种方式的实现如例1.7所示。

    【例1.7】 显示多幅图像。

    I = imread(‘pout.tif’); % 读取图像 % 在不同窗口显示 figure; %创建一个新的窗口 imshow(I); figure; imshow(I, [ ]); % 在相同窗口显示 figure; subplot(1, 2,1); imshow(I); subplot(1,2,2); imshow(I, [ ]);

    上述程序中figure函数用于新创建一个显示窗口,以避免新图像的显示覆盖原图像;subplot(m,n,p)函数的含义是,打开一个有m行n列图像位置的窗口,并将焦点位于第p个位置上。

    icon-info注意:

    在多幅索引图像的显示中存在着潜在的问题。由于索引图像使用的颜色表可能不同,而系统的全局颜色表在默认情况下是8位的,最多只能存储256种颜色,如此,如果所有图像的总颜色种类超过256种,则超出的部分将不会被正确显示。所以,通常先使用ind2rgb(I)将图像转换为RGB模式。此外,也可以使用subimage(I,map),这个函数在显示图像之前会自动将其转换为RGB格式。3.多帧图像的显示在显示多帧图像时,可以显示多帧中的一帧,或者将它们显示在同一个窗口内,也可以将多帧图像转化成电影播放出来。这3种方式的实现如例1.8所示。

    【例1.8】 多幅图像D,存储了一组索引图像,MAP为颜色索引表。分别以上述的3种方式显示它们。

    >>load mri %载入Matlab自带的核磁共振图像 >>imshow(D(:,:,7), map); % 显示多幅中的一幅 % 同一窗口显示 >>figure, montage(D, map); % 转化成为电影 >>figure >>mov=immovie(D, map); >>colormap(map); %设定颜色表 >>movie(mov); %播放电影

    4.图像的放缩有时需要将图像的某一部分放大以查看局部的详细情况,输入zoom on命令即可实现图像的放缩,zoom off可以关闭图像放缩功能。打开图像放缩功能之后,就可以通过简单的鼠标操作观察图像细部。

    5.像素值查看工具使用imshow函数显示一幅图像之后,可以通过输入pixval命令在最后显示的图像窗口中打开一个TOOLTIP风格的提示栏,随光标的移动显示鼠标指针所指位置处的像素值。

    本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

    相关资源:数字图像处理与机器视觉——Visual C 与Matlab实现(第2版)
    最新回复(0)