Matlab - Reconocimiento faros de un auto

 
Vista:

Reconocimiento faros de un auto

Publicado por Jonathan Raul  (4 intervenciones) el 09/12/2008 04:42:35
Hola.

Desearia por favor me ayuden, estoy tratando de reconocer si los faros de un auto se encuentran encendidos, son fotografias de autos tomados en una avenida.

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

RE:Reconocimiento faros de un auto

Publicado por LuisDa (9 intervenciones) el 09/12/2008 10:20:13
Una vez que tu programa reconozca los faros de los coches, deberás ver si el nivel de brillo supera un umbral o no. Como en ese sentido es más bien digital, si lo supera notablemente es que están encendidos, si no, apagados.

Si las fotos están en blanco y negro no tienes problema porque operas directamente sobre los niveles de gris (brillo), pero si son en color, tienes que obtener la banda de luminancia (Y, función de R, G y B):

Y = 0.299*R + 0.587*G + 0.114*B;

Y ya operas sobre esa banda. Faro encendido dará valores de Y cercanos al blanco total (si se representan con byte sin signo, como es habitual, serán cercanos a 255). Faro apagado dará valores de Y cercanos a cero. Primero conviertes R, G y B a double, luego aplicas la ecuación y luego conviertes a uint8 la Y obtenida.

Bueno, la cosa se complicaría si la foto estuviera tomada de día, porque los faros de día se ven con un gris muy superior al negro. En ese caso debes estudiar los niveles de gris que tienen los faros apagados y encendidos, y en función de eso fijas el umbral.

Espero haberte sido de ayuda.

Un saludo.

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

RE:Reconocimiento faros de un auto

Publicado por Jonathan Raul  (4 intervenciones) el 12/12/2008 07:13:38
Hola por favor puedes revisar, el codigo ya que no dispongo del matlab, pero tengo que hacer la presentacion de la idea o de una avance.

clear all;
close all;
clc;

I=imread('auto.jpg');

figure(1);imshow(I)

%Necesitamos delimitar nuestra zona de interese de la imagen.
zona = I(1500:2140, 200:1000,:);

%Con esto se convierte a escala de grises?.

figure; imagesc(zona); colormap gray; axis image; grid

histograma = imhist(zona);
figure; plot(histograma); grid

% COmo hago para que si pasa cierto valor del umbra este mueste un mesajito o algo que diga que esta encendido los faros. Gracias.
umbral1 = 120;
pbn = zona<umbral1;
figure; imagesc(pbn); colormap gray; axis image; grid

aca un enlace a una fotod de ejemplo gracias
http://fotosupload.com/mostrar.php?imagen=FuD65619_dsc02105.jpg
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

RE:Reconocimiento faros de un auto

Publicado por LuisDa (9 intervenciones) el 21/12/2008 19:12:48
Hola:

Para convertir de RGB a grises hay una función que es rgb2gray. Yo programé otra que obtiene la banda de luminancia (o imagen en blanco y negro) de este modo:

function [Y] = luminancia(imagen)

R = double(imagen(:,:,1));
G = double(imagen(:,:,2));
B = double(imagen(:,:,3));

Y = uint8(0.3*R + 0.59*G + 0.11*B);

La conversión a uint8 es para poderla visualizar. Para poder operar con ella necesitas tenerla en double (ahí basta con que omitas el uint8 y lo llames desde fuera de la función si necesitas ver la imagen).

Con respecto a lo del umbral, selecciona la región del faro y saca el histograma de esa región (esto es, esa región como una subimagen), obtenlo para faros encendidos y apagados. El histograma debería estar bastante centrado en torno a un nivel concreto de gris y tener poca desviación típica. Una vez obtenidos los histogramas con los faros encendidos y con los faros apagados, fijas el umbral como la media de los valores medios de dichos histogramas (que deberían estar suficientemente separados). Posteriormente promedias el nivel de gris de la región del faro: si ese promedio te sale superior al umbral, está encendido. Si inferior, apagado.

Esto no lo he probado, pero es como se me ocurre que podrías implementarlo.

Mucha suerte y feliz Navidad.

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