Componentes de un sistema de visión |
Existen varios factores que deben considerarse para seleccionar un sistema de visión, se tratan aquí los relativos a la cámara y el monitor: Amplificación primaria: Determina la selección de la cámara, el sensor y la óptica, basado fundamentalmente en la resolución deseada en el campo de visión. Amplificación secundaria: Está directamente relacionada con la relación de píxeles entre el sensor CCD y la pantalla del monitor. La selección de este último no es necesario en algunas aplicaciones, en las que se procesa la imagen generada por la cámara de forma directa.
Instalación de una cámara Para instalar una cámara que forme parte de un sistema de visión se siguen los siguientes pasos, de acuerdo al software de control de la cámara que se pretenda utilizar.
Utilización de los programas que brinda el fabricante [1] Instalar el software del fabricante Se utilizará como ejemplo la cámara Guppy F-046B con una lente de 12mm GM21214MCN: 
la cual puede instalarse y configurarse a través del programa AVT SmartView (el cual incluye el controlador "Vista Signed 1394 driver", para acceder a la interfaz IEEE 1394 (FireWire)) que forma parte de grupo de programas AVT FirePackage. Se instala el programa y se verifica en "Administrador de dispositivos" que el correspondiente controlador está instalado, tal y como se muestra a continuación  | |
[2] Ejecutar la aplicación y activar la cámara Las siguientes figuras muestran los pasos que deben ejecutarse 1.-Activar la cámara | 2.-Si existen problemas, verificar: Camera->Settings... y definir las siguientes propiedades | 3.-Debe aparecer la imagen después de activar "play"
|
[3] Ajustar las propiedades de la cámara En este paso se ajusta la velocidad de disparo, las propiedades de las comunicaciones, el brillo, contraste, etc. Para ejecutar lo anterior se ejecuta la secuencia: Camera -> Settings -> Settings dialog... Algunas ventanas para el ajuste de la cámara, que incorpora la aplicación, se muestran a continuación | | | Conexión directa de la cámara a Matlab |
La cámara Guppy F-046B, como lo indican sus características, se conecta al ordenador a través de una interfaz IEEE 1394 (FireWire). Matlab describe en su página Web los pasos para conectar cámaras con la interfaz IEEE 1394. Los pasos a seguir son los siguientes: [1] Descargar e instalar el programa "CMU 1394Camera" (la última versión hasta el presente es el "driver 6.4.4", del 3 de diciembre de 2006, que es la que utilizamos) e instalarlo. El controlador se instala con la cámara desconectada, posteriormente se apaga el ordenador, se conecta la cámara y se inicializa el sistema. En Windows Vista se reconocerá el nuevo hardware. Debe seleccionarse la instalación del controlador CMU 1394. Se debe verificar que en el "Administrador de dispositivos" esté instalado el controlador. Transparencias
[2] Ejecutar el programa "1394Camera Demo" que se ha instalado en el paso anterior. Activar: Camera -> Check link (detecta la cámara). Seleccionar la cámara: Camera -> Select Camera Inicializar la cámara: Camera -> Init Camera Mostrar la imagen: Camera -> Show Camera Las siguientes figuras muestran la secuencia de conexión de la cámara Verificar controladores en "Administrador de dispositivos" | Selección de la cámara | Definición de imágenes a capturar por segundo | Imagen adquirida |
Adquisición de imágenes desde el espacio de trabajo La cámara puede controlarse directamente desde el espacio de trabajo de Matlab, un ejemplo de sesión se muestra a continuación % Obtener información de los drivers instalados: >> imaqhwinfo ans = InstalledAdaptors: {'coreco' 'dcam' 'demo' 'winvideo'} MATLABVersion: '7.4 (R2007a)' ToolboxName: 'Image Acquisition Toolbox' ToolboxVersion: '2.1 (R2007a)' % Identificar una cámara conectada: >> imaqhwinfo('dcam') ans = AdaptorDllName: 'C:\Program Files\MATLAB\R2007a\toolbox\imaq\imaqadaptors\win32\mwdcamimaq.dll' AdaptorDllVersion: '2.1 (R2007a)' AdaptorName: 'dcam' DeviceIDs: {[1]} DeviceInfo: [1x1 struct] % Información sobre una cámara conectada: >> dev_info = imaqhwinfo('dcam',1) dev_info = DefaultFormat: 'Y8_640x480' DeviceFileSupported: 0 DeviceName: 'Guppy F046B' DeviceID: 1 ObjectConstructor: 'videoinput('dcam', 1)' SupportedFormats: {'Y8_640x480'} % Se define el objeto fuente de vídeo >> vid = videoinput('dcam',1,'Y8_640x480') Summary of Video Input Object Using 'Guppy F046B'. Acquisition Source(s): input1 is available. Acquisition Parameters: 'input1' is the current selected source. 10 frames per trigger using the selected source. 'Y8_640x480' video data to be logged upon START. Grabbing first of every 1 frame(s). Log data to 'memory' on trigger. Trigger Parameters: 1 'immediate' trigger(s) on START. Status: Waiting for START. 0 frames acquired since starting. 0 frames available for GETDATA. % Se visualiza la imagen >> preview(vid) % Se determinan los parámetros configurables de la cámara (la información que se brinda depende del fabricante y tipo de cámara) >> set(vid) General Settings: DiskLogger FrameGrabInterval FramesPerTrigger LoggingMode: [ {memory} | disk | disk&memory ] Name ROIPosition Tag Timeout UserData Color Space Settings BayerSensorAlignment: [ {grbg} | gbrg | rggb | bggr ] ReturnedColorSpace: [ rgb | {grayscale} | YCbCr | bayer ] Callback Function Settings: ErrorFcn: string -or- function handle -or- cell array FramesAcquiredFcn: string -or- function handle -or- cell array FramesAcquiredFcnCount StartFcn: string -or- function handle -or- cell array StopFcn: string -or- function handle -or- cell array TimerFcn: string -or- function handle -or- cell array TimerPeriod TriggerFcn: string -or- function handle -or- cell array Trigger Settings: TriggerFrameDelay TriggerRepeat Acquisition Sources: SelectedSourceName: [ {input1} ] % Se analizan las opciones disponibles para determinado parámetro de la cámara >> set(vid, 'ReturnedColorSpace') [ rgb | {grayscale} | YCbCr | bayer ] % Se determina el valor actual del parámetro >> get(vid, {'ReturnedColorSpace'}) ans = 'grayscale' % Se altera y verifica el valor actual del parámetro >> set(vid, 'ReturnedColorSpace', 'YCbCr'); >> get(vid, {'ReturnedColorSpace'}) ans = 'YCbCr' % Se adquieren 5 imágenes con 16 bits en escala de grises >> start(vid); >> imagenes_5 = getdata(vid,5,'uint16'); >> delete(vid); % Se visualizan las imágenes adquiridas >> imaqmontage(imagenes_5) % Se adquiere y visualiza una única imagen >> una_imagen = getsnapshot(vid) >> imshow(una_imagen) |
Las características del Image Acquisition Toolbox de Matlab pueden accederse a través de la interfaz gráfica de usuario imaqtool, como se muestra a continuación | |
Adquisición de imágenes desde Simulink Para adquirir imágenes utilizando Simulink se utilizan los bloques "From Video Device" en "Image Acquisition Toolbox" y "To Video Display" en "Sinks" perteneciente a "Video and Image Processing Blockset", tal y como muestra la figura. Se puede alterar los parámetros de la cámara, el formato de adquisición y visualización de las imágenes, el número de imágenes a adquirir, etc. 
Existen otros bloques disponibles en Simulink, como el "To Multimedia File", que permite grabar video en diferentes formatos (WMV, DivX, etc.). El bloque "From Video Device" es especialmente útil para determinar los parámetros que pueden configurarse en la cámara, lo cual puede definirse posteriormente en el espacio de trabajo. Referencias: [1] Matlab: Image Acquisition Toolbox. 2007. [2] Adept Electronic Solutions [3] Allied Vision Technologies |