加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

图像类型转换--RGB图像、索引图像、灰度图像、二值图像和数据矩阵(2)

(2014-05-12 19:43:52)
标签:

matlab

图像类型转换

分类: matlab图像处理学习

索引图像转换成灰度图像

利用ind2gray()可以将索引图像转换成灰度图像。

I=ind2gray(X,map);将具有颜色映射表map的索引图转换成灰度图像,去除了索引图像的颜色、饱和度信息,保留了图像的亮度信息。输入图像的类型可以是double、uint8,但输出为double。

程序举例:

close all;clear all;clc;
[X,map]=imread('trees.tif');
I=ind2gray(X,map);
figure,imshow(X,map);
figure,imshow(I);
figure,
subplot(121),imshow(X,map);%这样是显示不出索引图像的颜色的
subplot(122),imshow(I);

http://s7/mw690/002Pv8mHgy6IP9w7d4yb6&690

说明:上述图片前者都是原来的彩色的索引映射图,后者都为灰度变换后的索引图,知识因为下方的用了subplot的表示方法,导致显示不出原有的彩色。

 

 

灰度图像转换为索引图像

利用gray2ind()函数grayslice()函数可以实现灰度图像到索引图像的转化。

在Matlab中,灰度图像是一个二维矩阵,而索引图像还包括一个M*3的颜色映射表,所以将灰度图像变换成索引图像,必须生成对应的颜色映射表。

  1. [X,map]=gray2ind(I,n);该函数是将灰度图像I转换为索引图像,I 为原灰度图像,n 为灰度等级,默认为64,map中对应的颜色值为颜色图gray(n)中的颜色值。
  2. [X,map]=gray2ind(BW,n);该函数是将二值图像BW转换为灰度图像,BW只二值图像,n 为灰度等级,默认值为2,二值图像实际上也是灰度图像,只不过灰度级为2.

程序举例

close all; clear all; clc
I=imread('aum.jpg');
[Y1,map1]=rgb2ind(I,128);%提取原始图像的颜色映射表
X=rgb2gray(I);          %灰度转换
[Y,map]=gray2ind(X,64); %灰度图像转化为索引图像
figure,imshow(X);title('灰度图像');
figure,imshow(Y,map);title('索引图像');
RGB=ind2rgb(Y,map1);    %还原转化为索引图像以后的RGB
figure,imshow(RGB);title('转换后的索引转RGB图像');
RGB1=ind2rgb(X,map1);   %还原转化为索引图像以后的RGB
figure,imshow(RGB1);title('原灰度矩阵索引转RGB图像');

 

http://s2/mw690/002Pv8mHgy6IPc6LVZfe1&690

http://s4/mw690/002Pv8mHgy6IPc8rVLl43&690

http://s5/mw690/002Pv8mHgy6IPc9HLi494&690

http://s12/mw690/002Pv8mHgy6IPcan679fb&690


grayslice()函数

I=grayslice(G,n);该函数是将灰度图像中像素灰度均匀量化为n个等级,并转化为索引图像。

I=grayslice(G,v);该函数是将灰度图像按阀值适量v进行值域划分,并转换为索引图像,v中每一个元素都在0-1之间。

 

程序举例:

close all; clear all; clc
    I=imread('aum.jpg');
    X=rgb2gray(I);          %灰度转换

 Y2=grayslice(X,255);
    figure,imshow(X);title('灰度图像');
    figure,imshow(Y2,jet(255));title('索引图像');

http://s7/mw690/002Pv8mHgy6IPepM80C56&690



http://s9/mw690/002Pv8mHgy6IPer3Ylqb8&690



    利用jet()函数生成一个颜色映射表。

 

二值图像的转换

  1. 将灰度图像转化为二值图像
        BW=im2bw(I,level);该函数通过阀值level【0-1】,将将灰度图像转换成二值图像。
    程序举例
    close all;clear all;clc;
    I=imread('aum.jpg');
    X=rgb2gray(I);          %灰度转换
    BW1=im2bw(X,0.2);       %不同的灰度阀值
    BW2=im2bw(X,0.4);
    BW3=im2bw(X,0.6);
    BW4=im2bw(X,0.8);
    figure,
    subplot(221),imshow(BW1);
    subplot(222),imshow(BW2);
    subplot(223),imshow(BW3);
    subplot(224),imshow(BW4);
    figure,imshow(X);
    http://s9/mw690/002Pv8mHgy6IPfARGmA98&690

    http://s16/mw690/002Pv8mHgy6IPfBtLGv4f&690



     
  2. 将索引图像转化为二值图像
        BW=im2bw(X,map,level);利用该函数设置阀值level,将索引图像转哈为二值图像,
    程序举例
    close all;clear all;clc;
    I=imread('aum.jpg');
    [X,map]=rgb2ind(I,64);%灰度图像转换为索引图像
    BW=im2bw(X,map,0.5);
    figure,imshow(X,map);title('彩色索引图');
    figure,imshow(BW);title('转换的二值图像');

    http://s1/mw690/002Pv8mHgy6IPgjrwAM80&690



    http://s3/mw690/002Pv8mHgy6IPgkHAHwc2&690



     
  3. RGB图像转换成二值图像
        BW=im2bw(I,level);该函数通过阀值将RGB图像转换成二值图像,
    程序举例
    close all;clear all;clc;
    I=imread('aum.jpg');
    BW5=im2bw(I,0.5); 
    figure,
    subplot(121),imshow(I);
    subplot(122),imshow(BW5);

    http://s6/mw690/002Pv8mHgy6IPgYobFrf5&690



     
  4. 数字矩阵转换为灰度关系
        在一个Matlab中,一个数据矩阵就相当于一幅数字图像,在Matlab中,利用函数mat2gray(),将一个数据矩阵转换为一幅灰度图像。
    I=mat2gray(X,[xmin,xmax]);该函数是按照指定的取值区间[xmin,xmax]将数据矩阵转换为灰度图像,xmin对应灰度值为0,即黑色,xmax对应灰度值为1,即白色,取值范围为[0,1],默认情况下设置为【0,1】。
    程序举例
    close all;clear all;clc
    X=magic(256);
    I=mat2gray(X);
    figure,imshow(I);

    http://s9/mw690/002Pv8mHgy6IPkdfIIU28&690



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有