📜  使用MATLAB绘制塞舌尔国旗

📅  最后修改于: 2021-04-16 05:59:10             🧑  作者: Mango

彩色图像可以表示为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);

输出 :