Dibuja la bandera india usando matlab

En el procesamiento de imágenes digitales, una imagen en color se representa en una array tridimensional. La imagen se puede representar en varios modelos de color, como el modelo RGB (rojo, verde, azul), el modelo HSV (tono, saturación, valor), el modelo YIQ (cuadratura en fase de luminancia), el modelo CMYK (cian, magenta, amarillo, negro) . Generalmente, una imagen se representa en el modelo RGB. El primer canal de la array es el Rojo, el segundo canal es el Verde y el tercer canal es el Azul.
Enfoque para dibujar la bandera india 
 

  • Primero, necesitamos crear una array de 300X600X3 y llenar la array con color blanco. 300 es el número de filas y 600 es el número de columnas. Para la imagen en color se requieren 3 canales, por lo que 3 representa el canal RGB (Rojo Verde Azul). 
     
img=uint8(zeros(300, 600, 3))
  • Divida la array en tres partes (0-100) filas para color azafrán, (101-200) filas para color blanco y chakra ashok, (201-300) filas para verde.
  • Rellene la array con color azafrán (255, 153, 51) desde la primera fila hasta la fila 100. 
     
img(1:100, 1:600, 1)=255;
img(1:100, 1:600, 2)=153;
img(1:100;1:600, 3)=51;
  • Rellene la array con color verde (19, 136, 8) desde la fila 201 a la 300. 
     
img(201:300, 1:600, 1)=19;
img(201:300, 1:600, 2)=136;
img(201:300, 1:600, 3)=8;
  • Para hacer ashok chakra, primero debemos entender la ecuación de la distancia entre dos coordenadas dadas. 
     
(distance)2=(x2-x1)2+(y2-y1)2
  • (x1, y1) y (x2, y2) son las dos coordenadas dadas.
  • Usando la ecuación anterior, podemos hacer el círculo de ashok chakra. Las coordenadas del centro de la array y el círculo son (150, 300). Para dibujar un círculo, el radio interior es 40 y el radio exterior es 45.
  • El ángulo entre dos radios adyacentes de ashok chakra es (360/n)=15 o , donde n(número de radios)=24. atand es una función de MATLAB utilizada para encontrar el ángulo.

La implementación se da a continuación: 
 

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);

Producción : 
 

Publicación traducida automáticamente

Artículo escrito por debanjanchattopadhyay y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *