七、彩色图像处理(MATLAB)

彩色图像处理

一、RGB图像

一幅RGB图像是一个MN3的彩色像素数组,其中每个彩色色素是一个三值组,这三个值分别对应一个特定空间位置处RGB图像的红,绿,蓝分量。
在这里插入图片描述
RGB也可以视为三幅灰度图像形成的“堆叠”,当将他们分别送到彩色显示器的红,绿,蓝输入端时,会在屏幕上生成一幅彩色图像。分量图像的数据类决定了他们的取值范围。用来表示这些分量图像像素值的比特数决定了一幅图像的比特深度。图像的颜色数为;(2b)3,其中b是每幅图像的比特数。
使用cat运算符可以堆叠出RGB图像:

rgb_image=cat(3,fR,fG,fB)

该运算中,要求图像按顺序放置。cat运算符的语法为;
rgb_image=cat(dim,A1,A2,…) 沿指定的方向来连接各个数组。如果dim=1,那么这些数组垂直排列,dim=2,则这些数组水平排列,dim=3,则在第三个方向排列。
如果所有分量图像都是一样的,那么结果是一幅灰度图像。
提取彩色图像的三幅分量图像:

 fR=f(:,:,1);
>> fG=f(:,:,2);
>> fB=f(:,:,3);

在这里插入图片描述

 rgb_red=cat(3,fR,zeros(size(fR)),zeros(size(fR)));
rgb_green=cat(3,zeros(size(fR)),fG,zeros(size(fR)));
rgb_blue=cat(3,zeros(size(fR)),zeros(size(fR)),fB);

在这里插入图片描述
RGB彩色空间通常以图解的方式显示一个RGB彩色立方体,立方体的顶点是光的原色(红,绿,蓝)和二次色(青,红紫,黄)。
在这里插入图片描述
为从任意角度查看该彩色立方体,可以定义M函数rgbcube

function rgbcube(vx,vy,vz)
vertices_matrix=[0 0 0;0 0 1;0 1 0;0 1 1;1 0 0;1 0 1;1 1 0;1 1 1];
faces_matrix=[1 5 6 2;1 3 7 5;1 2 4 3;2 4 8 6;3 7 8 4;5 6 8 7];
colors=vertices_matrix;
patch('Vertices',vertices_matrix,'Faces',faces_matrix,'FaceVertexCData',colors,'FaceColor','interp','EdgeAlpha',0)
if nargin==0
    vx=10;vy=10;vz=4;
elseif nargin~=3
    error('wrong number of input')
end
axis off
view([vx,vy,vz])
axis square

在这里插入图片描述
实验总结:
在RGB彩色模型中表示的图像由三个分量图像组成,每种原色一幅分量图像。当送入RGB监视器时,这3幅图像在屏幕上混合生成一幅彩色图像。RGB彩色立方体是实心的,在24比特RGB图像中,它由(28)3=16 777 216种颜色组成。

二、索引图像

索引图像有两个分量:一个整数数据矩阵X和一个彩色映射矩阵map。矩阵map是一个大小为m*3的double数组,其值是区间[0,1]上的浮点数。map的长度m等于其定义的颜色数。map的每一行指定单一颜色的红,绿,蓝分量(如果map的三列相等,则彩色映射就成为灰度图)。索引图像将像素的灰度值“直接映射”到彩色值。通过将相应整数矩阵X的值作为指向map的一个索引,来确定每个像素的颜色。如果 X是double类型, 那么值 1 指向 map 的第一行,值 2 指向第二行,等等。如果 X是uint8或uint16类型,那么值 0 指向 map 的第一行。
要显示一幅索引图像,可以写出

imshow(X,map)

或者,

image(X)
colormap(map)

彩色映射使用索引图像来存储,使用imre

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值