Una imagen coloreada se puede representar como una array de 3 orden. El primer orden es para las filas, el segundo orden es para las columnas y el tercer orden es para especificar el color del píxel correspondiente. Aquí usamos el formato de color RGB, por lo que el tercer orden tomará 3 valores de Rojo, Verde y Azul respectivamente. Los valores de las filas y columnas en función del tamaño de la imagen.
Requisito previo: representación de imagen RGB
Acercarse:
- Haga una array de 3 orden cero de dimensiones 300X600X3. 300 indica el número de píxeles de las filas, 600 indica el número de píxeles de las columnas y 3 indica el código de colores en formato RGB.
- Colorea toda la imagen de azul accediendo a cada píxel y cambiando su valor RGB. El código de color RGB de azul en la bandera de Seychelles es (0, 63, 135).
Después de este paso, la imagen se verá así :
- La parte amarilla de la bandera forma un ángulo de 57 grados con el eje X, por lo que su pendiente será de 1,55. Accede a cada píxel de la imagen y comprueba si la pendiente del píxel con el origen es menor o igual a 1,55, si es cierto cambia su valor RGB por el de amarillo. El código de color RGB de amarillo en la bandera de Seychelles es (252, 216, 86).
Después de este paso, la imagen se verá así:
- La parte roja de la bandera forma un ángulo de 37 grados con el eje X, por lo que su pendiente será de 0,75. Acceda a cada píxel de la imagen y verifique si la pendiente del píxel con el origen es menor o igual a 0.75, si es cierto, cambie su valor RGB al de rojo. El código de color RGB de rojo en la bandera de Seychelles es (214, 40, 40).
Después de este paso, la imagen se verá así:
- La parte blanca de la bandera forma un ángulo de 20 grados con el eje X, por lo que su pendiente será de 0,36. Accede a cada píxel de la imagen y comprueba si la pendiente del píxel con el origen es menor o igual a 0,36, si es cierto cambia su valor RGB por el de blanco. El código de color RGB del blanco es (255, 255, 255).
Después de este paso, la imagen se verá así:
- La parte verde de la bandera forma un ángulo de 9 grados con el eje X, por lo que su pendiente será de 0,15. Accede a cada píxel de la imagen y comprueba si la pendiente del píxel con el origen es menor o igual a 0,15, si es cierto entonces cambia su valor RGB por el de verde. El código de color RGB de verde en la bandera de Seychelles es (0, 122, 61).
Después de este paso, la imagen se verá así:
Implementación:
% 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);
Producción :