图像类型转换

首先我们需要知道图像类型有哪几种:二值图像,灰度图像,真彩色图像,索引色图像
四种。

一. RGB图像转换为灰度图像

需要调用 rgb2gray() 函数,调用格式为:

X =rgb2gray(I): 该函数将RGB图像I转换为灰度图像X.
%彩色转gray
I =imread('E:\matlab\bin\图像处理\图片\2.jpg');
X =rgb2gray(I);
figure,
subplot(121),imshow(I);
subplot(122),imshow(X);
newmap =rgb2gray(map):将彩色颜色映射表map转化为灰度颜色映射表。

注:如果输入的是真彩色图像,则可以是uint8或者是double类型,输出图像与输入图像类型相同。如果输入的是颜色映射表,则输入和输出都是double类型。、

对于map值,只有图像类型是索引图像,才有值,否则为空。先将彩色图像转化为索引图像,然后获取map1,然后对map1灰度,最后显示。

clear all;
RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg');
[X1,map1]=rgb2ind(RGB,64);
newmap =rgb2gray(map1);
imshow(X1,newmap);

二. RGB图像转换为索引图像

在上个例子中,已经使用了将RGB图像转化为索引图像的函数rgb2ind()函数
1.[X,map] =rgb2ind(I,tol); 该函数是利用均匀量化的方法将RGB图像转换为索引图像。I为原始图像,tol的范围是从0.0至1.0,[X,map]对应生成的索引图像,map包括至少(floor(1/tol)+1)^3个颜色。
2.[X,map] =rgb2ind(I,N); 该函数是利用最小方差量化的方法,将RGB图像转化为索引图像,其中,I是原始RGB图像,[X,map]对应生成的索引图像,map包括至少N个颜色。
3.X =rgb2ind(I,map); 该函数是通过与RGB中最相近的颜色进行匹配生成颜色映射表map,将RGB图像转化为索引图像。其中,I原始RGB图像,[X,map]对应生成的索引图像,map中的颜色是与RGB图像中颜色匹配最相近的颜色。
4. […] =rgb2ind(…,dither_option); 该函数是通过参数dither_option来设置图像转换是否进行呀是谁呢抖动,dither_option取值为dither则表示抖动,从而可以达到更好的颜色效果;该参数项默认取值为nodither,表示不抖动。该格式中"…"表示根据显示任务的不同可以采用上面介绍的某种格式。
那么,代码如下,进行比较一下前三种的区别

clear all;
RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg');
[X1,map1] =rgb2ind(RGB,64);%颜色总数N至少64种
[X2,map2] =rgb2ind(RGB,0.2);%颜色总数N至少216种
map3 =colorcube(128);%创建一个指定颜色数目的RGB颜色映色表
X3 =rgb2ind(RGB,map3);
figure;
subplot(131);imshow(X1,map1);%显示用最小方差法转换后的索引图像
subplot(132);imshow(X2,map2);%显示用均匀量化法转换后的索引图像
subplot(133);imshow(X3,map3);%显示用颜色近似法转换后的索引图像

显示图像

三. 灰度图像转换为索引图像

在MATLAB中国,灰度图像是一个二维数组矩阵,而索引图像不仅包括一个二维的数组矩阵,还包括一个M x 3的颜色映射表。所以要想将灰度图像转换成索引图像,则必须生成对应的颜色映射表.

用函数 gray2ind(); 实现图像的转化,其调用格式如下:
1.[X,map] =gray2ind(I,N): 该函数是将二值图像转换为索引图像,其中I指的是原灰度图像,n是灰度级数,默认值为64。[X,map]为对应转换后的索引图像mapd中对应的颜色值为gray(n)中的颜色值。
2.[X,map] =gray2ind(BW,n); 该函数是将二值图像BW转换为索引图像。其中BW指的二值图像,n为灰度级数,默认值为2,[X,map]为对应转换后的索引图像mapd中对应的颜色值为gray(n)中的颜色值。.二值图像实际上也是灰度图像,只是灰度级数为2.
显示的结果围为:

代码如下:

I =imread('E:\matlab\bin\图像处理\图片\1.jpg');%读入RGB图像
X =rgb2gray(I);%将其转换为灰度图像
[IND,map] =gray2ind(X,8);
[IND1,map1] =gray2ind(X,2);
figure;
subplot(131);imshow(X);
subplot(132);imshow(IND,map);
subplot(133);imshow(IND1,map1);

还有另一个函数 grayslice(); 也可以将灰图像转化为索引图像,其转换的方法是通过设定阈值将灰度图像转换为索引图像,其调用的格式为:
1. I =grayslice(G,n); 该函数是将灰度图像中像素灰度均匀量化围为n个等级并转换为索引图像,其中G为灰度图像,n表示的是灰度级,I为转换后的索引图像。
2. I =grayslice(G,v); 该函数是将灰度图像按照阈值矢量v进行值域划分并转换为索引图像。v中的每一个元素都在0到1之间。jet()函数生成一个颜色映射表。
代码:

I =imread('E:\matlab\bin\图像处理\图片\1.jpg');%读入RGB图像
X1 =rgb2gray(I);%将其转换为灰度图像
X =grayslice(X1,32);
figure,imshow(X1);
figure,imshow(X,jet(32));

四. 索引图像转换为灰度图像

函数 ind2gray() 是实现索引图像转换为灰度图像。调用格式如下:

I =ind2gray(X,map):该函数将具有颜色映射表map的索引图像转换为灰度图像,取出了索引图像中的颜色,饱和度信息,保留图像的亮度信息,其中[X,map]对应索引图像,I 表示转换为灰度图像,输入图像的类型可以为double型或uint8型,但输出为double型。

显示为:

代码如下:

clear all;
RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg');
[X,map] =rgb2ind(RGB,64);
I =ind2gray(X,map);
figure;
subplot(121);imshow(X,map);
subplot(122);imshow(I);

五. 索引图像转换为RGB图像

ind2rgb()函数实现该过程,调用格式如下:
RGB =ind2rgb(X,map);该函数将索引图像[X,map]转换为RGB图像。转换过程中形成一个三位数组,然后将索引图像的颜色映射表中的颜色值赋值给三维数组。输入图像中的类型可以是double型,uint8型或uint16型,输出为double型。

显示结果,数据组成形式不同,虽然看上去一样

代码如下:

clear all;
RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg');
[X,map] =rgb2ind(RGB,64); %转换为索引图像
RGB1 =ind2rgb(X,map);
figure;
subplot(121);imshow(X,map);
subplot(122);imshow(RGB1)

六. 二值图像的转换

二值图像的数据类型实际上是logical型,0代表黑色,1代表白色。将其他类型图像转换为二值图像,首先必须规定一个规则,即将哪些数据变为1,哪些数据变为0。最常用的阈值法。,确定一个阈值,小于阈值取0,大于阈值取1.。 在MATLAB中,是通过函数im2bw(),调用格式根据原图像的不同而各有差异。如果输入的不是灰度图像,则先将其转换为灰度图像,然后通过阈值法转换为二值图像。

1.将灰度图像转为二值图像

格式为: BW =im2bw(I,level) :该函数是通过设置阈值参数level,将灰度图像转换为二值图像,level取值范围为[0,1]

显示:

代码:

close all;clear all;clc;
RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg');
I =rgb2gray(RGB);
BW1 =im2bw(I,0.4);
BW2 =im2bw(I,0.6);
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;
RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg');
[X,map] =rgb2ind(RGB,64);
BW =im2bw(X,map,0.4);
figure;
subplot(121);imshow(X,map);
subplot(122);imshow(BW);

3.将RGB图像转换为二值图像

格式为: BW =im2bw(RGB,level) :该函数是通过设置阈值参数level,将RGB图像转换为二值图像,level取值范围为[0,1]

显示结果:

代码:

clear all;
RGB =imread('E:\matlab\bin\图像处理\图片\1.jpg');
BW =im2bw(RGB,0.4);
figure;
subplot(121);imshow(RGB);
subplot(122);imshow(BW)

七. 数值矩阵转换为灰度图像

在MATLAB中,一个数据矩阵就相当于一副数字图像,只是在数字图像中对应的数组元素必须在一定的取值范围,因此,只要将对应数据矩阵中的元素按一定规律进行转换,就可以将矩阵转换为图像了。在MATLAB中,利用函数mat2gray() ,将一个数据矩阵转换为衣服灰度图像,其调用格式为:
I =mat2gray(X,[xmin,xmax]): 该函数是按照指定的取值区间[xmin,xmax]将数据矩阵X转换为灰度图像 I。xmin对应灰度值0,即黑色,xmax对应灰度值为1,即白色。数据矩阵中小于xmin的值取为0,大于xmax的值取为1。如果不指定取值区间[xmin,xmax],即在默认情况下,将数据矩阵X中的最小值设置为xmin,最大值设置为xmax.
显示结果:

代码如下:

close all;clear all;clc;
X =magic(256); %利用函数magic()产生一个256x256的方阵X
I =mat2gray(X); %将数值矩阵X转换为灰度图像
figure;imshow(I);

函数magic()产生一个256x256的方阵X,该数值矩阵中的元素按规律排列,矩阵中的,每一行元素之和,每一列元素之和 ,与对角线元素之和三者相等,即
sum(X(n,:)) =sum(X(:,n)) =sum(diag(X)) (n为[1,256],函数diag()求方阵对角,sum()求和)

Matlab图像处理基础(一)图像类型的转换相关推荐

  1. Matlab图像处理基础(1):图像表示,点处理

    目录 0. 概要 1. 图像表示 Image Representation 1.1 图像格式 Image format 1.2 图像分辨率 resolution of image 1.3 图像的编码 ...

  2. 数学建模--MATLAB图像处理基础

    平时把基础知识学一下,比赛的时候深入学一下就可以用了. 图像类型的转换 基础知识 数字图像(计算机图像处理):将图像信号数字化后利用计算机进行处理的过程. 图像的表示方法是对图像处理算法描述和利用计算 ...

  3. Matlab图像处理基础(2):区域处理,边沿检测

    目录 0. 概要 2. 卷积和相关 2.1 卷积 2.2 相关 2.3 卷积与相关的关系 2.4 Matlab函数 2.5 2-D卷积/相关的分解 3. 高通滤波,edge detection 3.1 ...

  4. 图像处理基础知识及matlab,MATLAB图像处理基础知识

    1.MATLAB支持的图像文件格式 (1)JPEG(Joint Photographic Experts Group):一种称为联合图像专家组的图像压缩格式. (2)BMP(Windows Bitma ...

  5. MATLAB基础--MATLAB图像处理基础

    图像类型的转换 RGB图像转换为灰度图像 I=imread('football.jpg'); X=rgb2gray(I); figure; subplot(121),imshow(I); subplo ...

  6. 数字图像处理:实验一 MATLAB 图像处理基础

    实验一 MATLAB 图像处理基础 MATLAB 具有强大的图像处理工具箱,有助于人们更好的理解各种图像处理算法,通 过调用工具箱中的函数,可以减少编程的复杂性,简化编程.本次实验主要掌握 MATLA ...

  7. matlab图像处理基础实验,数字图像处理实验报告 Matlab图像处理基础

    <数字图像处理实验报告 Matlab图像处理基础>由会员分享,可在线阅读,更多相关<数字图像处理实验报告 Matlab图像处理基础(27页珍藏版)>请在人人文库网上搜索. 1. ...

  8. TIT 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作

    文章目录 数字图像处理 原理与实践(MATLAB) 入门教学 实验一 常用的MATLAB图像处理命令与图像基本操作 实验要求 知识点 实验内容 1.读入一幅RGB图像,变换为灰度图像和二值图像,并在同 ...

  9. 【MATLAB Image Processing Toolbox 入门教程六】“导入、导出和转换”之“图像类型转换Ⅰ——在不同图像类型之间转换”

    [MATLAB Image Processing Toolbox 入门教程六] 1 gray2ind函数 2 ind2gray函数 3 mat2gray函数 4 rgb2gray函数 5 rgb2in ...

最新文章

  1. zimbra xxe+ssrf 导致 getshell
  2. Android 图书总汇
  3. 肝了1W字!文本生成评价指标的进化与推翻
  4. 数据库管理工具:如何使用 Navicat Premium 转储(导出)和运行(导入)*.sql 文件?
  5. 24.8. UNION
  6. this 的4种绑定机制
  7. 用shell查找某目录下的最大文件
  8. mysql中regexp用法_MySQL中REGEXP正则表达式使用大全
  9. 认知系列3: 看看资深研发工程师的思维模式
  10. 串口助手使用16进制发送数据
  11. 数据库中delete和drop的区别
  12. 百家讲坛全集免费下载
  13. 使用 Nginx 反向代理域名
  14. 网吧服务器哪个好稳定,网吧服务器不应盲目追高新:够用稳定就好
  15. python中turtle库绘制图形_Python如何使用turtle库绘制图形
  16. H.265网页播放器EasyPlayer获取视频流正常,但是播放出现黑屏是什么原因?
  17. java中接口可以继承接口吗?
  18. 《 线性代数及其应用 (原书第4版)》——1.5 线性方程组的解集
  19. Flutter成都开发者线下交流会实录
  20. 用命令行编译java文件

热门文章

  1. 分销小程序定制开发|分销系统开发对商家有哪些好处?
  2. 一文总结十大经典排序算法(思维导图 + 动图演示 + 代码实现 C/C++/Python + 致命吐槽)
  3. crh寄存器_寄存器-相关博客帖子 - 电子工程世界-论坛
  4. Flutter:从入门到实践
  5. 【FFmpeg】tbr tbn tbc
  6. 简单聊一下Android音频通路的切换
  7. java的结课课程设计,java课程设计总结
  8. MTK Android Driver知识大全
  9. 目标检测-twostage
  10. 解决Ubuntu无线网卡突然无法连接