| 1Proyectos de Tratamiento de Imágenes

0 8/07/2011

UNIVERSIDAD TECNOLOGICA ISRAEL

NOMBRE Patricio Hidalgo Marcelo Montalvo

FACULTAD Sistemas

TEMA PROYECTO ± CONTROL DE CALIDAD MEDIANTE CAMARA WEB - MATLAB

| 2P t t i t I / / COME P l w b S i w b liz . l l lí t l w b . bié bié l li j l bi l l . j ut b t t p t fi u l GUI. i w ut i bi fi u l h . E t p t . t . ptu p l i i t l ti . S pu p t xt b t i ui pu i ñ t b . lu qu i t l i xi t . x t xt ú l i t f qu qui b l t t t l x l b t ti . IO: z . p bl l l pix l j t lu ió pl l l ll l uí i p z fi u l pix l j ¿P qué i p t IO: i l t ti t fi u t t t z ? COME E p qu j ut u qu l ti it l w b pu . l i tl b p i p t l i l p t l li pli ió ui z t pp j qu .

| 3Proyectos de Tratamiento de Imágenes 0 8/07/2011 .

l GUI p E l ub b t i x i t u pli i fu i l i .to be defined in a future version of MATLAB % handles structure with handles and user data (s ee GUIDATA) handles. qui i t í l ll t . functionPrevio_Callback(hObject. t t l u b liz ió . ul l . El p i p p l h pu t b j lpi l b tó qu li t lp i u liz l h ll l i ifi ió P OGRAMA % --. i z j ut l ó i p COME ARIO.| 4P fi u COME t ió IO t i t l I ll t l liz / l / i ui t . hImage = image( zeros( vidRes(2). l i l b tó qu u i ul u t x l x u ió p ifi l f qu .axes1) %Se llama al eje del realVideo vidRes = get(handles. vidRes(1). b t u b tó .to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) COME ARIO.Executesonbuttonpress in Process.objVideo.objVideo. 'NumberOfBands' ). %Numero de columnas del video1 numero de filas 1 y numerode bandas pixelaje preview(handles.handles). handles) % hObjecthandle to Process (see GCBO) % eventdata reserved .-Cu ú l ó i p ll l bj ti fi l i li l b tó p ió l l fu tifi ió l ll t . 'VideoResolution' ).objVideo = videoinput( 'winvideo' ). fi l GUI l t l b tó h pu t l b P i u liz . axes(handles. S i l l h t l b l t .-S i p p liz l ptu i . l ll bi l i l fi u i ú qui i l i . t i l i l p b t . i E t l x qu t lp i p t ip ió l i h l ll t l x p i i qu t l p t fi u bj t qu l p t izqui . nBands)). i t p ti l . qu b p ll t l .objVideo. Si ui t E t . handles) % hObject handle to Previo (see GCBO) % eventdata reserved . functionProcess_Callback(hObject. guidata(hObject. liz ió P liz t l p it p t fu ió l . eventdata.hImage). E t últi l GUI. eventdata. nBands = get(handles. qu h l u p j h pu pl : i t u li tb x l. qu pu P i p z l w b b l l St i % --.Executes on button press in Previo.

strel( axes(handles. se mostrara esta imagen en el a es 2..I). lavel). COMENTARIO.axes2) imshow(background) COMENTARIO. se encierra la imagen ara tener na tonalidad seg n el rango de disk e se revis alice mejor.100)). en este caso se la a determinado en el a es 1en forma ( a stracta). O servo en mi caso e ara la detecci n de o jetos se a llegado ao tener na escala de grises e celente. Al ad irir la imagen. or tal motivo.sin m estra gráfica. %% DETERMINAR EL NIVEL DE UMBRALIZACION lavel = graythresh(I2). O tenido el ackgro nd.| 5Proyectos de Tratamiento de Imágenes 0 8/07/2011 %% ADQUIRIR IMAGEN I_original = getsnapshot(handles. Esta arte de c digo es im ortante or e se config ra el ackgro nd. En la imagen edo o servar e matla detectara los o jetos. 'disk'. es m y im ortante tener en c enta las condiciones de il minaci n e se tiene ara oder contin ar con el roceso %% ESCALA DE GRISES I = rgb2gray(I_original). intensidad = lavel*255 BW = im2bw(I2. COMENTARIO. . COMENTARIO. %% DETECCION DE OBJETOS I2 = imsubtract(background. el matla reconocerá y detectará c antos o jetos se tiene. background = imclose(I. rimero se reali a na r e a. En mi caso el e me a servido seg n la condici n de il minaci n a sido el valor de 100.objVideo). El nivel de m rali aci n no es necesario mostrarlo.

'Curvature'.BoundingBox. numObjects] = bwlabel(fill. En esta arte de c digo matla reali ara el relleno de la imagen seg n los o jetos y la m rali aci n o tenida. holdon end idxOf100 = find(areas > 7508 & areas < 8536) stats100 = stats(idxOf100) cantidad = cantidad + length(stats100)*1 %imshow(I_original) foridx = 1:length(stats100) h = rectangle('Position'. 'Curvature'. En mi imagen ad irida se ede o servar claramente e reali a el relleno de todos los o jetos ca t rados de la imagen.Area] excentricidad = [stats.'EdgeColor'.8.75 0 0]).'Li neWidth'.'--'). el rimero es e la galleta oreo con la rits son arecidas en tama o or lo e a cada las e amin y colo e en diferentes osiciones ara ir tomando valores de áreas de cada na.4].| 6Proyectos de Tratamiento de Imágenes %% RELLENAR LA FIGURA fill = imfill(BW.2. idxOf25 = find(areas > 6326 & areas < 7211) stats25 = stats(idxOf25) axes(handles.'L ineWidth'.'--').'LineStyle'. 'holes').Eccentricity].4) stats = regionprops(niveles.4]. 'Eccentricity'.stats25(idx). Para la config raci n de los límites de áreas de los o jetos lo reali amos de la sig iente manera: tomamos en c enta dos as ectos im ortantes. Se reali a esto ara y encierres ara los o jetos %% PROCESO ESPECIFICO e matla realice cálc los de eccentricidad.25.'BoundingBox') areas = [stats. %% EXTRACCION DE DATOS [niveles. COMENTARIO. foridx = 1:length(stats25) h=rectangle('Position'.0. cantidad = length(stats25)*0.[0.2.[0.0.stats100(idx). . axes(handles.8. set(h.'Area'.axes3) imshow(fill) 0 8/07/2011 COMENTARIO.BoundingBox.axes4) imshow(I_original) holdon. área COMENTARIO.'LineStyle'.[0.

05 foridx = 1:length(stats5) h = rectangle( 'Position' .num2str(length(stats5))). holdon end idxOf50 = find(areas > 9725 & areas < 11488) stats50 = stats(idxOf50) cantidad = cantidad + length(stats50)*0. 'Curvature' .1 foridx = 1:length(stats10) h = rectangle( 'Position' .5 0]).8.' ='.0.num2str(length(stats1)))) .75 0 0.' ='.75]). cantidad = cantidad + length(stats1)*0.[0. set(h. holdon end idxOf10 = find(areas > 3200 & areas < 3830) stats10 = stats(idxOf10) cantidad = cantidad + length(stats10)*0.BoundingBox. 'Curvature' .[0.'EdgeColor' .| 7P t t i t I / / set(h. 'Lin eWidth'.'EdgeColor' .'EdgeColor' .'--').[0. 'Lin eWidth'. 'String'.edit1. 'Curvature' . strcat('monedas de 50 centavos' .4].stats50(idx)..stats10(idx).'LineStyle' .num2str(cantidad)) aux = strvcat(strcat( 'monedas de 5' .8.'--').num2str(length(stats10))).0.'Line Width'.'='.5 foridx = 1:length(stats50) h = rectangle( 'Position' .2. 'Line Width'.4].'LineStyle' .4].'EdgeColor' .' ='..75 0 0]).'='. set(h. strcat('monedas de 25 centavos' .. .'LineStyle' .[0.4].'EdgeColor' . ..num2str(length(stats25))).75 0 0]).[0.stats5(idx). cantidad = cantidad + length(stats5)*0. strcat('monedas de 1 dolar' .2.BoundingBox.. . holdon end holdoff set(handles. holdon end idxOf1 = find(areas > 3836 & areas < 4524) stats1 = stats(idxOf1) holdon. set(h.8.2. set(h.01 foridx = 1:length(stats1) h = rectangle( 'Position' .stats1(idx). holdon end idxOf5 = find(areas > 4580 & areas < 5613) stats5 = stats(idxOf5) holdon. 'Curvature' .BoundingBox.num2str(length(stats50))).[0.'--').num2str(length(stats100)))..0. strcat('monedas de 10 centavos' ..'--').8.BoundingBox.[0.0.75 0 0]).[0.' ='.75 0...'LineStyle' . .[0.. . strcat('monedas de 1 centavo' .2.

0 8/07/2011 En esta Imagen se puede Observar el diseño final que deseamos mostrar: .| 8Proyectos de Tratamiento de Imágenes 'String'.listbox1.aux) set(handles.

Sign up to vote on this title
UsefulNot useful