Está en la página 1de 9

ÍNDICE

Objetivos………………………………………………………………..3

Diagrama de flujo………………………………………………………4

Código en MATLAB……………………………………………………6

Resultados……………………………………………………………...7

Comentarios…………………………………………………………….9

Conclusiones…………………………………………………………...10
OBJETIVOS
Utilizando las funciones de MATLAB vistas en clase, diseñar un
algoritmo que permite filtrar uno de los colores principales que en este
caso es el r – g – b. en esta oportunidad se utilizará el color rojo pero
también se puede realizar para el color verde y azul.

2
DIAGRAMA DE FLUJO

INICIO

Almacenar la imagen en la variable 'img'


la cual contiene tres matrices (r-g-b)

Extraer el número de filas en la variable 'M'


y columnas en la variable 'N' de la variable 'img'

Mostrar la variable 'img'

Transformar a escala de grises


la variable 'img' almacenando
dicha transformación en la variable
'BN'.

Almacenar el componente r de la
variable 'img' en la variable 'r'

Mostrar la variable 'r'

Crear la variable 'img_resul'


vacía

3
1

C=0

F=0

NO
F<M

SI
NO
C<N

SI

NO Almacenar y repetir el valor de la matriz


r(F,C)>150 de la variable 'BN' en cada matriz
de la variable 'img_resul'

SI

Almacenar el valor de cada componente


de las tres matrices de la variable 'img'
en la variable 'img_resul'

C=C+1

F=F+1

Mostrar la variable 'img_resul'

FIN

4
CODIGO DE MATLAB
%%
%AUTORES
%Jaen Klaus Vargas Fuentes 20142506F
%Figueroa Condor Alvaro Edgar 20160219E
%Francia Zorrilla Jose Daniel 20160041A

clc, clear, close all


%img=imread('flor.jpg');
img=imread('bola.jpg');
[M,N]=size(img);
N=N/3;
figure(1),imshow(img);

%% A escala de grises
BN=rgb2gray(img);
figure(2),imshow(BN);

%% Algoritmo
r=img;
r(:,:,2)=0;
r(:,:,3)=0;
figure(3),imshow(r);
r=img(:,:,1);
img_resul=img;
img_resul(:,:,1)=0;
img_resul(:,:,2)=0;
img_resul(:,:,3)=0;
for F=1:M
for C=1:N
if r(F,C)>150 %Regula cuán “rojo” es el elemento
img_resul(F,C,1)=img(F,C,1);
img_resul(F,C,2)=img(F,C,2);
img_resul(F,C,3)=img(F,C,3);
else
img_resul(F,C,1)=BN(F,C);
img_resul(F,C,2)=BN(F,C);
img_resul(F,C,3)=BN(F,C);
end
end
end
figure(4),subplot(1,2,1),imshow(img_resul);
figure(4),subplot(1,2,2),imshow(img);

5
RESULTADOS
Imagen original bola.jpg mostrado en la figura 1:

Figura 1.

Imágenes obtenidas al separar las matrices de bola.jpg (imagen


de la izquierda) en su componente “r” para luego ser utilizada como
máscara (imagen de la derecha) en la figura 2.

Figura 2.

6
Resultado del algoritmo usado para mantener el color rojo en la
imagen bola.jpg en la figura 3.

Figura 3.

Para comprobar que funciona en cualquier otra imagen usamos


flor.jpg cambiando la línea de código
“img=imread('bola.jpg');” por
“%img=imread('flor.jpg');” en la figura 4.

Figura 4.

7
COMENTARIOS
En la siguiente línea de código “if r(F,C)>150” si aumentamos o
disminuimos el número 150 en un rango de 0 a 255 se obtiene lo
siguiente mostrado en las figura 5 y 6:

Figura 5. Al utilizar el número 10.

Figura 6. Al utilizar el número 220.

8
CONCLUSIONES
El algoritmo para hallar la mascara de una imagen es sensible al valor
de la desigualdad en el condicional “if” en donde al asignar un
número menor se observa que el algoritmo es muy “estricto” para
seleccionar los pixeles como se observó en la Figura 6 y en el caso
contrario, al asignar un número mayor en el condicional, el algoritmo
no cumple con su objetivo eficazmente como se observó en la Figura
5.

Luego de aplicar el algoritmo a la imagen 'bola.jpg' hubo un


pequeño error en la esfera que inicialmente era de color verde
notándose un delgado borde que no se logró filtrar con el algoritmo
aplicado.

Al aplicar la mascará hallada con el algoritmo en la imagen


flor.jpg se logró extraer el color rojo de dicha imagen con una
precisión entre el 90 y 95 % según se observa en la Figura 4.

También podría gustarte