Ayuda a Ingenieros e Informaticos de WAF...
3 participantes
Página 1 de 1.
Ayuda a Ingenieros e Informaticos de WAF...
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.
Muchas gracias HOYGAN.
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.
Invitado- Invitado
Re: Ayuda a Ingenieros e Informaticos de WAF...
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- En el quinteto titular
-
Cantidad de envíos : 2517
Edad : 49
Localización : Barcelona
Empleo /Ocios : Informática
Fecha de inscripción : 29/02/2008
Re: Ayuda a Ingenieros e Informaticos de WAF...
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- Sexto Hombre
-
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
Re: Ayuda a Ingenieros e Informaticos de WAF...
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....
Invitado- Invitado
Re: Ayuda a Ingenieros e Informaticos de WAF...
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...
Invitado- Invitado
Re: Ayuda a Ingenieros e Informaticos de WAF...
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- En el quinteto titular
-
Cantidad de envíos : 2517
Edad : 49
Localización : Barcelona
Empleo /Ocios : Informática
Fecha de inscripción : 29/02/2008
Re: Ayuda a Ingenieros e Informaticos de WAF...
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.
Invitado- Invitado
Re: Ayuda a Ingenieros e Informaticos de WAF...
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í ) 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)
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- En el quinteto titular
-
Cantidad de envíos : 2517
Edad : 49
Localización : Barcelona
Empleo /Ocios : Informática
Fecha de inscripción : 29/02/2008
Re: Ayuda a Ingenieros e Informaticos de WAF...
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í ) 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)
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
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.
Invitado- Invitado
Re: Ayuda a Ingenieros e Informaticos de WAF...
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.
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.
Jaime- Sexto Hombre
- Cantidad de envíos : 2423
Localización : Santiago de Compostela
Empleo /Ocios : curiosos
Fecha de inscripción : 03/03/2008
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
Vie 25 Mayo 2012, 23:34 por rob
» Hola y adiós, soy el juez.
Vie 25 Mayo 2012, 23:33 por rob
» Family
Jue 17 Mayo 2012, 00:49 por Albertini
» Shaquille O'Neal se retira.
Jue 08 Mar 2012, 12:43 por auchinlenk
» el foro... ya es historia
Vie 02 Mar 2012, 17:09 por rob
» felicidades, Kaki
Vie 17 Feb 2012, 15:20 por rob
» el equipo de mi pueblo
Miér 01 Feb 2012, 19:12 por rob
» Manel Comas, ponte bueno.
Dom 22 Ene 2012, 22:30 por rob
» el partido de la jornada
Lun 09 Ene 2012, 23:01 por rob