RGB图像是一个M*N*3的3维矩阵组成的图像。
简单的说cat函数的主要功能是合成矩阵:
cat(1,A,B):合成1维矩阵。
cat(2,A,B):合成2维矩阵。
cat(3,A,B,C):合成3维矩阵。
cat(dim,Y0,Y1,Y2,Y3...............)
是按dim的位数来合成矩阵。
对图像生成而言,取dim=3,然后将3个分别代表RGB分量的矩阵连接在一起:
photo=cat(3,red,green,blue)
这里red,blue,green为别为生成RGB图像photo的三个分量的值,可以使用下列语句:
rgb_r=photo(:,:,1);
rgb_g=photo(:,:,2);
rgb_b=photo(:,:,3);
例子1:
test
1 clear
2 rgb_R=zeros(8,256);
3 rgb_G=zeros(8,256);
4 rgb_B=zeros(8,256);
5 zero=zeros(8,256);
6
7 for i=1:256
8 rgb_R(:,i)=i;
9 rgb_G(:,i)=i;
10 rgb_B(:,i)=i;
11 end
12 red=uint8(rgb_R);
13 green=uint8(rgb_G);
14 blue=uint8(rgb_B);
15
16 R=cat(3,red,zero,zero);
17 G=cat(3,zero,green,zero);
18 B=cat(3,zero,zero,blue);
19 RG=cat(3,red,green,zero);
20 RB=cat(3,red,zero,blue);
21 GB=cat(3,zero,green,blue);
22
23 subplot(6,1,1), imshow(R), title('红色全彩图');
24 subplot(6,1,2), imshow(G), title('绿色全彩图');
25 subplot(6,1,3), imshow(B), title('蓝色全彩图');
26 subplot(6,1,4), imshow(RG), title('红色和绿色复合全彩图');
27 subplot(6,1,5), imshow(RB), title('红色和蓝色复合全彩图');
28 subplot(6,1,6), imshow(GB), title('绿色和蓝色复合全彩图');
结果:
例子2:
上篇中是定义了一个空的JPG图像,然后替换掉红色部分。
这次直接用CAT函数定义。
test2
1 clear;
2 green=zeros(1080,1920);
3 zero=zeros(1080,1920);
4 a=textread('green.dat','%s')';
5 b=hex2dec(a);
6 c=uint8(b);
7 for i=1:1080
8 for j=1:1920
9 m=1920*(i-1)+j;
10 green(i,j)=c(m);
11 end
12 end
13 rgb_G=uint8(green);
14 RGB=cat(3,zero,rgb_G,zero);
15 imshow(RGB);
结果: