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