Matlab - Porfavor Ayuda con este codigo! (PDI-Reconocimiento patrones)

 
Vista:
sin imagen de perfil
Val: 15
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Porfavor Ayuda con este codigo! (PDI-Reconocimiento patrones)

Publicado por Erick (9 intervenciones) el 25/09/2018 23:08:51
El ejercicio puntual a realizar es el siguiente.
Dado que una variable q que contiene una imagen monocromática y m contiene una máscara de
3x3, la siguiente rutina permite aplicar un filtro de máscara (m) a la imagen (q):

1
2
3
4
5
6
7
8
9
[alto ancho]= size(z);
for x= 2: alto-1
 for y= 2:ancho-1
 imgn(x,y)= M(1,1)*Q(x-1,y-1) + M(1,2)*Q(x-1,y) + M(1,3)*Q(x-1,y+1) +...
 M(2,1)*Q(x,y-1) + M(2,2)*Q(x,y) + M(2,3)*Q(x,y+1) +...
 M(3,1)*Q(x+1,y-1) + M(3,2)*Q(x+1,y) + M(3,3)*Q(x+1,y+1);
 
 end
end

Tomando como base la rutina anterior, realizar un programa en Matlab que solicite al
usuario el ingreso de una imagen y, adicionalmente, mediante la instrucción menu, permita
elegir la aplicación de filtros pasa bajos y pasa altos de 3x3 o 5x5.
Adicionalmente debe disponerse de la opción de filtros de gradiente y filtro de mediana.
No se permite el uso de instrucciones de filtros de Matlab.
Yo ya tengo las imagenes para las pruebas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Porfavor Ayuda con este codigo! (PDI-Reconocimiento patrones)

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 26/09/2018 00:04:04
Te dejo un poco de ayuda lo probé con una imagen :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[a,b]=uigetfile({'*.png' '*.jpg'});
y=menu('filtros','3x3','5x5');
Q=rgb2gray(imread(fullfile(b,a)));
imgn=[];
[alto,ancho]= size(Q);
switch y
    case 1
        M=randn(3,3);
for x= 2: alto-1
for y= 2:ancho-1
imgn(x,y)= M(1,1)*Q(x-1,y-1) + M(1,2)*Q(x-1,y) + M(1,3)*Q(x-1,y+1) +...
M(2,1)*Q(x,y-1) + M(2,2)*Q(x,y) + M(2,3)*Q(x,y+1) +...
M(3,1)*Q(x+1,y-1) + M(3,2)*Q(x+1,y) + M(3,3)*Q(x+1,y+1);
end
end
    case 2
        M=randn(5,5);
for x= 3: alto-2
for y= 3:ancho-2
  imgn(x,y)=M(1,1)*Q(x+-2,y+-2)+M(1,2)*Q(x+-2,y+-1)+M(1,3)*Q(x+-2,y+0)+M(1,4)*Q(x+-2,y+1)+M(1,5)*Q(x+-2,y+2)+M(2,1)*Q(x+-1,y+-2)+M(2,2)*Q(x+-1,y+-1)+M(2,3)*Q(x+-1,y+0)+M(2,4)*Q(x+-1,y+1)+M(2,5)*Q(x+-1,y+2)+M(3,1)*Q(x+0,y+-2)+M(3,2)*Q(x+0,y+-1)+M(3,3)*Q(x+0,y+0)+M(3,4)*Q(x+0,y+1)+M(3,5)*Q(x+0,y+2)+M(4,1)*Q(x+1,y+-2)+M(4,2)*Q(x+1,y+-1)+M(4,3)*Q(x+1,y+0)+M(4,4)*Q(x+1,y+1)+M(4,5)*Q(x+1,y+2)+M(5,1)*Q(x+2,y+-2)+M(5,2)*Q(x+2,y+-1)+M(5,3)*Q(x+2,y+0)+M(5,4)*Q(x+2,y+1)+M(5,5)*Q(x+2,y+2);
end
end
end
figure
imshowpair(Q,imgn,'montage')





prueba
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Porfavor Ayuda con este codigo! (PDI-Reconocimiento patrones)

Publicado por Erick (9 intervenciones) el 26/09/2018 20:31:00
Muchas gracias por tu ayuda. Pero mira que con las imagenes que probe solo quedan umbralizadas y tengo que aplicarle a la imagen filtro pasa bajo y filtro paso alto de 3x3 y 5x5 y aparte de eso darle opcion tambien de filtro de gradiente y filtro de mediana y que todo vaya en una instruccion menu. Tampoco entendi porque pusiste aleatorio el dato
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Porfavor Ayuda con este codigo! (PDI-Reconocimiento patrones)

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 26/09/2018 21:32:54
lo puse aleatorio por darte un ejemplo , la idea es que te guíes para que tú mismo pruebes y lo adaptes a tu necesidad para el caso de mediana y todo eso son similares solo es que investigues el concepto y modifiques un poco el código, por ejemplo

1
2
3
imgn(x,y)= M(1,1)*Q(x-1,y-1) + M(1,2)*Q(x-1,y) + M(1,3)*Q(x-1,y+1) +...
M(2,1)*Q(x,y-1) + M(2,2)*Q(x,y) + M(2,3)*Q(x,y+1) +...
M(3,1)*Q(x+1,y-1) + M(3,2)*Q(x+1,y) + M(3,3)*Q(x+1,y+1);

para mediana de esta línea de código tendrías que quitar las M y hacer un promedio, lo que quedaría así :

1
2
3
imgn(x,y)= (Q(x-1,y-1) + Q(x-1,y) + Q(x-1,y+1) +...
Q(x,y-1) + Q(x,y) + Q(x,y+1) +...
Q(x+1,y-1) +Q(x+1,y) + Q(x+1,y+1))/9
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Porfavor Ayuda con este codigo! (PDI-Reconocimiento patrones)

Publicado por Erick (9 intervenciones) el 26/09/2018 21:48:41
Entonces en vez de aleatorio seria un dato ente 0 y 255 de la mascara que es M?
Te agradezco por tu ayuda ya estoy investigando esos conceptos por ejemplo para filtro pasa bajo es suavizar la imagen donde aqui se aplica el filtro mediana y para los filtros pasa bajo es para la deteccion de bordes, resaltar las zonas de mayor variabilidad aca se aplica el gradiente con los operadores ya sea de Roberts, Prewit o Sobel.
Estoy mirando es como aplicarlos ya que por ejemplo esa ultima linea de codigo que enviaste seria solo para el filtrado mediana, pero oye estoy mirando y en realidad la mediana no es el promedio. La mediana seria el valor m de un conjunto de datos tal que la mitad de los
datos es mayor que m y la otra mitad es menor. Osea de todos los datos la mediana seria el dato de la mitad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Porfavor Ayuda con este codigo! (PDI-Reconocimiento patrones)

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 26/09/2018 22:11:16
sí en este caso sería el promedio de vecinos, pero puedes aplicar mediana directamente a un vector con el comando median , las máscaras normalmente tienen valores cercanos a 0 por cierto no entre 0 y 255 por ejemplo un gaussiano de 3 por 3 tiene valores de :

0.0113 0.0838 0.0113
0.0838 0.6193 0.0838
0.0113 0.0838 0.0113
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar