数字图像处理Matlab-图像的显示与格式变换(附代码)

1.Objectives:

(1)熟悉常用的图像文件格式与格式转换; (2)熟悉图像矩阵的显示方法(灰度、索引、黑白、彩色);
(3)熟悉图像矩阵的格式转换。

2.Experiment Content:

练习图像读写命令 imread 和imwrite 并进行图像文件格式间的转换
熟悉下列函数模块:
图像文件输入输出 imread imwrite
图片显示:colorbar getimage image imagesc immovie imshow subimage truesize warp

3.Experiment Principle:

图像显示和格式转换的基本函数语句

4.Experiment Steps Result and Conlusion:

(1)从硬盘加载图像cameraman.tif (使用函数imread

)

(2)在窗口显示图像 (使用函数 image 或 imshow)

(3)在图像右侧加一个亮度条 (使用函数 colorbar)

图1 原图
图1 原图

Con:从0-255 亮度一次增大

(4)从当前图形窗口(坐标轴)获得图像数据(使用函数getimage)

在这里插入图片描述

图2 使用函数getimage获得图像数据

Con:部分信息截图,这个获得的信息就是这个图像的灰度值,矩阵大小等于图像的大小 256*256 由于图片是uint8,因此其值的范围是0-255。

(5)显示图像从64 到128 的灰度级 (使用函数 imagesc)。

在这里插入图片描述
图3 不同灰度级范围的图像

Con:图中我用了四张图做了对比 大于范围的变成白色,小于范围的变成黑色可以发现灰度在64-128之间的大概在草坪的位置
范围在0-63的由于大部分像素点都大于此范围,图片整体偏白
范围在129-255的由于大部分像素点都小于此范围,图片整体偏黑

:刚开始使用imagesc(f,clims);函数生成彩色图像,那是因为imagesc是进行线性映射,是对色图进行映射。
后来加上colormap(gray);将图像变为灰色。

(6)将一个4-D 图像制成动画(加载mri,用immovie 制作动画, 用函数movie播放动画)

在这里插入图片描述
图4 将一个4-D 图像制成动画Con:这是用27张索引图片组成的movie,从数据D的第四维度上也能看出来,然后将这些图片在时间维度上累加,就构成了movie

(7)把图像显示在一个主面上(使用函数warp)

在这里插入图片描述
图5 把图像显示在一个圆柱面上

图中完成了将图片在圆柱体上的display,从旋转图片可以看出,图片只是贴在了圆柱的四周,并没有贴在两个底面上。要是贴在球上,就是贴在整个球上了

:刚开始在圆柱上形成的图片只有一张且是上下反过来的,所以要将两张拼接成一张再给z值加负号即可。
在这里插入图片描述
图6 将两幅图像拼在一起之后还将图片放到球面上,如下
在这里插入图片描述
图7 把图像显示在一个球面上

5.Appendix(programs and images):

代码:

clear all;clc;
f=imread('E:\数字图像处理\程序与图像\标准图片\camera.tif');  %读取图像,获得信息
imshow(f);%显示图像
hold on;%使前一个显示的图像保留,在下一个显示的时候仍然存在
colorbar;%加亮度条
f1=getimage;%从当前图像窗口获取信息
%getimamge与imread的区别 两者都是获得图像的信息 获取的方式不一样,getimage也可以加参数,代表的是第几幅图 

figure(1);
subplot(2,2,1);
imshow(f); %将原图先显示出来方便做对比
colorbar;
title('原图');    
subplot(2,2,2);
clims=[0 63];  %确定要显示的灰度范围
imagesc(f,clims);%显示图像在制定范围内的灰度级
colorbar;%加亮度条便于观察
title('灰度范围0-63');
subplot(2,2,3);
clims=[64 128];
imagesc(f,clims);%这里显示出64-128的灰度级 小于此灰度级的都变成黑色,大于此灰度级的都变成白色colorbar
title('灰度范围64-128');
subplot(2,2,4);
clims=[129 255];
imagesc(f,clims);%这里显示出129-256的灰度级
colormap(gray);%将图像变为灰色 %colorbar
title('灰度范围129-255'); 

load mri.mat;%加载数据包
mov = immovie(D,map);%immovie返回一个电影结构数组从多个索引图像中, 其中D就是多个索引图像,里面存放了每张索引图片的每个像素点的对应的值是一个m*n*1*k的数组。mn是每张图片的大小,1
%放的是根据索引获得的每个像素点的灰度信息,k代表的是一共有几张索引图片。map就是索引图像的索引colormapimplay(mov);%implay用来播放刚才得到的电影结构 immovie也可以,不过那个的效果不可控放一遍就结束了  

[x,y,z]=cylinder(2,100);%生成一个圆柱体,半径为2,沿着圆柱圆周共有100个等距均匀分布的点
figure(2);
f2=[f,f];
warp(x,y,-z,f2); %将图像f展示在刚才生成的xyz坐标表面
figure(4);
imshow(f2); 

[x,y,z]=sphere;%生成一个球的坐标系
figure(3);
warp(x,y,z,f);

结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了17 篇原创文章 · 获赞 12 · 访问量 1666

猜你喜欢

转载自blog.csdn.net/weixin_42784535/article/details/105120664