
Conteo de objetos y ubicación
Publicado por Alberto (24 intervenciones) el 20/12/2013 20:05:13
Hola buenas, os planteo un problema que estoy teniendo con la creación de un programa dedicado a contar objetos mediante una máscara previa dentro de una imágen. La idea es basándose en la máscara buscar las coincidencias dentro de la imágen y encontrar donde está ese objeto (posición x y).
La máscara sería una nota músical, y la imágen sería una sucesión de notas musicales donde debo encontrar el número de notas iguales a mi máscara y la ubicación.
He intendo la técnica del Matching template mediante el siguiente código:
%% CARGAMOS LA IMÁGEN A TRATAR
B=imread('Area_notas.jpg');
% DETECCIÓN Y RECUENTO DE NOTAS
% NOTAS NEGRAS SIMPLES
J=imread('mascara.jpg'); %máscara de nota negra
c = normxcorr2(J(:,:,1),B(:,:,1));
[max_c, imax] = max(abs(c(:)))
[ypeak, xpeak] = ind2sub(size(c),imax(1));
corr_offset = [(xpeak-size(J,2)) (ypeak-size(J,1))]
figure, imshow(B); hold on;
rectangle('position',[corr_offset(1) corr_offset(2) 44 72],...
'edgecolor','g','linewidth',2);
end
Con este código consigo detectar una nota negra y recuadrarla con un rectángulo verde. Lo que no consigo hacer es continuar buscando más ya que al parecer la técnica busca dentro de la imágen la más parecida. Mi intenció es buscar todas las demás notas... espero haberme explicado.
¿Alguien podría echarme una mano por favor?. Os lo agradezco de antemano.
Gracias
La máscara sería una nota músical, y la imágen sería una sucesión de notas musicales donde debo encontrar el número de notas iguales a mi máscara y la ubicación.
He intendo la técnica del Matching template mediante el siguiente código:
%% CARGAMOS LA IMÁGEN A TRATAR
B=imread('Area_notas.jpg');
% DETECCIÓN Y RECUENTO DE NOTAS
% NOTAS NEGRAS SIMPLES
J=imread('mascara.jpg'); %máscara de nota negra
c = normxcorr2(J(:,:,1),B(:,:,1));
[max_c, imax] = max(abs(c(:)))
[ypeak, xpeak] = ind2sub(size(c),imax(1));
corr_offset = [(xpeak-size(J,2)) (ypeak-size(J,1))]
figure, imshow(B); hold on;
rectangle('position',[corr_offset(1) corr_offset(2) 44 72],...
'edgecolor','g','linewidth',2);
end
Con este código consigo detectar una nota negra y recuadrarla con un rectángulo verde. Lo que no consigo hacer es continuar buscando más ya que al parecer la técnica busca dentro de la imágen la más parecida. Mi intenció es buscar todas las demás notas... espero haberme explicado.
¿Alguien podría echarme una mano por favor?. Os lo agradezco de antemano.
Gracias
Valora esta pregunta


0