• Viernes 29 de Marzo de 2024, 16:37

Autor Tema:  Reconocedor de imágenes  (Leído 2436 veces)

ManuelZuil

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Reconocedor de imágenes
« en: Lunes 21 de Diciembre de 2009, 12:48 »
0
Hola buenos dias, soy nuevo aqui y les sigo a menudo.

Les voy a contar un pequeño problema que tengo:

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...)

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.

Otra opcion que he pensado es igualando a 0 tanto el plano azul como el verde, por lo cual este codigo no serviria de nada, pero querria saber si a partir del plano rojo podria sacar algun tipo de nivel como para decir, de un valor "x" hacia arriba, la imagen es navaja, de ahi hacia abajo, es otra cosa...

   
Citar
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 si alguien responde. Saludos.