一、引言
RGB彩色模型中的R、G和B为三原色,通常R、G和B分别用8位表示,因此24位的RGB
真彩色图像能表示16777216种颜色。在如右图所示RGB彩色立方体可知,任意两种原色混合可以合成一种新的颜色。红(1,0,0)和绿(0,1,0)混合可以合成黄色(1,1,0);绿(0,1,0)和蓝(0,0,1)混和可以得到青色(0,1,1);红(1,0,0)混合绿(0,1,0)可以得到深红色。当R、G和B三分量值都相等时,就显示为灰度,其中黑色(0,0,0),白色(1,1,1)。
二、问题提出
生成一幅128*128的RGB图像,该图像左上角为白色,左下角为蓝色,右上角为绿色,右下角为黄色。
三、不同编程方法实现
方法1:
clear all;close all;clc;
%该程序关键是掌握RGB颜色空间的含义,并掌握MATLAB的有关命令。
rgb_R=zeros(128,128) ;%R通道矩阵128*128矩阵初始化为0
rgb_R(1:64,1:64)=1;
rgb_R(65:128,65: 128)=1;
rgb_G=zeros(128,128);%G通道矩阵128*128矩阵初始化为0
rgb_G(1:64,1:64)=1 ;
rgb_G(1:64,65:128)=1;
rgb_G(65:128,65:128)=1;
rgb_B=zeros(128,128);%B通道矩阵128*128矩阵初始化为0
rgb_B(1:64,1:64)=1;
rgb_B(65:128,1 :64)=1;
rgb=cat(3,rgb_R, rgb_G, rgb_B);
figure,imshow(rgb),title('RGB彩色图像');
方法2:通过对拟生成的图像分析,发现采用一下代码可以减少两行程序。
clear all;close all;clc;
rgb_R=ones(128,128) ;%R通道矩阵128*128矩阵初始化为1
rgb_R(1:64,65:128)=0;
rgb_R(65:128,1: 64)=0;
rgb_G=ones(128,128);%G通道矩阵128*128矩阵初始化为1
rgb_G(65:128,1:64)=0;
rgb_B=ones(128,128);%B通道矩阵128*128矩阵初始化为1
rgb_B(1:64,65:128)=0;
rgb_B(65:128,65 :128)=0;
rgb=cat(3,rgb_R, rgb_G, rgb_B);%合成彩色图像
figure,imshow(rgb),title('RGB彩色图像');
方法3:先生成2*2*3的彩色图像,然后巧妙使用imresize对其使用最近邻法放大64倍即可获得目标图像,该方法程序简洁且容易理解。
clear all;
close all;
clc;
rgb(:,:,1)=[1 0;0 1];
rgb(:,:,2)=[1 1;0 1];
rgb(:,:,3)=[1 0;1 0];
imshow(rgb);
rgb64=imresize(rgb,64,'nearest');%采用最近邻法放大64倍
figure,imshow(rgb64),title('RGB彩色图像');
四、程序运行结果
如果觉得本文章对大家今后的编程有帮助,请点赞和收藏。如有改进意见可以与我联系,谢谢!