p1 = imread('test1.jpg'); % 读取图像文件
p2 = p1; % 相当于将图像复制赋值给p2
p2(:,:,2)=p1(:,:,3); % 将p1蓝色通道赋值给p2绿色通道 1:red ; 2:green ; 3:blue
p2(:,:,3)=p1(:,:,2); % 将p1绿色通道赋值给p2蓝色通道
subplot(121),imshow(p1),title('p1'); % 显示原图
subplot(122),imshow(p2),title('p2'); % 显示蓝绿通道互换后图像p1 = imread('test1.jpg');
RGB : 颜色空间,最常用的用途就是显示器系统,被称为三原色,所有的颜色都可以看成三个基本颜色-红色(red)、绿色(green)和蓝色 (blue)的不同组合
而对于一幅三通道彩色数字图像的每个图像像素(x,y),需要指出三个矢量分量R、G、B;因此我们可以查看不同通道互换后的图像的 不同之处
通道互换需要先将原图像赋值到另一变量,然后将 p2(:,:,2)=p1(:,:,3); p1的蓝色(3)赋值给p2的绿色通道
HSV = rgb2hsv(p1); %实现rgb图形向hsv图像转换
YCbCr = rgb2ycbcr(p1); %实现rgb图形向ycbcr图像转换
subplot(221),imshow(p1),title('原图'); % subplot(r,c,n) r:行数 c:列数 n:(图像位置)按顺序从左到右,从上到下依次
subplot(222),imshow(HSV),title('HSV'); % imshow() 展示图像
subplot(223),imshow(p1),title('原图');
subplot(224),imshow(YCbCr),title('YCbCr');
HSV,YCbCr 同RGB都是不同模式的颜色空间
**HSV:**是一种根据颜色的直观特性将RGB模型点转化到一个倒着的六棱锥,或下圆锥,圆柱表示,H:色调;S:饱和度;V:明亮度;
H:(0-360°) 从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。它们的补色是:黄色为60°,青色为180°,紫色为300°;
S:饱和度S表示颜色接近光谱色的程度。一种颜色,可以看成是某种光谱色与白色混合的结果。其中光谱色所占的比例愈大,颜色接近光谱色的程度就愈高,颜色的饱和度也就愈高。饱和度高,颜色则深而艳。光谱色的白光成分为0,饱和度达到最高。通常取值范围为0%~100%,值越大,颜色越饱和。离垂直中心线愈远饱和度愈高
V:取值范围为0%(黑)到100%(白)垂直中心线上越往上愈亮,越往下则愈暗
RGB和CMY颜色模型都是面向硬件的,而HSV(Hue Saturation Value)颜色模型是面向用户的。
**YCbCr:**常用于肤色检测和影像连续处理的色彩模型。Y为颜色的亮度(luma)成分,而CB和CR则为蓝色和红色的浓度偏移量成份。主要的子采样格式有 YCbCr 4:2:0、YCbCr 4:2:2 和 YCbCr 4:4:4。
颜色模型有很多种,在实际应用中可根据每种模型的特点与优势使用
p1 = imread('test1.jpg');
r = p1(:,:,1); %提取红色通道
g = p1(:,:,2);
b = p1(:,:,3);
Y = 0.299*r + 0.587*g + 0.114*b; %计算亮度值实现灰度化(变换颜色模型Y)
I = (r + g + b)/3; %计算亮度值实现灰度化(变换颜色模型I)
subplot(131),imshow(p1),title('变化前');
subplot(132),imshow(Y),title('变化后Y');
subplot(133),imshow(I),title('变化后I');