RGB图像三个分量的理解和显示

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图像三个分量的理解和显示_第1张图片

  • 彩色显示法

只有当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');

显示结果
RGB图像三个分量的理解和显示_第2张图片
补充说明上述用到的个别函数:

  • 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
  • 待继续补充

参考博客

https://blog.csdn.net/rzwangyu/article/details/50981762

你可能感兴趣的:(RGB图像三个分量的理解和显示)