数字图像处理(一)——图像存储与格式转换

图像类型

常见的图像类型有:二值图像、灰度图像、彩色图像(RGB)。

图像类型之间的转换

gray2ind:将灰度图像或二值图像转换为索引图像

[X,map]=gray2ind(I,n)
[X,map]=gray2ind(BW,n)

其中
I:转换前图像数据;
BW:存储二值图像的数据;
X:索引图像数据;
n:图像颜色映射个数,也表示图像的灰度级数;
map:索引图像的颜色映射矩阵;

ind2gray:将索引图像转换为灰度图像

将具有颜色图map的索引图像X转换为灰度图像I可通过函数ind2gray()来完成

I=ind2gray(X,map);

rgb2gray:将RGB图像转换为灰度图像

将输入的RGB图像转换为灰度图像I或将输入的颜色图map返回一个等价的灰度图.

I=rgb2gray(RGB);% 将输入对的RGB图像转换为灰度图像
newmap=rgb2gray(map);% 将输入的颜色map返回一个等价的灰度图

rgb2ind:将RGB图像转换为索引图像

将RGB图像转换为具有颜色图map的索引图像X可通过函数rgb2ind()完成。

[X,map]=rgb2ind(RGB,n);% 用最小方差量化抖动方法将图像转换为索引图像,map中至多包含n个颜色
[X,map]=rgb2ind(RGB,tol)% 用均匀量化抖动方法将图像转换为索引图像,tol的取值范围是0.0-1.0
X=rgb2ind(RGB,map);% 用逆颜色映射方法将RGB图像转换为所以你图像
[...]=rgb2ind(...,dither_option);% 转换图像时是否激活抖动方法

函数各参数含义如下:
RGB:真彩色图像数据;
X:索引图像数据;
n:索引图像颜色
map:索引图像的颜色映射矩阵

ind2rgb函数:将索引图像转换为RGB图像

将具有颜色映射map的索引试色图想x转换成真彩色图像RGB。

RGB=ind2rgb(X,map);

im2bw:通过阈值方法将图像转换为二值图像

通过设置亮点阈值将真彩色图像,索引图像及灰度图像转换成二值图像。

BW=im2bw(I,level);% 将灰度图像I转换为二值图像
BW=im2bw(X,map,level);% 将颜色映射图为图map的索引图像X转换为二值图像
BW=im2bw(RGB,level);% 将RGB图像转换为二值图像

I:灰度图像数据;
level:阈值,取值在0-1之间,当输入图像的亮度小于level时,对应的输出图像的像素值为0,其他地方为1
X:索引图像;
BW:二值图像数据
map:索引图像的映射矩阵;
RGB:真彩色图像数据;
RGB可以是double或uint8类型,BW为uint8类型。

grayslice:通过多级阈值化方法将灰度图像转换为索引图像

X=grayslice(I,n);%将图像I的亮度均匀量化为n个等级,并返回索引图像X,n的默认值为64
X=grayslice(I,v);% 按指定阈值向量v(每个元素都在0和1之间)对图像I的亮度进行划分,并返回索引图像X

输入图像I可以是双精度类型或8位无符号类型。如果阈值数量小于256,则返回图像X的数据类型是8位无符号类型,X的值域为[0,n]或[0,length(v)];否则,返回图像X为双精度类型,值域为[1,n+1]或[1,length(v)+1]。jet(M)生成默认的M*3颜色映射矩阵。

数字图像的读写和显示

imread:读入图像文件

I=imread(filename,fmt);%读取格式为fmt的图像filename并存入图像矩阵
[I,map]=imread(filename,fmt);% 读取索引图像,返回图像矩阵I和颜色映射矩阵
[…]=imread(filename)% 读取图像文件filename,格式由文件内容决定
[…]=imread(filename,idx);%从图标或光标读入衣服图像,或从GIf文件中读入一幅图像
[…]=imread(…,ref)%从HDF4文件中读入一幅参考数位ref的图像
[…]=imread(…,‘BackgroundColor’,BG);
[A,map,alpha]=imread(…)% 只能读入ICO,CUR和PNG格式的文件
函数各参数含义如下:
filename:图像文件名;
fmt:图像文件格式;
I:图像数据矩阵;
map:索引图像颜色映射矩阵;
idx:图像序号。
ref:整数值。
alpha:透明度。

imwrite:将内存中的图像数据存为文件

将各类型图像矩阵,写入filename中。

imwrite(A,filename,fmt);% 将图像矩阵以fmt格式写入文件filename中
imwrite(X,map,filename,fmt);% 根据颜色索引表map将索引图像X以fmt格式写入文件filename中
imwrite(...,filename);
imwrite(...,Param1,Val1,Param2,Val2,...);

函数各参数的含义如下:
filename:保存的图像文件名;
fmt:存储格式;
A,X:存储图像数据的矩阵;
map:索引图像的颜色图;
Param1,Param2,Val1,Val2:用户控制的一些图像文件格式输出特性;

image:建立并显示图像

image(I);
image(X,Y,I);

函数各参数如下:
I:待显示对的图像数据矩阵;
X,Y:横坐标与纵坐标向量,用于显示图像的显示范围。
不管图像I的类型是双精度浮点型还是uint8还是uint16无符号整数型,image函数都能将其正确地显示出来。
image函数只适用于显示自行设计图像显示。

subimage:在一个图形窗口中显示多个图像

subimage(X,map);
subimage(I);
subimage(BW);
subimage(RGB);
subimage(x,y,...);
h=subimage(...);

imagesc:调整数据并显示为图像

调整数据C并显示图像可以通过函数imagesc()来完成。

imagesc(C);
imagesc(x,y,C);

函数各参数的含义如下:
C:带显示的数据;
x,y:显示图像是坐标轴x和y的边界。

imshow:图像显示

imshow(I,n);%显示灰度,真彩色和二进制图像
imshow(I,[low,high]);% 给出显示图像的灰度范围
imshow(X,map);% 使用颜色映射矩阵map显示索引图像X
imshow(filename);% 如果图像是多帧的,那么仅显示第一帧
H=imshow(...);

函数各参数含义如下:
I,X:带显示的图像数据。
filename:带显示图像文件名。
[low,high]:灰度范围。
H:imshow函数创建的图像对象句柄。
map:索引图像的颜色映射矩阵。

参考文献

陈刚等. MATLAB在数字图像处理中的应用. 清华大学出版社,2016.

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值