procesamiento de imágenes con matlab_arduino

Upload: franklin-jancovick-varon-huertas

Post on 06-Jul-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/17/2019 Procesamiento de imágenes con MATLAB_Arduino

    1/6

    UNIVERSIDAD DE LOS LLANOSINGENIERIA ELECTRONICA

    OPTIMIZACION DE PROCESOS ESTOCASTICOSPROYECTO FINAL DE SEMESTRE

    FRANKLIN JANCOVICK VARON HUERTASJAIME NICOLAS RODRIGUEZ

    MIGUEL ANGEL ROJAS

    VILLAVICENCIO-METADICIEMBRE-2014

  • 8/17/2019 Procesamiento de imágenes con MATLAB_Arduino

    2/6

    UNIVERSIDAD DE LOS LLANOS

    INGENIERÍA ELECTRÓNICAFACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

    OPTIMIZACIÓN DE PROCESOS ESTOCÁSTICOSSEGUIMIENTO DE OBJETOS

    RESUMEN: la temática que abarca el curso deoptimización de procesos estocásticos, competetodo proceso aleatorio, en el cual la variaciónaleatoria se da tanto en la variable de losposibles eventos como en el tiempo que rigelos mismos, es decir puede darse el caso deuna variación de eventos constante y estepuede o no poseer una instancia de variaciónde tiempos distintas a un mismo eventoanterior. Con lo anterior se pretende que el

    estudiante establezca métodos de trabajo , másexactamente de procesamiento de imágenespara lograr el control de un sistema electrónico,que reconozca el entorno con un sensor deimagen (cámara), obtenga la mayor cantidadde información del mismo, la procese y diseñeun algoritmo que emparente un movimientocapaz de seguir el movimiento de algún puntoen específico.

    1 INTRODUCCION

    En la temática del curso se hace hincapié enla visión de la probabilidad y sus métodos de

    cálculo como herramienta para poseer unagarantía en los posibles resultados delfuncionamiento de cualquier sistema, susestados de funcionamiento óptimo, las fallasmás leves, entre otras cosas. Estas herramientasse pretender poner en practica con el diseño deun proyecto a pequeña escala de seguimiento,en el cual como se especificó anteriormente sediseñe todo un sistema que lea la informaciónde su entorno y con un método fijado por elalumno se procese dicha información y seobtenga como conclusión la dirección en laque el objeto se desplaza para su seguimiento.

    El seguimiento se realizara total a razón deun plano, es decir con seguimientobidimensional.

    2 PLANTEAMIENTO

    2.1 OPTENCION DE LA INFORMACION:

    Para la lectura del entorno se hace uso deuna cámara VGA –USB 2.0, con esta sepretende realizar la lectura de la imagen, conla que se visualizara el posible movimiento delobjeto.

    2.2 ELEMENTOS DE PROCESAMIENTOPara el procesamiento, que se realiza entiempo real es necesario dos módulos

    principales, se hace uso del softwareMATLAB_2010, debido a que este softwarepresenta amplia gama de libreríasencargadas del procesamiento de imágenes asícomo otros artilugios matemáticos que nospermiten determinar colores así como un 90%de la información real de la imagen.

     Además de las grandes capacidades deprocesamiento brindadas por MATLAB, seincorporó un módulo de funcionamiento quecompete a una tarjeta de programación

     ARDUINO UNO, esta presenta un ampliagama de funciones, fue considerada óptimapara la implementación a razón de la simplezade sus sentencias.

    Sépase que la tarjeta arruino uno se logracon el uso de archivos reservados (librerías )vincular a MATLAB y este es considerado elbloque principal de funcionamiento.

     Arduino posee soporte de carga capaz deincluirse en la carpeta lib de MATLAB, lo quebrinda a Matlab la capacidad de compilar,ejecutar y cargar pseudocódigo en todo tipo de

    tarjeta perteneciente a el dominio de ARDUINO.

     A su vez se cuenta con un archivo reservadoque se debe cargar en la tarjeta Arduino quebrinda la posibilidad de que la tarjeta se dejecontrolar por MATLAB.

    Sépase que estos archivos de soporte seencuentran en la página de Matworks, con ladenominación de ARDUINO-IO.

    2.3 DESCRIPCION DEL PROCESAMIENTO

    MATLAB:

  • 8/17/2019 Procesamiento de imágenes con MATLAB_Arduino

    3/6

    Sépase que Matlab es un software que trabajaen su mayoría con el uso de matrices, presentaun lenguaje de programación de alto nivel quepertenece al dominio de Matworks.

    Con Matlab se realiza todo lo que sereconoce en el proyecto como proceso RGB, el

    proceso RGB, compete el reconocimiento de unpunto (color) con el procesamiento de la imagen.

    ->en la sección inicial del pseudocódigo seencuentra la inicialización de la imagen entiempo real, se inicia el video entonces paraello tenemos:

    El código del cuadro anterior, representa elinicio de la imagen. Ahora realizamos laconfiguración de la lectura de la imagen:

    Con la sentencia start se inicia la captura delvideo ya configurado.

     Ahora se diseña un ciclo encargado de estar sacando la lectura de la imagen para elprocesamiento necesario, en este caso un while,luego de este se encuentra un serie detransformaciones que se le realizan a la imagenpara detectar el color definido.

    Cuando MATLAB realizar la lectura oprocesamiento de una imagen, dado el modo detrabajo de Matlab este obtiene una matriz de

    cada pixel, cada pixel esta representado por tres valores , o lo que denominamos RGB (red,Green, blue).

    PAUTAS DE RECONOCIMIENTO:Para el reconocimiento se realiza, como se

    especificó anteriormente la transformación de lacaptura del video, la imagen se pasa con eluso de una librería reservada de MATLAB_2012a escala de grises, como se observa acontinuación:

    Imagen:

    Imagen en escala de grises:

    De la imagen en escala de grises se realiza elfiltrado pretendiendo reducir el ruido de laimagen, con el uso de una librería incorporadaen Matlab:

    %de winvideo, numero de

    dispositivo y formato de

    la camara, si no sabes

    usa la

    %funcion imaqtool para

    averiguarlo es YUY o RGB

    vid=videoinput('winvideo',1,'YUY2_352x288');

    %640x480 160x120

    % Se configura las

    opciones de adquision de

    video

    set(vid,

    'FramesPerTrigger', Inf);

    set(vid,

    'ReturnedColorspace',

    'rgb')

    vid.FrameGrabInterval =

    5;

    %framegrabinterval

    significa que tomara cada

    5 frame del stream de

    video adquirida

    %con start(vid) se activa

    la adquisicion, pero

    todavia se toma la

    primera foto

    start(vid)

  • 8/17/2019 Procesamiento de imágenes con MATLAB_Arduino

    4/6

     Ahora se realiza la binarizacion de la imagenfiltrada:

    Este resultado también se obtiene con el usode una sentencia reservada de Matlab, queveremos más adelante en el pseudocódigo.

     Ahora necesitamos evitar los errores, para locual descartamos puntos de color, rojo en estecaso, muy pequeños, menores a 300 pixeles.

    Luego de eliminar posibles puntosinsignificantes que no pertenezcan a el objetoque deseamos seguir, hacemos uso de unainstrucción reservada “regiónprops”, con estapretendemos identificar (procesar ) solo lospixeles rojos, esta brinda la ubicación delpunto especificado, sus características entreotras cosas.

    El pseudocódigo que compete elprocesamiento anterior es el siguiente:

    %%UNIVERSIDAD DE LOS

    LLANOS%%FRANKLIN JANCOVICK

    VARON HUERTAS

    %%INGENIERIA ELECTRONICA

    %%PROCESAMIENTO DE

    IMAGENES

    ros=imread('rosa.jpg');%%

    lectura de una imagen

    %imshow(ros);

    gr=rgb2gray(ros);%%escala

    de grises

    figure;

    %imshow(gr);

    fil= medfilt2(gr, [3

    3]);%%filtrado de la

    imagen

    figure;

    %imshow(fil);

    bi=im2bw(fil);%%binarizac

    ion de la imagen

    %imshow(bi)

    des =

    bwareaopen(bi,300);%%desc

    arte de los puntos

    menores a 300 pixeles

    et = bwlabel(des, 8);%%

    etiquetado de los puntos

    detectados

    imshow(et) %%graficado

    del resultado

    res=regionprops(et,

    'BoundingBox',

    'Centroid'); %%funcion

    qiue arroja la mayor

    canntidad de

    %%informacion de laa

    lectura

  • 8/17/2019 Procesamiento de imágenes con MATLAB_Arduino

    5/6

    SEGUIMIENTO:Para el seguimiento (movimiento), junto con el

     Arduino se hace uso de dos servo motores,estos aportan su cualidad suspicaz de girar aescritura polar, estos motores brinda laposibilidad de realizar un giro entre 0°-180° conla escritura de un angulo entero que seencuentre entre dicho rango, estos motorespresentan tres pines de conexión, dos depolarización y uno de conexión para escriturade dato u orde.

     Ahora dada ya la obtención del movimientodel objeto, se realizan las líneas que permiten eldesplazamiento de la cámara según sea elmovimiento, es decir las líneas encargadas dehacer el giro en los servo motores.

    Como se aprecia en el pseudocódigo, el modocomo se realiza el seguimiento esestableciendo unos pixeles limites, entre loscuales deberá estar el objeto, y dado undesborde por cual sea el sentido, el programaescribirá en los servos un desplazamiento en elsentido del desbordamiento de pixeles delobjeto, hasta tener nuevamente este entre laescala deseada.

    La visualización del montaje se presenta acontinuación:

     Arduino:

    PROBLEMATICAS

    ->como problemáticas iniciales encontramos lalentitud de procesamiento, la ejecución deMatlab, así como su procesamiento de lasimágenes involucra un tiempo significativo, esdecir se presentaba un retardo a la respuesta

    de un evento como el movimiento del objeto.

    %% PARA X--------------

    -----------------------

    if (x170)angulo=180;

    %%minimo NGULO

    end

    serv.servoWrite(9,angulo)

    ;

    end

    if (x>100)

    angulo=angulo-5;

    if(angulo

  • 8/17/2019 Procesamiento de imágenes con MATLAB_Arduino

    6/6

    CONCLUSIONES:

     

    El procesamiento de imágenes conMATLAB requiere una cantidadsignificativa de recursos informáticos,así como tiempo de procesamiento,

    esto podría mejorarse con el empleode un sistemas de procesamiento deposea otro método de identificación,pues el de Matlab es unsignificativamente lento.