一、imshow函数
imshow是MATLAB工具软件中用于显示图像的函数,它支持多种图像类型,包括灰度图像、真彩色图像、索引图像等。以下是对imshow常用用法:
imshow(I) 在图窗中显示灰度图像 I。imshow 使用图像数据类型的默认显示范围,并优化图窗、坐标区和图像对象属性以便显示图像。
imshow(I,[low high]) 显示灰度图像 I,以二元素向量 [low high] 形式指定显示范围。小于low的值显示为黑色,大于high显示为白色。使用默认数量的灰度级别时,介于 low 和 high 之间的值显示为灰色的中间色调。
imshow(I,[]) 显示灰度图像 I,根据 I 中的像素值范围对显示进行转换。imshow 使用 [min(I(:)) max(I(:))] 作为显示范围。imshow 将 I 中的最小值显示为黑色,将最大值显示为白色。
imshow(RGB) 在图窗中显示真彩色图像 RGB。
imshow(BW) 在图窗中显示二值图像 BW。对于二值图像,imshow 将值为 0(零)的像素显示为黑色,将值为 1 的像素显示为白色。
注意:imshow有时候还会与InitialMagnification和Interpolation联合使用。
1.InitialMagnification — 图像显示的初始放大倍率
100 (默认) | 数值标量 | "fit"
图像显示的初始放大倍率,指定为数值标量或 "fit"。如果设为 100,则 imshow 在 100% 放大倍率下显示图像(每个图像像素对应一个屏幕像素)。如果设为 "fit",则 imshow 缩放整个图像以适合窗口。
2. Interpolation — 插值方法
"nearest" (默认) | "bilinear"
插值方法,指定为 "nearest" 或 "bilinear"。MATLAB 通过插值在屏幕上显示图像的缩放版本。您选择的值不会影响图像数据。根据图像内容和要实现的效果选择插值方法:
"nearest" - 最近邻点插值。位于 (x, y) 的像素值是原始图像中与 (x, y) 最邻近的像素值。当有少量表示明显不同类别的像素值时,或当您要在高度放大的视图中查看各个像素时,此方法最合适。
"bilinear" - 双线性插值。位于 (x, y) 的像素值是原始图像中该位置周围像素的加权平均值。为了最大限度地减少显示伪影,当您缩小图像时,imshow 函数会执行抗锯齿功能。此方法在几乎所有其他情况下都最合适
二、应用实例
- imshow应用实例一:读入一幅RGB彩色图像,对其进行彩色图像显示,部分图像显示,适应窗口图像显示和灰度图像显示。程序代码如下:
clear all;
close all;
clc;
% 读取图像
img = imread('testPicture.jpg');
[m,n,d]=size(img);
% 创建一个新的图形窗口并显示图像
figure,imshow(img),title('显示图像');
% 显示图像的一部分
imtool(img);
imgSub=img(600:1120, 560:1200,:);
figure,imshow(imgSub),title('显示图像的一部分');
% 调整图像显示的大小以适应窗口
figure,imshow(img, 'InitialMagnification', 'fit'),title('适应窗口大小图像');
figure('Name','imshow应用实例一','numbertitle','off');
subplot(2,2,1), imshow(img), title('原始彩色图像');
subplot(2,2,2), imshow(imgSub), title('显示部分彩色图像');
subplot(2,2,3), imshow(img, 'InitialMagnification', 'fit'),title('适应窗口大小图像');
subplot(2,2,4), imshow(rgb2gray(img)), title('灰度图像');
部分运行结果如下:
2. imshow应用实例二
从MATLAB手动输入一个double矩阵,并进行图像显示和数据类型转换并显示。程序如下:
clear all;
close all;
clc;
I=[1 2 3 4;5 6 7 8;9 10 11 12;...
13 14 15 16];
whos I;
imshow(I);%注意矩阵I的数据类型是double,大于1的值均显示为白色。
figure,imshow(I,[]);%此时将最小值1显示为黑色,最大值16显示为白色,其余数据颜色在黑白之间进行显示。
I2=uint8(I);
figure,imshow(I2),title('将I矩阵(double)转化为uint8后图像');
figure('name','imshow的应用','numbertitle','off');
subplot(2,2,1),imshow(I,'InitialMagnification', 'fit'),title('适应窗口大小图像imshow(I)');
subplot(2,2,2),imshow(I, [],'InitialMagnification', 'fit'),title('适应窗口大小图像imshow(I, []');
subplot(2,2,3),imshow(I2,'InitialMagnification', 'fit'),title('适应窗口大小图像imshow(I2)');
subplot(2,2,4),imshow(I2, [],'InitialMagnification', 'fit'),title('适应窗口大小图像imshow(I2, []');
部分运行结果如下:
从运行结果可以看出,,imshow(I,'InitialMagnification', 'fit')对像素比较少时,采用该方法显示效果好。
如果大家觉得本文对大家学习和研究有帮助,请关注、点赞和收藏,感谢大家支持!