rgb2ind
Matlab函数
rgb2ind,Matlab函数,将真彩色图像转换为索引图像。在matlab命令窗口中键入doc rgb2ind或help rgb2ind可以获得更多关于该函数的帮助信息。
Matlab函数rgb2ind简介
函数功能:将真彩色图像转换为索引图像。在matlab命令窗口中键入doc rgb2ind或help rgb2ind可以获得更多关于该函数的帮助信息。
该函数将真彩色图像转换为索引图像, 由于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校正。
调用格式:
[X,map] = rgb2ind(RGB, n)
使用第二种算法把真彩色图像转换为索引图像,其中n指定map中颜色项数, n最大不能超过65536。
返回值中map即索引图像的调色板。
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)
参考资料
最新修订时间:2023-12-16 20:40
目录
概述
参考资料