📜  用matlab画印度国旗

📅  最后修改于: 2022-05-13 01:55:13.178000             🧑  作者: Mango

用matlab画印度国旗

在数字图像处理中,彩色图像以 3 维矩阵表示。图像可以用各种颜色模型表示,例如 RGB(红、绿、蓝)模型、HSV(色相、饱和度、值)模型、YIQ(亮度-同相正交)模型、CMYK(青色、品红色、黄色、黑色)模型.通常,图像以 RGB 模型表示。矩阵的第一个通道是红色,第二个通道是绿色,第三个通道是蓝色。
绘制印度国旗的方法

  • 首先,我们需要创建一个 300X600X3 的矩阵,并用白色填充矩阵。 300 是行数,600 是列数。彩色图像需要 3 个通道,所以 3 代表 RGB(红绿蓝)通道。
img=uint8(zeros(300, 600, 3))
  • 将矩阵划分为三部分 (0-100) 行用于藏红花颜色,(101-200) 行用于白色和 ashok 脉轮,(201-300) 行用于绿色。
  • 从第 1 行到第 100 行用藏红花颜色 (255, 153, 51) 填充矩阵。
img(1:100, 1:600, 1)=255;
img(1:100, 1:600, 2)=153;
img(1:100;1:600, 3)=51;
  • 从第 201 行到第 300 行用绿色 (19, 136, 8) 填充矩阵。
img(201:300, 1:600, 1)=19;
img(201:300, 1:600, 2)=136;
img(201:300, 1:600, 3)=8;
  • 要制作 ashok chakra,首先我们需要了解两个给定坐标之间的距离方程。
(distance)2=(x2-x1)2+(y2-y1)2
  • (x1, y1) 和 (x2, y2) 是给定的两个坐标。
  • 使用上面的等式,我们可以制作 ashok chakra 的圆圈。矩阵和圆的中心坐标为 (150, 300)。画圆内半径为40,外半径为45。
  • ashok 脉轮的两个相邻辐条之间的角度为 (360/n)=15 o ,其中 n(辐条数)=24。 atand 是一个用于求角度的 MATLAB函数。

下面给出实现:

matlab
% MATLAB code to draw Indian flag
 
% initialising a zero matrix of 300X600X3
flag=uint8(zeros(300, 600, 3));
flag(:, :, :)=255;
%Saffron Color
flag(1:100, :, 1)=255;
flag(1:100, :, 2)=153;
flag(1:100, :, 3)=51;
 
%Green Color
flag(200:300, :, 1)=19;
flag(200:300, :, 2)=136;
flag(200:300, :, 3)=8;
 
%Ashok Chakra
for i=1:300
    for j=1:600
        if sqrt(power(i-150, 2)+ power(j-300, 2))>=40
            if sqrt(power(i-150, 2)+ power(j-300, 2))<=45
                flag(i, j, 1:2)=0;
            end
        end
    end
end
for i=110:190
    for j=260:340
        dist= (sqrt(power(i-150, 2)+power(j-300, 2)));
        k=round(atand((300-j)/(150-i)));
        if dist<=40 && mod(k, 15)==0
            flag(i, j, 1:2)=0;
        end
    end
end
% displaying the matrix as image
figure, imshow(flag);


输出 :