彩色图像可以表示为3阶矩阵。第一个顺序用于行,第二个顺序用于列,第三个顺序用于指定相应像素的颜色。这里我们使用RGB颜色格式,因此三阶分别采用3个值,分别是红色,绿色和蓝色。行和列的值取决于图像的大小。
先决条件:RGB图像表示
方法:
- 制作尺寸为300X600X3的3阶零矩阵。 300表示行的像素数,600表示列的像素数,3表示RGB格式的颜色编码。
- 通过访问每个像素并更改其RGB值,将整个图像着色为蓝色。塞舌尔标志中蓝色的RGB颜色代码为(0,63,135)。完成此步骤后,图像将如下所示:
- 标志的黄色部分与X轴成57度角,因此其斜率将为1.55。访问图像的每个像素,并检查像素与原点的斜率是否小于或等于1.55,如果为true,则将其RGB值更改为黄色。塞舌尔标志中的黄色的RGB颜色代码是(252,216,86)。完成此步骤后,图像将如下所示:
- 标志的红色部分与X轴成37度角,因此其斜率将为0.75。访问图像的每个像素,并检查原点像素的斜率是否小于或等于0.75(如果为true),然后将其RGB值更改为红色。塞舌尔标志中红色的RGB颜色代码是(214,40,40)。完成此步骤后,图像将如下所示:
- 标志的白色部分与X轴成20度角,因此其斜率将为0.36。访问图像的每个像素,并检查像素与原点的斜率是否小于或等于0.36,如果为true,则将其RGB值更改为白色。白色的RGB颜色代码是(255,255,255)。完成此步骤后,图像将如下所示:
- 标志的绿色部分与X轴成9度角,因此其斜率将为0.15。访问图像的每个像素,并检查像素与原点的斜率是否小于或等于0.15,如果为true,则将其RGB值更改为绿色。塞舌尔标志中绿色的RGB颜色代码为(0,122,61)。完成此步骤后,图像将如下所示:
执行:
% MATLAB code to draw Seychelles flag
% initialising a zero matrix of 300X600X3
im=uint8(zeros(300, 600, 3))+255;
% blue
for i = 1:300
for j = 1:600
im(i, j, 1) = 0;
im(i, j, 2) = 63;
im(i, j, 3) = 135;
end
end
% yellow
for i = 1 : 300
for j = 1 : 600
m = round(abs((i-300)/(j-1)), 2);
if m <= 1.55
im(i, j, 1) = 252;
im(i, j, 2) = 216;
im(i, j, 3) = 86;
end
end
end
% red
for i = 1 : 300
for j = 1 : 600
m = round(abs((i-300)/(j-1)), 2);
if m <= 0.75
im(i, j, 1) = 214;
im(i, j, 2) = 40;
im(i, j, 3) = 40;
end
end
end
% white
for i = 1 : 300
for j = 1 : 600
m = round(abs((i-300)/(j-1)), 2);
if m <= 0.36
im(i, j, 1) = 255;
im(i, j, 2) = 255;
im(i, j, 3) = 255;
end
end
end
% green
for i = 1 : 300
for j = 1 : 600
m = round(abs((i-300)/(j-1)), 2);
if m <= 0.15
im(i, j, 1) = 0;
im(i, j, 2) = 122;
im(i, j, 3) = 61;
end
end
end
% displaying the matrix as an image
figure, imshow(im);
输出 :