We Are Family
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Ayuda a Ingenieros e Informaticos de WAF...

3 participantes

Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por Invitado Lun 21 Dic 2009, 11:26

Hola buenas, el rey os solicita ayuda...

Se os comento, tengo que realizar un reconocedor de imagenes en Mat Lab, quicir, meto una imagen y que me diga lo que es (un perro, un balon, un lo que sea...)

El programa con el que se realiza es Mat Lab (es ese programa por narices)

Uno de los grupos de imagenes son navajas suizas, las cuales reconoceremos por su mayoria de color rojo ante el verde o azul, es decir, calculamos el numero de pixeles en el que el rojo es mayor o igual a los otros dos (igual tambien, ya que en el blanco, los niveles de los 3 son 255) y a partir de ahi buscar un porcentaje mediante entrenamiento, a partir del cual decir si es una navaja o no (las otras opciones o son un AK47, o unos cascos de musica(los cuales estan medio hechos con la tx de Hough, que nos da poco indice de bordes)...

El problema es que creo que el codigo esta bien pero no sale, no se el porque.... aqui esta... ponga el porcentaje que ponga de rojo, me sale que no es una navaja.

function x = color(imagen)
imagenValorar = imread(imagen);
imshow(imagenValorar)
navaja = imresize(imagenValorar,[360 360]);
planeR=navaja( :, :,1);% reconoce la intensidad del color rojo en la imagen
planeG=navaja( :, :,2);% reconoce la intensidad del color verde en la imagen
planeB=navaja( :, :,3);% reconoce la intensidad del color azul en la imagen
pixelRojo = (planeR>=planeG)&(planeR>=planeB);
numeroUnos = sum(sum(pixelRojo)); %cuenta todos los pixeles con mayoria de r
%fprintf('Numero pixels rojos: %f ' + numeroUnos);
numeroPixelImagen = 360^2;
porcentajeRojo= pixelRojo/numeroPixelImagen;

if porcentajeRojo > 0.00004
fprintf('La imagen es una navaja');
else
fprintf('La imagen no es una navaja');
end


Muchas gracias HOYGAN.
avatar
Invitado
Invitado


Volver arriba Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Re: Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por pozi Lun 21 Dic 2009, 12:06

Pdoría ayudarte, pero me da mucha pereza lo del MatLab. Si tu problema es con el lenguaje, paso, te va a costar el mismo tiempo a ti que a mi dar con la solución, si tu problema es con el algoritmo o la estrategia para el reconocimiento te echo cable. Por cierto, este que haces es bastante cutre e impensable en un entorno porductivo, pero tal vez sólo se os pide esto.
pozi
pozi
En el quinteto titular
En el quinteto titular

Masculino
Cantidad de envíos : 2517
Edad : 49
Localización : Barcelona
Empleo /Ocios : Informática
Fecha de inscripción : 29/02/2008

Volver arriba Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Re: Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por Kaiser Lun 21 Dic 2009, 12:21

Al final de todo,antes de lo de la imagen no es una navaja no deberias poner la condicion de que no lo sea?
Kaiser
Kaiser
Sexto Hombre
Sexto Hombre

Masculino
Cantidad de envíos : 1899
Edad : 43
Localización : Tenerife
Empleo /Ocios : Salsero soy...hasta la muerte!!
Humor : Depende del día...
Fecha de inscripción : 28/02/2008

Volver arriba Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Re: Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por Invitado Lun 21 Dic 2009, 12:21

pozi escribió:Pdoría ayudarte, pero me da mucha pereza lo del MatLab. Si tu problema es con el lenguaje, paso, te va a costar el mismo tiempo a ti que a mi dar con la solución, si tu problema es con el algoritmo o la estrategia para el reconocimiento te echo cable. Por cierto, este que haces es bastante cutre e impensable en un entorno porductivo, pero tal vez sólo se os pide esto.

Realmente el fallo es facil de ver para alguien que sepa lenguajes de programacion, lo que pasa es que estaba desesperado y no lo encontraba, y uno de mi grupo lo ha visto al minuto de estar aqui delante, vera que el fallo estaba en que dividia una matriz (pixelRojo) entre un numero (numeroPixelImagen)

¿Porque cutre? A mi me piden reconocer 3 grupos de imagenes mediante una unica caracteristica para cada uno de ellos....
avatar
Invitado
Invitado


Volver arriba Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Re: Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por Invitado Lun 21 Dic 2009, 12:22

Kaiser escribió:Al final de todo,antes de lo de la imagen no es una navaja no deberias poner la condicion de que no lo sea?

Esta puesto, es si el porcentaje es mayor que el numero, es navaja... luego el "else" es lo contrario a eso justo...
avatar
Invitado
Invitado


Volver arriba Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Re: Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por pozi Lun 21 Dic 2009, 12:34

King Perry escribió:
pozi escribió:Pdoría ayudarte, pero me da mucha pereza lo del MatLab. Si tu problema es con el lenguaje, paso, te va a costar el mismo tiempo a ti que a mi dar con la solución, si tu problema es con el algoritmo o la estrategia para el reconocimiento te echo cable. Por cierto, este que haces es bastante cutre e impensable en un entorno porductivo, pero tal vez sólo se os pide esto.

Realmente el fallo es facil de ver para alguien que sepa lenguajes de programacion, lo que pasa es que estaba desesperado y no lo encontraba, y uno de mi grupo lo ha visto al minuto de estar aqui delante, vera que el fallo estaba en que dividia una matriz (pixelRojo) entre un numero (numeroPixelImagen)

¿Porque cutre? A mi me piden reconocer 3 grupos de imagenes mediante una unica caracteristica para cada uno de ellos....

Pues no, alguien que sepa de lenguajes de programación orientado a objetos no será capaz de ver el fallo fácilmente.
De la sentencia: pixelRojo = (planeR>=planeG)&(planeR>=planeB); pocos programadores llegarán al conclusión de que pixelRojo es una matriz, lo habitual será pensar que es un booleano o un entero como mucho. MatLab tiene la peculiaridad de trabajar con Matrices (Matrix Laboratory) y por defecto trabaja con matrices.

Está claro que se trata de una práctica de alguna asignatura, no sé de qué asignatura se trata, si algo relacionado con Proceso de Imágenes me parece exageradamente elemental y, evidentemente, si algún día tienes que hacer algo en entornos profesionales y sólo conoces esta estrategia lo vas a tener muy chungo.
pozi
pozi
En el quinteto titular
En el quinteto titular

Masculino
Cantidad de envíos : 2517
Edad : 49
Localización : Barcelona
Empleo /Ocios : Informática
Fecha de inscripción : 29/02/2008

Volver arriba Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Re: Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por Invitado Lun 21 Dic 2009, 13:38

pozi escribió:
King Perry escribió:
pozi escribió:Pdoría ayudarte, pero me da mucha pereza lo del MatLab. Si tu problema es con el lenguaje, paso, te va a costar el mismo tiempo a ti que a mi dar con la solución, si tu problema es con el algoritmo o la estrategia para el reconocimiento te echo cable. Por cierto, este que haces es bastante cutre e impensable en un entorno porductivo, pero tal vez sólo se os pide esto.

Realmente el fallo es facil de ver para alguien que sepa lenguajes de programacion, lo que pasa es que estaba desesperado y no lo encontraba, y uno de mi grupo lo ha visto al minuto de estar aqui delante, vera que el fallo estaba en que dividia una matriz (pixelRojo) entre un numero (numeroPixelImagen)

¿Porque cutre? A mi me piden reconocer 3 grupos de imagenes mediante una unica caracteristica para cada uno de ellos....

Pues no, alguien que sepa de lenguajes de programación orientado a objetos no será capaz de ver el fallo fácilmente.
De la sentencia: pixelRojo = (planeR>=planeG)&(planeR>=planeB); pocos programadores llegarán al conclusión de que pixelRojo es una matriz, lo habitual será pensar que es un booleano o un entero como mucho. MatLab tiene la peculiaridad de trabajar con Matrices (Matrix Laboratory) y por defecto trabaja con matrices.

Está claro que se trata de una práctica de alguna asignatura, no sé de qué asignatura se trata, si algo relacionado con Proceso de Imágenes me parece exageradamente elemental y, evidentemente, si algún día tienes que hacer algo en entornos profesionales y sólo conoces esta estrategia lo vas a tener muy chungo.

Y es lo que es... un booleano, luego tienes que sumar todos los "1" de la matriz resultante y realizar el sumatorio, por eso decia que es algo basico en cualquier lenguaje programador (por lo menos Java, C y Mat Lab de los que tengo conocimientos)

De todas formas, lo de que es algo exageradamente elemental no lo comparto, creo que cuando dije lo que se trata la practica, no entendiste bien. Conozco varias formas de lograr diferenciar imagens, mediante RGB, HSV, por extraccion de bordes o umbrales, transformada de Hough...

Pero aqui solo me piden que saque 1 caracteristica por imagen... y creo que para ser casi autodidacta en Mat Lab, no se me da tan mal...

De todas formas, colgue el post pidiendo una ayuda, no pidiendo que pongan a parir mis conocimientos.
avatar
Invitado
Invitado


Volver arriba Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Re: Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por pozi Lun 21 Dic 2009, 15:12

King Perry escribió:
pozi escribió:
King Perry escribió:
pozi escribió:Pdoría ayudarte, pero me da mucha pereza lo del MatLab. Si tu problema es con el lenguaje, paso, te va a costar el mismo tiempo a ti que a mi dar con la solución, si tu problema es con el algoritmo o la estrategia para el reconocimiento te echo cable. Por cierto, este que haces es bastante cutre e impensable en un entorno porductivo, pero tal vez sólo se os pide esto.

Realmente el fallo es facil de ver para alguien que sepa lenguajes de programacion, lo que pasa es que estaba desesperado y no lo encontraba, y uno de mi grupo lo ha visto al minuto de estar aqui delante, vera que el fallo estaba en que dividia una matriz (pixelRojo) entre un numero (numeroPixelImagen)

¿Porque cutre? A mi me piden reconocer 3 grupos de imagenes mediante una unica caracteristica para cada uno de ellos....

Pues no, alguien que sepa de lenguajes de programación orientado a objetos no será capaz de ver el fallo fácilmente.
De la sentencia: pixelRojo = (planeR>=planeG)&(planeR>=planeB); pocos programadores llegarán al conclusión de que pixelRojo es una matriz, lo habitual será pensar que es un booleano o un entero como mucho. MatLab tiene la peculiaridad de trabajar con Matrices (Matrix Laboratory) y por defecto trabaja con matrices.

Está claro que se trata de una práctica de alguna asignatura, no sé de qué asignatura se trata, si algo relacionado con Proceso de Imágenes me parece exageradamente elemental y, evidentemente, si algún día tienes que hacer algo en entornos profesionales y sólo conoces esta estrategia lo vas a tener muy chungo.

Y es lo que es... un booleano, luego tienes que sumar todos los "1" de la matriz resultante y realizar el sumatorio, por eso decia que es algo basico en cualquier lenguaje programador (por lo menos Java, C y Mat Lab de los que tengo conocimientos)

De todas formas, lo de que es algo exageradamente elemental no lo comparto, creo que cuando dije lo que se trata la practica, no entendiste bien. Conozco varias formas de lograr diferenciar imagens, mediante RGB, HSV, por extraccion de bordes o umbrales, transformada de Hough...

Pero aqui solo me piden que saque 1 caracteristica por imagen... y creo que para ser casi autodidacta en Mat Lab, no se me da tan mal...

De todas formas, colgue el post pidiendo una ayuda, no pidiendo que pongan a parir mis conocimientos.

Vamos a ver hamijo. Intenta hacer lo mimso en C o java, cuelga el código y veremos lo mucho que se parece al código MatLab. En ningún momento he puesto en duda tus conocimentos (o tal vez sí lol! lol! ) sólo que en la mayoría, por no decir todas, de aplicaciones de reconomiento de imagen el histograma de color no acostumbra a utilizarse. Quería poner de manifiesto lo alejado que está el mundo académico del mundo profesional (yo también lo he sufrido, acabas la carreram eres todo un Ingeniero superior y te das cuenta que eres casi tan zote como abri (con cariño) lol! lol! lol! lol! lol! lol!

El histograma de color, este que estás utilizando tú acostumbra a tener muy poca utilidad, existe otro tipo de histograma de color, basado en hacer un blur previo de la imagen y una cuantización de la gama de colores a utilizando 2 o 3 bits sólo para homogeneizar y reducir el número de posibilidades que tiene un poco más de utilidad ya que puede utiilzarse como un filtro para descartar opciones, el histograma de color básico que utilizáis, demasiadas veces da resultados erróneos. Evidentemente, en un problema tan acotado como el tuyo te sirve, pero las palicaciones de reconocimiento de imagen son realmente complejas y sólo en estos últimos años, gracias al incremento de potencia de cálculo de las procesadores y a nuevos algoritmos inteligentes empiexa a ser posible en imágenes con resolución aceptable.

Lo de ser autodidacta en este del desarrollo, es lo que hay, no esperes que nadie te enseñe a programar porque es imposible, sólo las ganas y las horas te llevan a aprender. Hay que tirar de los manuales y la comunidad de desarrolladores y del esfuerzo personal.
pozi
pozi
En el quinteto titular
En el quinteto titular

Masculino
Cantidad de envíos : 2517
Edad : 49
Localización : Barcelona
Empleo /Ocios : Informática
Fecha de inscripción : 29/02/2008

Volver arriba Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Re: Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por Invitado Lun 21 Dic 2009, 19:40

pozi escribió:Vamos a ver hamijo. Intenta hacer lo mimso en C o java, cuelga el código y veremos lo mucho que se parece al código MatLab. En ningún momento he puesto en duda tus conocimentos (o tal vez sí lol! lol! ) sólo que en la mayoría, por no decir todas, de aplicaciones de reconomiento de imagen el histograma de color no acostumbra a utilizarse. Quería poner de manifiesto lo alejado que está el mundo académico del mundo profesional (yo también lo he sufrido, acabas la carreram eres todo un Ingeniero superior y te das cuenta que eres casi tan zote como abri (con cariño) lol! lol! lol! lol! lol! lol!

El histograma de color, este que estás utilizando tú acostumbra a tener muy poca utilidad, existe otro tipo de histograma de color, basado en hacer un blur previo de la imagen y una cuantización de la gama de colores a utilizando 2 o 3 bits sólo para homogeneizar y reducir el número de posibilidades que tiene un poco más de utilidad ya que puede utiilzarse como un filtro para descartar opciones, el histograma de color básico que utilizáis, demasiadas veces da resultados erróneos. Evidentemente, en un problema tan acotado como el tuyo te sirve, pero las palicaciones de reconocimiento de imagen son realmente complejas y sólo en estos últimos años, gracias al incremento de potencia de cálculo de las procesadores y a nuevos algoritmos inteligentes empiexa a ser posible en imágenes con resolución aceptable.

Lo de ser autodidacta en este del desarrollo, es lo que hay, no esperes que nadie te enseñe a programar porque es imposible, sólo las ganas y las horas te llevan a aprender. Hay que tirar de los manuales y la comunidad de desarrolladores y del esfuerzo personal.

Esta claro que es distinto, pero porque Java o C son entornos orientados a otro tipo de cosas, pero una linea del tipo es
pixelRojo = (planeR>=planeG)&(planeR>=planeB); es un booleano aqui y en la China Popular, de eso no creo que haya dudas mas que nada porque el "&" indica "y" en todos los lenguajes en los que al menos tengo algo de idea.

Respecto a usar el histograma de color, estas bastante equivocado, no es lo que pretendo. Voy a tratar de explicarlo bien a ver si me entiendes, porque o yo soy muy torpe explicando o quiza tu sepas menos de lo que piensas Ayuda a Ingenieros e Informaticos de WAF... Lol Ayuda a Ingenieros e Informaticos de WAF... Lol

La historia viene por tener 3 grupos de imagenes (navajas (por su color rojo); cascos de musica (por sus formas redondeadas) y AK47 (por sus formas rectas)). Se tienen que caracterizar todas por UNA unica caracteristica, para luego crear un plano real a partir de las 3 caracteristicas sacadas, en el que cada eje sea una de ellas (en uno el color rojo, en otra las rectas y en otra los circulos)

Como entenderas, no nos piden la perfeccion mas que nada porque las imagenes estan echas a mala leche, para que mediante una caracteristica sea imposible sacar un reconocedor perfecto.

Los cascos seran realizados mediante la transformada de Hough, reconocedor de patronesque nos dara una serie de valores mucho mas bajos en estos que en los otros dos grupos, por su mayoria de formas circulares/elipticas.

Las navajas(en su mayoria rojas, aunque es el grupo que mas fallos dara), usaremos un indice de rojo. Como sabras una imagen RGB es una matriz de 3 dimensiones (ancho y largo del plano de imagen, y otra de informacion de color (rojo=1; verde=2; 3=azul). La idea es quitar todos los pixeles blancos que no hacen mas que dar por saco (al ser RGB iguales a 255) y del resto, sacar el indice de pixeles superiores en la componente roja en el que mas o menos haya un alto indice de acierto y un bajo indice de fallo.

Los AK47 seguramente los hagamos mediante rectas, ya que es la forma mas facil, quiza por tx de Hough (aunque quiza tengamos problemas con las navajas) o ya veremos como.

Espero que mas o menos te haya aclarado el porque de realizarlo asi,y que veas que no es tan facil como a ti te parece...aunque aqui te dejo las imagenes en un link por si te aburres y quieres ver tu una forma mejor de sacar que es cada cosa.

http://www.vision.caltech.edu/Image_Datasets/Caltech256/images/

Son los grupos de imagenes 1 (AK); 208 (navajas) y 101 (cascos). Los grupos fueron dados de manera aleatoria, si no habriamos elegido otros.
avatar
Invitado
Invitado


Volver arriba Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Re: Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por Jaime Lun 21 Dic 2009, 20:19

Seguro que sí. Mujeres en bolas a las que catalogariais por el tamaño de su nariz.

El problema no es es. Es que has escogido la matriz en el momento en el que se produce la hemorragia mestrual y claro, eso lo distorsiona casi todo.
avatar
Jaime
Sexto Hombre
Sexto Hombre

Cantidad de envíos : 2423
Localización : Santiago de Compostela
Empleo /Ocios : curiosos
Fecha de inscripción : 03/03/2008

Volver arriba Ir abajo

Ayuda a Ingenieros e Informaticos de WAF... Empty Re: Ayuda a Ingenieros e Informaticos de WAF...

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.