图像类型的转换(matlab)

1.引言

在许多图像处理过程中,常常需要进行图像类型转换,各种图像类型转换关系如图所示:

在这里插入图片描述

2.图像类型转换成函数

1.dither --图像抖动,将灰度图片变成二值图或者将真彩色图抖动成索引图象。
2.gray2ind --将灰度图像转换成索引图象。
3.grayslice --通过设定阈值将灰度图像转换成索引色图像。
4.im2bw – 通过设定阈值将真彩色、索引色、灰度图转换成二值图像。
5.ind2gray --将索引色图像转换成灰度图像。
6.ind2rgb --将索引色图像转换成真彩色图像。
7.mat2gray --将数值矩阵转换成灰度图像。
8.rgb2gray --将真彩色图像转换成灰度图像。
9.rgb2ind --将真彩色图像转换成索引色图像。

3.1 RGB图像转换为灰度图像

(1).X = rgb2gray(I):I表示RGB图像,X表示转换后的灰度图像。

close all;clear all;clc;
I = imread('输入图片名称');
X = rgb2gray(I);
figure;
subplot(121),imshow(I);
subplot(122),imshow(X);

(2).newmap = rgb2gray(map):该函数是将彩色颜色映射表map转换成灰度颜色映射表。注:如果输入的是真彩色图像,则可以是uint8或者double类型,输入图像与输出类型相同。如果输入的颜色映射表,则输入和输出都是double类型。

close all;clear all;clc;
[X,map] = imread('输入图片名称');
newmap = rgb2gray(map);
figure,imshow(X,map);
figure,imshow(X,newmap);
whos map //查看文件各属性及属性值
whos newmap

3.2 RGB图像转换为索引图像

在MATLAB中,将真彩色图像转换成为索引图像直接调用函数rgb2ind()。
(1)均匀量化的方法:[X,map] = rgb2ind(I,tol)
I:原图像RGB;
[X,map]对应生成的索引图象;
tol:范围为0.0~1.0map包含至少(floor(1+tol)+1)^3个颜色。
(2)最小方差量化方法:[X,map] = rgb2ind(I,N)
I:原图像RGB;
[X,map]对应生成的索引图象;
N:map中包含至少N个颜色。
(3)颜色表近似法:[X,map] = rgb2ind(I,map)
I:原图像RGB;
[X,map]对应生成的索引图象;
map:颜色与RGB图像中颜色匹配最相近的颜色。

close all;clear all;clc;
RGB = imread('输入图片名称')
[X1,map1] = rgb2ind(RGB,64);
{X2,map2] = rgb2ind(RGB,0.2);
 map3 = colorcube(128);
 X3 = rgb2ind(RGB,map3);
 figure;
 subpolt(131);imshow(X1,map1);
 subplot(132);imshow(X2,map2);
 subplot(133);imshow(X3,map3);

3.3 灰度图像转换为索引图象

(1) [X,map] = gray2ind(I,n):灰度函数转换为索引图象
I:灰度图像;
n:灰度级数,默认值64;
map:颜色值为颜色图gray(n)中的颜色值。
(2)[X,map] = gray2ind(BW,n):二值图像BW转换成索引图象
I:灰度图像;
n:灰度级数,默认值2;
map:颜色值为颜色图gray(n)中的颜色值。

close all;clear all;clc;
I = imread('输入图片名称');
[X,map] = gray2ind(I,8);
figure,imshow(I);
figure,imshow(X,map);

(3) I = grayslice(G,n):灰度图像中像素灰度均匀量化为n个等级并转换为索引图象
G:灰度图像;
n:灰度级;
I:转换后的索引图像。
(4) I = grayslice(G,v):将灰度图像按照阈值矢量v进行阈值划分并转换为索引图象
G:灰度图像;
v:每一个元素都在0和1之间;
I:转换后的索引图像。

close all;clear all;clc;
I = imread('输入图片名称');
X = grayslice(I,32);
figure,imshow(I);
figure,imshow(I,jet(32));//jet()函数生成一个颜色映射表

3.4 索引图像转换为灰度图像

I = ind2gray(X,map):将具有颜色映射表map的索引图象转换为灰度图像
[X,map]:索引图像;
I:表示转换后的灰度图像。输入类型为double型或者uint8型,但是输出为double型。

close all;clear all;clc;
[X,map] = imread('输入图片名称');
I = ind2gray(X,map);
figure,imshow(X,map);
figure,imshow(I);

3.5 索引图像转换为RGB图像

RGB = ind2rgb(X,map):将索引图像[X,map]转换成RGB图像
[X,map]:索引图像;
RGB:转换后的真彩图像;
转换过程形成一个三维数组,然后将索引图像的颜色赋值给三维数组,输入图像的类型为:double、uint8或者uint16, 输出类型为:double。

close all;clear all;clc;
[X,map] = imread('输入图片名称');
RGB = ind2rgb(X,map);
figure,imshow(X,map);
figure,imshow(RGB);

3.6 二值图像的转换

(1) BW = im2bw(I,level):通过设置阈值参数,将灰度图像转换成为二值图像
I:灰度图像;
level:设置的阈值参数,取值为[0,1];;
BW:二值图像。

close all;clear all;clc;
I = imread('输入图片名称');
BW1 = im2bw(I,0.3);
BW2 = im2bw(I,0.7);
figure;
subplot(131),imshow(I);
subplot(132),imshow(BW1);
subplot(133),imshow(BW2);

(2) BW = im2bw(X,map,level):通过设置阈值参数level,将索引色图像转换为二值图像
[X,map]:索引图像;
level:设置的阈值参数,取值为[0,1];
BW:二值图像。

close all;clear all;clc;
load trees;
BW = im2bw(X,map,0.4);
figure,imshow(X,map);
figure,imshow(BW);

(3) BW = im2bw(I,level):将RGB转换成为二值图
I:RGB图像;
level:设置的阈值参数,取值为[0,1];;
BW:二值图像。

close all;clear all;clc;
I = imread('输入图片名称');
BW = im2bw(I,0.5)
figure,imshow(I);
figure,imshow(BW);

3.7 数值矩阵转换为灰度图像

I = mat2gray(X,[xmin,xmax]):按照指定的取值区间[xmin,xmax]将数据矩阵X转换成灰度图像,矩阵中小于xmin的值取0,大于xmax的值取1;如果不设置,将数据矩阵X中的最小值设为xmin,最大值设置为xmax。

close all;clear all;clc;
X = magic(256);
I = mat2gray(X);
figure,imshow(I);
  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值