You are on page 1of 16

DETECCIN CARA - MATLAB CDIGO

Vamos a ver la forma de detectar la cara, la nariz, la boca y los ojos utilizando el MATLAB clase incorporada y funcin. Sobre la base de Viola-Jones algoritmo de deteccin de rostros, la caja de herramientas del sistema de visin por computador contiene Sistema vision.CascadeObjectDetector objeto que detecta objetos basados en el algoritmo antes mencionado. Requisito: Visin por computador System Toolbox

CARA DE DETECCIN:
borrar todo clc % Detectar objetos usando Viola-Jones Algoritmo % Para detectar Face FDetect = vision.CascadeObjectDetector; % Lee la imagen de entrada I = imread ( 'HarryPotter.jpg' ); % Devuelve valores Cuadro delimitador basados en el nmero de objetos BB = paso (FDetect, I); figura, imshow (I); mantenga el para i = 1: tamao (BB, 1) rectngulo ( 'Position' , BB (i, :), 'LineWidth' , 5, 'LineStyle' , '-' , 'EdgeColor' , 'r' ); final ttulo ( 'Deteccin de caras' ); mantener fuera ;

El paso (Detector, I) devuelve el valor de cuadro delimitador que contiene [x, y, alto, ancho] de los objetos de inters. = BB 52 38 73 73 379 84 71 71 198 57 72 72

NARIZ DE DETECCIN:
% Para detectar la nariz NoseDetect = vision.CascadeObjectDetector ( 'nariz' , 'MergeThreshold' , 16);

BB = paso (NoseDetect, I);

figura, imshow (I); mantenga el para i = 1: tamao (BB, 1) rectngulo ( 'Position' , BB (i, :), 'LineWidth' , 4, 'LineStyle' , '-' , 'EdgeColor' , 'b' ); final ttulo ( 'Deteccin Nose' ); mantener fuera ;

EXPLICACIN:

Para denotar el objeto de inters como "nariz", el argumento de "nariz" se pasa.


vision.CascadeObjectDetector ( 'nariz' , 'MergeThreshold' , 16);

La sintaxis predeterminada para la deteccin de la nariz: vision.CascadeObjectDetector ( 'nariz' ); Sobre la base de la imagen de entrada, podemos modificar los valores por defecto de los parmetros pasados a vision.CascaseObjectDetector. Aqu el valor por defecto para ' MergeThreshold 'es 4. Cuando el valor por defecto para ' MergeThreshold se usa ', el resultado no es el correcto. Aqu hay ms de una deteccin en H ermione.

Para evitar la deteccin mltiple alrededor de un objeto, el 'MergeThreshold valor "se puede anular.

BOCA DE DETECCIN:
% Para detectar la boca MouthDetect = vision.CascadeObjectDetector ( 'Boca' , 'MergeThreshold' , 16); BB = paso (MouthDetect, I);

figura, imshow (I); mantenga el para i = 1: tamao (BB, 1) rectngulo ( 'Position' , BB (i, :), 'LineWidth' , 4, 'LineStyle' , '-' ,'EdgeColor' , 'r' ); final ttulo ( 'Deteccin boca " ); mantener fuera ;

OJO DE DETECCIN:
% Para detectar Ojos EyeDetect = vision.CascadeObjectDetector ( 'EyePairBig' ); % Leer la imagen de entrada I = imread ( 'harry_potter.jpg' ); BB = paso (EyeDetect, I);

figura, imshow (I); rectngulo ( 'Position' , BB, 'LineWidth' , 4, 'LineStyle' , '' ,'EdgeColor' , 'b' ); ttulo ( 'Deteccin Eyes' ); Ojos = imcrop (I, BB); figura, imshow (Ojos);

Imagen cosechada

Voy a discutir ms sobre la deteccin de objetos y cmo entrenar detectores para identificar objeto de nuestro inters en mis prximas entradas. Sigue leyendo para obtener actualizaciones. Tambin te recomendamos:
TENIS DE MESA BOLA DE DETECCIN-MATLAB CDIGO:

Calculadora GUI simple en MATLAB Pintar Aplicacin que utiliza el concepto bwlabel
LinkWithin

Al igual que la pgina "PROCESAMIENTO DE IMAGEN" Etiquetas: Sistema de Visin por Computador

Sus reacciones:

12 comentarios:
Rohini Bhargava dijo ... Tengo MATLAB de la versin R2010a que no tiene el sistema de visin por ordenador toolbox.How para detectar los ojos, la boca, la nariz, en ese caso? 16 de septiembre 2013 a las 18:58

Aaron ngel dijo ... @ Rohini Bhargava Necesita instalar 'caja de herramientas de sistema de visin por ordenador'. Para obtener ms informacin, visite http://www.mathworks.in/products/computervision/. 22 de septiembre 2013 en 12:14a.m.

Praga Deesan dijo ... @ AaronAngel_ hi ... estoy haciendo un mini proyecto sobre matlab .... pls que me ayude ... i necesidad de capturar una imagen, reconocer el cliente, mostrar sus nombres. 30 de septiembre 2013 a las 13:32

Mitesh Ochaney dijo ... i hav versin matlab 7. Cmo se realiza el reconocimiento de rostros en eso .. por favor ayuda ..

02 de octubre 2013 a las 14:36

Gul Sayyar Ali dijo ... some0ne puede decirme cmo instalar la caja de herramientas vivsion equipo 04 de octubre 2013 a las 11:00 AM

nishant agrawal dijo ... Estoy haciendo un projct importante en matlab ... PLZ me dicen cmo campare o reconocer la imagen capturada con la imagen almacenada en la base de datos y se mostrar el nombre 16 de octubre 2013 a las 22:43

nishant agrawal dijo ... estoy haciendo mi proyecto importante en matlab .. PLZ me dicen cmo campare o reconocer la imagen capturada con la imagen almacenada en la base de datos y se mostrar el nombre despus de la adaptacin exitosa ... 16 de octubre 2013 a las 22:48

Saxena Hidangmayum dijo ... thnk u mucho .... me preguntaba cmo detectar los rasgos faciales ..... es interesante. 31 de octubre 2013 a las 18:42

pallavi Sharma dijo ... @ nishant agrawal haan ao ye l humein samajh nhe aa tujhe rhe pta chale para responder Zarur karna Yaad s bhoolna estera ..... 07 de noviembre 2013 a las 13:14

^ ^ dijo ...

Estimado amigo cul es su principio en el ur boca y la deteccin de los ojos? 13 de noviembre 2013 a las 15:32

^ ^ dijo ... Estimado amigo Qu teora o principio en su boca y los ojos? Me quieren hacer la investigacin en esta rea gracias ms ^ ^ 13 de noviembre 2013 a las 15:36

mae nak dijo ... cmo separar el ojo izquierdo y el ojo derecho? 14 de noviembre 2013 a las 9:28 AM

Captura y guarda Frames utilizando Webcam Cdigo matlab

clc;% despejar la ventana de comandos n = input ('Introduzca el nmero de fotos que se deben tomar:'); intervel = input ('Introduzca el tiempo (segundos) entre fotos succeessive:'); PhotoSave = input ('Te que desee guardar los archivos (y / n): ',' s '); disp ('Por favor, espere ...'); outputFolder = fullfile (cd, "bastidores"); si ~ existir (outputFolder, 'dir') mkdir (outputFolder); finales obj = videoinput ('WinVideo', 1); vista previa (obj); disp ('Presione Enter para iniciar despus de la inicializacin de la webcam.'); pausa; disp ('El primer disparo se adoptado despus de 1 segundo') ; pause (1); para i = 1: n = img getsnapshot (obj); imagen (img); if (PhotoSave == 'y') outputBaseFileName = sprintf ('fr% d.png', i); outputFullFileName = fullfile (outputFolder, programa haya pasado con xito las fotos ');disp ('Hecho').;

disculpas por retraso, intent que el cdigo puede entender lo que el cultivo no pero conseguir los errores en la salida del reproductor de vdeo (no puede cambiar el tamao de la entrada 1)

clc;% ventana de comando Borrar. claro;% Borrar todas las variables. cerrar todos;% Cierre todas las ventanas de figuras excepto las creadas por imtool. rea de trabajo; % Crear un objeto detector en cascada. Esta ustilises Visin por Computador Herramientas faceDetector = vision.CascadeObjectDetector (); % Leer un fotograma de vdeo y ejecutar el detector de caras. Encuentra procedimiento para interrogar al lado % Fram en directo desde una cmara web. BBOX = cuadro de lmite que se puede utilizar como % Cordinates a imgcrop videoFileReader = vision.VideoFileReader ('tilted_face.avi'); VideoFrame = paso (videoFileReader); BBOX = paso (faceDetector, VideoFrame); % Reduccin de la superficie roi slo a los ojos eyeDetector = vision.CascadeObjectDetector ('EyePairSmall'); faceImage = imcrop (VideoFrame BBOX); eyebbox = paso (eyeDetector, faceImage); % Make relavant a enmarcar para BBOX originales eyebbox (1,1:2) = eyebbox (1,1:2) + BBOX (1,1:2); Imagen% refferrenced de arriba cruzando positiva izquierda y hacia abajo x = eyebbox (1); y = eyebbox (2); W = eyebbox (3); h = eyebbox (4); bboxPolygon = [x, y, x + w, y, x + w, y 2 * h, x, y 2 * h]; eyebbox = [x-1, y-1, eyebbox (3), 2 * (eyebbox (4))]; % Establece eyebbox original a nuevas dimensiones bbobPolygon incluir en esquina % Detectar % Dibuja el cuadro delimitador devuelto alrededor del rostro detectado. todas las pantallas % Puede ser comentado, pero para la licencia de prueba en shapeInserter = vision.ShapeInserter ('Forma', 'Polgonos', 'BorderColor', 'Custom', ... 'CustomBorderColor', [255 255 0]); VideoFrame = paso (shapeInserter, VideoFrame bboxPolygon); figura; imshow (imcrop (VideoFrame (eyebbox))); ttulo ('Eyes detectados'); % Recortar la regin de la imagen que contiene la cara, y detectar la % Puntos de funcin dentro de l. tener esto en algoritmos roi BBOX dividido en ???% Rgb rframe = (:,:, 1); gframe = (:,:, 2); bframe =?????? (:,:, 3); cornerDetector = vision.CornerDetector ('El mtodo', ... 'Valor propio mnimo (Shi y Tomasi)'); puntos = paso (cornerDetector, rgb2gray (imcrop (VideoFrame eyebbox)));% Nombre, Valor BBOX cambiado de eyebox % Las coordenadas de los puntos de caracterstica son con respecto a la recortada % Regin. Tienen que ser traducido de nuevo en la imagen original % Sistema de coordenadas. = puntos dobles (puntos); puntos (:, 1) = puntos (:, 1) + doble (eyebbox (1)); puntos (:, 2) = puntos (:, 2) + doble (eyebbox (2)); % Muestra los puntos detectados. markerInserter = vision.MarkerInserter ('Forma', 'Plus', ... 'BorderColor', 'Blanco'); VideoFrame = paso (markerInserter, VideoFrame puntos); % Figura, imshow (VideoFrame), ttulo ("caractersticas detectadas ');

% Crear un seguidor del punto y habilitar la restriccin de error bidireccional para % Hacerlo ms robusto en presencia de ruido y el desorden. pointTracker = vision.PointTracker ('MaxBidirectionalError', 6); % Inicializar el rastreador con las ubicaciones de los puntos iniciales y la inicial Fotograma de vdeo%. inicializar (pointTracker, dobles (puntos), rgb2gray (VideoFrame)); VideoInfo = info (videoFileReader); videoPlayer1 = vision.VideoPlayer ('Position', ... [100 100 videoInfo.VideoSize (01:02) 30]); geometricTransformEstimator = vision.GeometricTransformEstimator (... 'PixelDistanceThreshold', 4 'Transformar', 'similitud no reflexiva'); % Realizar una copia de los puntos que se utilizar para el clculo de la media geomtrica Transformacin% entre los puntos de la anterior y de los marcos actuales oldPoints = doble (puntos); mientras que ~ isDone (videoFileReader) % Obtener el siguiente marco VideoFrame = paso (videoFileReader); % Seguimiento de los puntos. Tenga en cuenta que algunos puntos se pueden perder. [Puntos, isFound] = paso (pointTracker, rgb2gray (VideoFrame)); visiblePoints = puntos (isFound, :); oldInliers = oldPoints (isFound, :); si ~ IsEmpty (visiblePoints) % Calcula la transformacin geomtrica entre los antiguos puntos % Y los nuevos puntos. [Xform, geometricInlierIdx] = paso (geometricTransformEstimator, ... dobles (oldInliers), dobles (visiblePoints)); % Elimina los valores atpicos visiblePoints = visiblePoints (geometricInlierIdx, :); oldInliers = oldInliers (geometricInlierIdx, :); % Aplicar la transformacin de la caja de contorno boxPoints = [remodelar (bboxPolygon, 2, 4) ', los (4, 1)]; boxPoints = boxPoints * xform; bboxPolygon = Reformar (boxPoints ', 1, Numel (boxPoints)); % Inserte un cuadro de lmite alrededor del objeto rastreado VideoFrame = paso (shapeInserter, VideoFrame bboxPolygon); tempx = bboxPolygon; Tempy = bboxPolygon; tempx (01:02: fin) = [];% extrae los valores de x Tempy (02:02: fin) = [];% extraacts los valores de y % MaxDiffX = rango (tempx); rightColumn = max (tempx); leftcolumn = min (tempx); % MaxDiffY = rango (Tempy); Bottomline = max (Tempy); TOPLINE = min (Tempy); width = (lnea de fondo - Topline + 1);% Altura en pxeles. conmutada stos alrededor y funciona Altura = (rightColumn - leftcolumn + 1); Ancho% en pxeles % Pantalla rastreado puntos VideoFrame = paso (markerInserter, VideoFrame visiblePoints); VideoFrame = (imcrop (VideoFrame [Topline, leftcolumn, anchura, altura])); % Figura, imshow (subimagen), ttulo ("caractersticas detectadas '); % Restablecer los puntos oldPoints = visiblePoints; consignas (pointTracker, oldPoints); final

% Muestra el cuadro de video con anotaciones utilizando el objeto de reproductor de video el paso (videoPlayer1, VideoFrame); % Paso (videoPlayer1, cutvideoFrame); final % Limpie liberacin (videoFileReader); liberar (videoPlayer1); liberacin (geometricTransformEstimator); liberacin (pointTracker);
Daniel el 27 de enero 2013 Enlace

as que estoy detectando los ojos y el dibujo cuadro delimitador alrededor de los ojos y la nariz, que es el rea que estoy interesado pulg Tengo que recortar cada fotograma (de entrada de vdeo / cmara web en vivo) a esta caja para depurar el siguiente nivel de mi cdigo. Porque yo estoy usando la transformacin geomtrica entre los puntos seguidos de un fotograma a otro es posible el uso de estos datos y hacer una transformada inversa en la regin recuadro de delimitacin de inters solamente. Este se enva entonces a un objeto de reproductor de vdeo. lo siento por ser un novato tal, lo que tengo que hacer con los datos despus de esto es la parte principal de la obra que estoy haciendo y puedo entender esa parte es precisamente este seguimiento y de recorte que me est causando el dolor de cabeza. Gracias por vosotros los pacientes y cualquier ayuda es muy apreciada Dan

Deteccin de rostros parte humana usando MATLAB


Publicado por SkHacker , 23 de abril 2013 1943 visitas
humano rostro deteccin matlab

Cdigo de deteccin de rostros Matlab La siguiente exampes matlab muestra cmo implementar la deteccin de rostros en Matlab.

Descarga los cdigos fuente del apego lbp_new

urnas el local de la imagen patrn binario o LBP histograma de una imagen .% J = LBP ( I , R , N , CARTOGRAFA , MODO ) devuelve un local de patrn binario % de imagen codificada o el local de patrn binario histograma de una intensidad % imagen que yo . Los cdigos de LBP se calculan utilizando los puntos de muestreo N en un % circunferencia de radio R y el uso de tabla de asignacin definida por CARTOGRAFA .% Ver el Getmapping funcin para diferentes asignaciones y usar 0 para % sin mapeo . Posibles valores para MODO son % 'h' o 'hist' para obtener un histograma de cdigos LBP % 'nh' para obtener un histograma normalizado % De lo contrario una imagen de cdigo de LBP se volvi .%% J = LBP ( I ) devuelve el original ( bsico ) histograma LBP de la imagen I %% J = LBP ( I , SP , CARTOGRAFA , MODO ) calcula los cdigos LBP utilizando n de muestreo % puntos definidos en ( n * 2 ) matriz SP . Los puntos de muestreo debern % definido en torno a la histograma en ( 8 , 1 ) vecindad % % usando uniforme cdigo de la imagen utilizando los puntos de muestreo en SP % % y no la cartografa . Ahora H2 es igual al histograma % % de de entrada dimensiones de la imagen de entrada . [ YSIZE Cdigo de LBP

cada cdigo de LBP cada cdigo de LBP se computa dentro de un bloque de tamao origen ( 0 , 0 ) en el blockorigy = 1 suelo ( min ( miny , 0 )); origx = 1 - suelo ( min ( descarada , 0 ));% mnimo tamao permitido para la imagen de entrada depende % del radio de la LBP utilizado operador . si ( xsize < bsizex | | ysize < bsizey ) error ( "Demasiado pequea imagen de entrada debe ser de al menos (2 * radio 1) x (2 * Radio 1). ' ); finales % Calcular dx y dy , dx = xsize - bsizex ; dy = ysize - bsizey ;% Llenar la matriz de pxeles central C . C = imagen ( origy : origy + dy , origx : origx + dx ); d_C = doble ( C ); papeleras = 2 ^ vecinos ;% Inicializar la matriz resultado con ceros . resultado = ceros ( dy + 1 , dx + 1 );% Calcular el cdigo LBP imagefor i = 1 : neighborsy = spoints ( i , 1 ) + origy ; x = spoints ( i , 2 ) + origx ;% Calcular pisos , ceils y rondas para la datatypesN = imagen ( ry : ry + dy , rx : rx + dx ); D = N > = C ; ms % interpolacin necesaria , use doble tipo imagesty = y - fy ; tx = x - fx ;% Calcular los pesos de interpolacin . w1 = ( 1 - tx ) * ( 1 - ty ); w2 = tx * ( 1 - ty ); w3 = ( 1 - tx ) * ty ; w4 = tx * ty ;% Compute interpolado pixel matriz de resultados . v = 2 ^ ( i - 1 ); resultado = resultado + v * D ; fines % Aplicar mapeado si lo es definedif histograma si el modo matriz

GetMultiscaleLBP

Histograma LBP % de entrada de imagen : Imagen de la extraccin de caractersticas % BlockSize : el tamao de cada bloque % patternMapping : el mapeo de los patrones LBP % Rs : el radio de multiescala % Sal : los barrios de multiescala % BoundaryFlag : dos tipos de seleccin para lidiar con nargin effectif lmite < 2BlockSize = [ 32 , 32 ]; endif nargin < 3 Rs = [ 4 , 3 , 2 ]; % La radio es desde pequeo para bigendif nargin < 4P = [ 8 , 8 , 8 ]; endif nargin < 5for i = 1 : longitud ( Sal ) patternMapping { i } = Getmapping ( Sal ( i ), 'u2' ); % Obtener mapeo LBP para diferentes radiusesendendfor i = 1 : longitud ( Sal ) patternNum ( i ) = max ( patternMapping { i } ); nargin endif < 6BoundaryFlag = 1 ; % Como el tamao efectivo del mapa LBP es differrent para radios differernt , algunas regiones de contorno podran no proporcionan LBP para radio grande .% BoundaryFlag = 1 para mantener regin lmite , BoundaryFlag = 0 para la eliminacin de lmite mapeo de diferente radiusesfor mapa de gran radio , y

definir el patrn de estos lmites pxeles % como no patrones uniformes para ms Mapa LBP y hacer todos los pxeles como no - uniforme patrn de la central de mapeo para diferentes radios y eliminar regionsfor lmite

Getmapping

% Getmapping devuelve una tabla de asignacin de cdigos de LBP .% MAPEO = Getmapping ( MUESTRAS , MappingType ) devuelve un mapeo para % cdigos LBP en un barrio de muestreo MUESTRAS % puntos . Posibles valores para MappingType son % 'u2' para LBP uniforme % 'ri ' para la rotacin - LBP invariante % 'riu2' de rotacin uniforme - invariante contiene una rotacin - uniforme invariante de los patrones en la LBP resultante leftnumt = suma ( bitget ( BITXOR ( i , j ), 1 : muestras )); % nmero de 1 -> 0 y % 0 -> 1 transiciones % en binario string % x es igual al % el nmero r < rmrm = r ; endendif tmpMap ( rm + 1 ) < 0tmpMap ( rm + 1 ) = Newmax ; Newmax = Newmax + 1 ; endmapping ( i + 1 ) = tmpMap ( rm + 1 ); endendif

distMATChiSquare

% distMATChiSquare calcula la disimilitud entre muestras de entrenamiento y una muestra de ensayo % DV = distMATChiSquare ( tren , prueba ) devuelve el vector distancia entre muestras de entrenamiento y una muestra de prueba .% La entrada de "tren" es un * matriz d , y cada fila de la misma representan uno % muestra de entrenamiento . La "prueba" es un 1 * d

Democode

% Muestra cdigos para cara

PolyU Palmprint

TLDA_single

funcin del Vector Propio = TLDA_single ( A , opciones , Dim )% Una matriz de la imagen , el tamao es m * n * N % N indica el nmero de imgenes y es igual al nmero de clases % m y n tienen el significado fila y columna de la imagen , respectivamente .% Opciones - Struct valor en Matlab . Los campos de opciones % que pueden ser establecidos :% k ---determins cmo construir el Con_A utilizando el correspondiente % imagen , el predeterminado valor es 3 ;% Dim --- La dimensionalidad de la reducida = Gb + (class_mean - GLOBAL_MEAN) ' * ( class_mean GLOBAL_MEAN ); final [ vector propio , Eigenvalue ] = AIE ( inv ( Gw ) * Gb , Dim );

Lame

% de cmo utilizar las demodataoptions codeload . k = 3 ;% predeterminado valueDim = 25 ; % manualmente ajustado de acuerdo a la imagen que utiliz [ Eigenvector ] = TLDA_single ( tr_dat , opciones , Dim ), para i = 1 : 38A (:, :, i ) = tr_dat (:,:, i ) * Eigenvector ; final

construct_image

funcin [ Con_A ] = construct_image ( A , opciones );% A denota la matriz de la imagen , el tamao es m * n * N % N indica el nmero de imgenes % m y n son la fila y la columna de = A;

Archivos Adjuntos

matlab cdigo de deteccin de rostros v1.rar (58.12KB)


descargas: 270

matlab cdigo de deteccin de rostros v2.rar (60.67KB)


descargas: 306

You might also like