RGB图像由格式为M×N×3的三维数组组成,其中的“3”可以理解为三幅M×N的二维图像(灰度值图像)。这三幅图像分别代表R、G、B分量,每个分量的像素点取值范围是[0,255]。
有两种方法可以将RGB图像的三个分量分别显示出来,但显示效果不一样:
- 灰度值显示法
该方法比较简单,通过提取R、G、B分量,再分别显示出来,matlab代码如下:
clc;
clean all;
RGB = imread('baby.bmp');
subplot(2,2,1),imshow(RGB(:,:,1)),title('R分量');
subplot(2,2,2),imshow(RGB(:,:,2)),title('G分量');
subplot(2,2,3),imshow(RGB(:,:,3)),title('B分量');
subplot(2,2,4),imshow(RGB),title('RGB');
显示结果
- 彩色显示法
只有当RGB的三个通道同时被赋值时才会显示颜色,如R分量显示出红色,matlab代码如下:
clc;
clear all;
RGB = imread('baby.bmp');
zeromatrix = zeros(512, 512); %创建一个512×512的零矩阵
RGB_R = cat(3, RGB (:,:,1), zeromatrix , zeromatrix );
RGB_G = cat(3, zeromatrix , RGB (:,:,2), zeromatrix );
RGB_B = cat(3, zeromatrix , zeromatrix, RGB (:,:,3));
subplot(2,2,1),imshow(RGB_R ),title('R分量');
subplot(2,2,2),imshow(RGB_G),title('G分量');
subplot(2,2,3),imshow(RGB_B),title('B分量');
subplot(2,2,4),imshow(RGB),title('RGB');
显示结果
补充说明上述用到的个别函数:
- zeros函数
表达式1:zeros(m, n),表示创建一个m×n的零矩阵;
表达式2:zeros(n),表示创建一个n×n的零矩阵;
相对于零矩阵,ones函数表示创建一个全1矩阵,用法和上述函数类似。 - cat函数——联结数组
通用表达式:cat(dim, A, B, …);
用cat(num, A, B)作为具体例子进行说明(num=1,2,3),设A=[1 2;3 4],B=[4 5; 6 7]
A =
1 2
3 4
B =
4 5
6 7
A_1 = cat(1, A, B):A和B按列连接
A_1 =
1 2
3 4
4 5
6 7
A_2 = cat(2, A, B):A和B按行连接
A_2 =
1 2 4 5
3 4 6 7
A_3 = cat(3, A, B):RGB图像显示分量的matlab代码用到这种用法
A_3(:, :, 1) =
1 2
3 4
A_3(:, :, 2) =
4 5
6 7 - 待继续补充
参考博客