该函数将真彩色图像转换为索引图像, 由于RGB图像一个像素占用三个字节, 分别存储R、G、B分量的值,而索引图像一个像素占用一个字节。在将灰度图像转换为索引图像时, 是从3个字节映射到一个字节的关系。 通常有以下两种算法:

  • Gray = (R + G + B) / 3,即求得R、G、B三个分量平均值作为索引图像中对应像素点的像素值。
  • Gray = min(R, G, B),即以R、G、B三个中最小分量作为索引图像对应像素点的像素值。

但是,这个方法对于Gamma校正的图片(平常所见到的24位真彩色图片均为Gamma校正的图片)并不适用,因为Gamma校正后的分量值不是物理上的功率,不能直接相加,因此,提出一种改进的算法来纠正这一问题。

注意这里的2.2次方和2.2次方根,RGB颜色值不能简单直接相加,而是必须用2.2次方换算成物理光功率。因为RGB值与功率并非简单的线性关系,而是幂函数关系,这个函数的指数称为Gamma值,一般为2.2,而这个换算过程,称为Gamma校正。


真彩色

16位一般叫高彩色,一般称之64K色, 一共有2^16 = 64*1024 = 65536种色彩

24位真彩色:一共有2^24= 16 777 216,种色彩,也就是1600万色.

32位真彩色,并不是2^32种颜色,而是24位真彩色(1600万色)加上8位的透明度,让显示更好,更接近自然的色彩.


调用格式:

  • [X,map] = rgb2ind(RGB, n)

使用第二种算法把真彩色图像转换为索引图像,其中n指定map中颜色项数(表示有几种颜色,比如n=2,那就只有两种颜色构成了一张图片,但并非二值图像), n最大不能超过65536。返回值中map即索引图像的调色板,map里储存的是颜色索引,是一张各个数字对应颜色的表格。如果bmp文件是真彩色或灰度的,就不需要色表,得到的X是二维或三维的矩阵,数值介于0到255之间。如果是索引格式的(如256色、16色等等)就有这样一张表格,X是一个二维矩阵,数值介于0-255或0-15之间,显示图像时需要色表才能正确对应颜色。

  • X = rgb2ind(RGB, map)

使用调色板map将真彩色图像转换为索引图像,即在调色板中找到与真彩色图像颜色值最接近的颜色作为转换后的索引图像的像素值。map中颜色项数(即size(map, 1))不能超过65536。

  • [X,map] = rgb2ind(RGB, tol)

利用第一种算法把真彩色图像转换为索引图像, map中最多包含(floor(1/tol)+1)^3种颜色, tol必须是介于0.0和1.0之间的数。

  • [...] = rgb2ind(..., dither_option)

其中dither_option用于开启/关闭dither, dither_option可以是'dither'(默认值)或'nodither'。

相关函数: ind2gray, mat2gray, ntsc2rgb, rgb2ind, rgb2ntsc

程序示例

% 1. 显示RGB真彩色

imgrgb = imread('flower.jpg');

figure('Name', '显示真彩色图像')

imshow(imgrgb)

% 2. 显示灰度图像

imggray = rgb2gray(imgrgb);

figure('Name', '显示灰度图像')

imshow(imggray)

% 3. 显示索引图像

[imgind, map] = rgb2ind(imgrgb, 10);

figure('Name', '显示索引图像')

imshow(imgind, map)

RGB=imread('football.jpg');
[X1,map1]=rgb2ind(RGB,64);   
[X2,map2]=rgb2ind(RGB,0.2);
map3=colorcube(256);
X3=rgb2ind(RGB,map3);
figure;
subplot(131);imshow(X1,map1);
subplot(132);imshow(X2,map2);
subplot(133);imshow(X3,map3);

Matlab图像处理rgb2ind函数相关推荐

  1. matlab 细化函数,MATLAB图像处理工具箱函数(细化篇).doc

    MATLAB图像处理工具箱函数(细化篇) 第3章 MATLAB数字图像处理工具箱 3.1 MATLAB图像预处理 3.1.1 图像处理的基本操作 1. 读入并显示一幅图像 clear %清除所有的工作 ...

  2. matlab图像处理常用函数大全

    显示索引图像和灰度图像 >> [X,map]=imread('trees.tif'); >> gmap=rgb2gray(map); >> figure,imsho ...

  3. Matlab中rgb2ind函数用法

    目录 语法 说明 示例 将 RGB 图像转换为索引图像 rgb2ind函数的功能是将 RGB 图像转换为索引图像. 语法 [X,cmap] = rgb2ind(RGB,Q)[X,cmap] = rgb ...

  4. matlab 图像 whos函数,matlab图像处理常用函数

    天开始学习用matlab进行图像处理,做笔记如下. 首先说说如何使用帮助 doc  函数名           获得函数的帮助   例如 doc  format  可获得 函数format的说明 he ...

  5. matlab rgb 矩阵,Matlab中rgb2ind函数用法

    目录 rgb2ind将 RGB 图像转换为索引图像 语法 [X,cmap] = rgb2ind(RGB,Q) [X,cmap] = rgb2ind(RGB,tol) X = rgb2ind(RGB,i ...

  6. MATLAB图像处理imadjust()函数调节图像的对比度示例

    imadjust()函数 J=imadjust(I)  将强度图像为I的值映射到J中的新值,使得1%的数据在低强度和高强度I时饱和.这将增加了输出图像J的对比度. J = imadjust(I,[LO ...

  7. matlab图像处理函数大全

    1.图像的变换   ① fft2:fft2函数用于数字图像的二维傅立叶变换,如:i=imread('104_8.tif'); j=fft2(i); ②ifft2::ifft2函数用于数字图像的二维傅立 ...

  8. matlab icol,matlab图像处理函数

    一.通用函数: colorbar显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colorbar(h) \ h=colorbar( ...

  9. matlab grayslice,MATLAB图像处理函数汇总大全(2)

    语法: X = dither(RGB,map) BW = dither(I) 相关命令: rgb2ind 25.double 附录 MATLAB图像处理命令 331 功能:转换数据为双精度型. 语法: ...

最新文章

  1. 开始学习RED HAT LINUX了
  2. 你的知识死角不能否定你的技术能力
  3. 对食材的敬畏之心极致产品_这些数据科学产品组合将给您带来敬畏和启发(2020年中的版本)
  4. 大学计算机需要论文吗,关于大学计算机论文范文.docx
  5. rsync服务扩展应用
  6. 【Python】ffmpeg模块处理视频、音频信息
  7. 活动推荐|互联网3.0与区块链新时代论坛(北京)
  8. c#:winform中多线程的使用
  9. jsp加载常量的探讨
  10. cmk聪明客机器人餐厅_晒晒我家85平新房,餐厅装修的太漂亮了,儿童房飘窗更实用!...
  11. javaWeb+servlet+mysql实现简单的企业员工管理系统
  12. HTML5游戏实战 3 60行代码实现水平跑酷游戏
  13. 新媒体时代,内容为王已经走偏
  14. el-upload编辑时回显图片
  15. 管理计算机找不到应用程序,Win7计算机管理提示找不到文件或没有关联的程序问题解决方法...
  16. 企业级技术与大数据BI——节选自专著《Big Data Fundamentals: Concepts, Drivers Techniques》
  17. 马云被骗十亿?最后却被百倍奉还。
  18. 微信添加地址时选择地区功能是怎么实现的
  19. supermap gis
  20. [BZOJ 3811]玛里苟斯(线性基)尽量理解的题解

热门文章

  1. Oracle 12c新特性--LREG进程专门负责注册实例服务
  2. 除铜树脂CH-90NA电镀废水回收硫酸铜技术
  3. 关于医保你可能不了解的
  4. 案例:典型电商应用与缓存。
  5. [object] 与 [object object] 区别!
  6. 电子商务平台入驻宁夏
  7. 发刊词 | 你能从这门课听到什么
  8. [工具]网络流量控制软件NetLimiter
  9. 拆迁安置用房如何办理产权证
  10. jpa Page 1 of 0 containing UNKNOWN instances错误