matrox imaging library (mil) prácticas de visión artificial 1 introducción a la librería mil...

28
Prácticas de Visión Artificial 1 Matrox Imaging Library (MIL) Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una aplicación MIL Integración de las MIL en VC++ Adquisición de Imágenes

Upload: eliseo-marquina

Post on 23-Jan-2016

245 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

1

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Introducción a la librería MIL

• Matrox Imaging Library (MIL)• Filosofía MIL• Elementos de una aplicación MIL• Integración de las MIL en VC++• Adquisición de Imágenes

Page 2: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

2

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Matrox Imaging Library (MIL)

MIL es una librería modular de tratamientode imágenes.

Características:

• Independiente de HW*

• Permite la adquisición de imágenes

• Módulos:

• Procesamiento de Imágenes• Análisis de Blobs• Reconocimiento de Formas• Reconocimiento de Caracteres• Medidas

• Soporte para varios entornos de Prog.

Page 3: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

3

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Filosofía MIL

La librería MIL utiliza un modo de trabajobasado en la utilización de elementosindependientes.

A partir de la definición de los elementos básicos se realizan el resto de operaciones.

El ciclo de vida de una aplicación MILsería:

• Creación de los elementos básicos

• Creación de elementos adicionales

• Llamadas a funciones de la librería

• Destrucción de los elementos creados

Page 4: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

4

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Arquitectura Software

Aplicación

Análisisde Blobs

PatternMatching

AplicaciónMIL

Sistemas yDisp. Adq.

Datos yVisualiz.

Elementos MIL Básicos

Proc. deImágenes

Medidas

MIL

Driver HWHW

Usuario

Page 5: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

5

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Notación

Las funciones MIL siempre comienzan porla letra M, seguida por letras minúsculas correspondientes al Modulo, y a continuaciónla función que hacen:

MmodFuncion

Modulos:app, blob, buf, dig, disp, gen,

gra,im, meas, ocr, pat, sys.

Funciones Comunes:Alloc, Control, Inquire, Free

Notación Curso:

• MmodFuncion()Tipo Parámetro1 DescripciónTipo Parámetro2 Descripción....

Page 6: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

6

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Elementos de una aplicación MIL

Toda aplicación MIL debe contener lossiguientes elementos básicos:

• La aplicación MIL y• un sistema.

La aplicación MIL crea un entorno que controla la ejecución de las funciones MIL dentro de nuestra aplicación.

Los sistemas son los recursos HW que utilizará nuestra aplicación.

Cada sistema se encarga de gestionar susrecursos, que pueden ser:

• buffers (imágenes).• digitizers (dispositivos de adquisición).• displays (dispositivos de visualización).

Page 7: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

7

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Elementos de una aplicación MIL

Los elementos básicos de una aplicaciónMIL siguen el siguiente esquema:

Aplicación

Sistema 1

Buffer

Sistema 2

Digitizer Display

Page 8: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

8

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Elementos básicos MIL

• MIL_ID

Tipo de datos que se utiliza para todos los elementos MIL (es un nº de identificación).

• MappAlloc ()

long InitFlag Flag de inicialización

MIL_ID *ApplicationIdPtr Valor de retorno(Id. Ap.)

• MappFree ()

MIL_ID ApplicationId Identificador de la App.

• MsysAlloc ()

void *SystemTypePtr Tipo de sistema

long SystemNum Número de sistema

long InitFlag Flag de inicialización

MIL_ID *SystemIdPtr Valor de retorno(Id. Sistema)

• MsysFree ()

MIL_ID SystemId Identificador del sistema

Page 9: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

9

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

• Podemos ver una imagen como una estructura de datos: un array de pixels

• Dimensión del array:Cámara lineal 1D

Cámara B/N 2DCámara color 3x2D

Imágenes

• Tipos de datos:Binarios 1 bit

Enteros (con o sin signo) 8, 16 o 32 bitsReales 32 bits

• Imagen MIL Buffer + M_IMAGE

MbufAlloc1d()MbufAlloc2d()MbufAllocColor()

Page 10: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

10

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Buffers

• MbufAlloc1d ()

MIL_ID SystemId Identificador del sistema

long SizeX Dimensión Y

long DataType Tipo de datos

long Attribute Atributos del Buffer

MIL_ID *BufferIdPtr Valor de retorno(Id.Buffer)

• MbufAlloc2d ()

Igual que MbufAlloc1d() más:

long SizeY Dimensión Y

• MbufAllocColor ()

Igual que MbufAlloc2d() más:

long SizeBand Número de canales

• Atributos:M_IMAGE M_GRAB

M_LUT M_PROCM_STRUCT_ELEMENT M_DISP

M_KERNEL

Page 11: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

11

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Display

La forma de visualizar una imagen esutilizando el elemento display, que controla la visualización de imágenes.

• MdispAlloc ()

MIL_ID SystemId Identificador del sistema

long DispNum Número de display (M_DEVX)

char* DispFormat Formato (“M_DEFAULT”)

long InitFlag Flag de inicialización (M_DEFAULT)

MIL_ID *DisplayIdPtr Valor de retorno(Id.Disp.)

• MdispFree ()

MIL_ID DisplayId Id. del Display

• MdispSelect ()

MIL_ID DisplayId Id. del Display

MIL_ID DisplayId Id. del Buffer (Imagen)

Page 12: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

12

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Dispositivos de Adquisición

Las MIL soportan una amplia variedadde dispositivos de adquisición (cámaras),mediante el elemento digitizer, que controlael proceso de adquisición.

• MdigAlloc ()

MIL_ID SystemId Identificador del sistema

long DigNum Número de dispositivo (M_DEVX)

char* DataFormat Formato (Std. o ficheros .dcf)

long InitFlag Flag de inicialización (M_DEFAULT)

MIL_ID *DigitizerIdPtr Valor de retorno(Id.Dig.)

• MdigFree ()

MIL_ID DigitizerId Id. del Digitizer

• MdigChannel ()

MIL_ID DigitizerId Id. del Digitizer

long Channel Canal de entrada (Depende del frame grabber)

Page 13: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

13

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Inicialización Rápida

Es posible inicializar el entorno con una

sóla función:

•MappAllocDefault ()

long InitFlag Flag de inicialización

MIL_ID *ApplicationIdPtr Aplicación

MIL_ID *SystemIdPtr Sistema

MIL_ID *DisplayIdPtr Display

MIL_ID *DigIdPtr Digitizer

MIL_ID *ImageBufIdPtr Buffer (Imagen)

• MappFreeDefault ()

Con los Id. Colocados en el mismo orden.

Page 14: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

14

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Integración de las MIL en VC++

Desde el punto de vista de código, las MILson un conjunto de Librerías escritas en C.

Por tanto, la mejor forma de aprovechar todo su potencial es utilizar un entorno de programación para C/C++.

Microsoft Visual C++ 5.0

Existen cuatro posibles tipos de aplicación que podemos hacer con las MIL y el VC++

• Cónsola MS DOS.• Diálogo.• Documento/Vista.• Active MIL.

Integración de las MIL en el entorno.

Page 15: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

15

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Integración de las MIL en el entorno.

Includes Tools|Options

Librerías

*.lib

Page 16: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

16

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Aplicación de Cónsola

La aplicación cónsola utiliza una ventanaMS-DOS para ejecutarse, y una ventanaMIL para la visualización.

Page 17: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

17

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Aplicación de Diálogo

Aprovechando que VC++ es un entorno dedesarrollo de aplicaciones para los sistemasoperativos W95, W98 y NT, realizaremosaplicaciones con interficie gráfica.

La más sencilla, es una aplicación que constasólo de una ventana sin menús, a la que se lepueden añadir componentes: un Diálogo.

Para crear una aplicación Diálogo seutiliza la herramienta AppWizard del VC++.

Para llamar a esta herramienta: File|New

Y la opción: Dialog based

Page 18: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

18

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Clases

Cuando se crea una aplicación AppWizardel entorno nos crea el esqueleto de la apli-cación.

Esta será una aplicación C++ basada en lalibrería MFC.

La forma de acceder a el código es con la vista de clases:

Page 19: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

19

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

MIL en aplicaciones Diálogo

La programación en Windows está basadaen la respuesta a eventos. Hemos de conocerlos eventos para llamar a las funciones MIL.

Eventos básicos:

• WM_INITDIALOG OnInitDialog()

Inicialización del entorno MIL.

• WM_DESTROY OnDestroy()

Destrucción del entorno.

Realizar el ejemplo 1 basado en diálogo.

Page 20: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

20

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Visualización Windows

Para Visualizar hemos de modificar losrecursos de nuestra aplicación:

Debemos añadir el componente Bitmap, y modificarsus propiedades:

• Type: bitmap• Activar Center Image• Cambiar nombre: IDC_?

Page 21: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

21

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

MdispSelectWindow

Para poder visualizar una imagen en una ventana, utilizaremos una función quedefine el display en una ventana:

•MdispSelectWindow ()

MIL_ID DisplayId Id. del Display

MIL_ID DisplayId Id. del Buffer (Imagen)

HWND ClientWindowHandle Handle a ventana

¿Cómo acceder a él? ClassWizzard

Page 22: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

22

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Eventos Propios

Si nos interesa controlar el flujo de la aplicación debemos crear nuestros eventos,para ello añadimos controles.

Y enlazamos el código a la respuesta a unevento (ClassWizzard):

void CEj2Dlg::OnDisplay() { MbufClear(MilImage, 0L); MgraColor(M_DEFAULT, 255L); MgraArcFill(M_DEFAULT, MilImage, 256L,

240L, 100L, 100L, 0.0, 360.0); MdispSelectWindow(MilDisplay, MilImage, m_Imagen);}

Page 23: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

23

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Adquisición de Imágenes

De la adquisición de imágenes se encargael módulo digitizer, con las siguientesfunciones:

• MdigGrab ()

MIL_ID DigId Identificador del digitizer

MIL_ID BufferId Buffer donde se guardará la ima.

• MdigGrabContinuous ()

MIL_ID DigId Identificador del digitizer

MIL_ID BufferId Buffer donde se guardará la ima.

• MdigHalt ()

MIL_ID DigId Identificador del digitizer

Adquirir una imagen

Adquirir en contínuo

Parar adquisición (cuando está en contínuo)

Page 24: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

24

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Doble Buffer

A veces es interesante realizar procesomientras se adquiere la siguiente imagen.

Para ello, utilizaremos la técnica del doblebuffer, poniendo el digitizer el modoAsíncrono:

MdigControl(DigId, M_GRAB_MODE,M_ASYNCHRONOUS);

De esta forma, devuelve el control a la aplicación antes de terminar la adquisición.

Si queremos asegurarnos de que se ha proce-sado la imagen antes de adquirir la siguiente:

• MdigGrabWait ()

MIL_ID DigId Identificador del digitizer

long Flag M_GRAB_END, _GRAB_NEXT_FRAME, ...

Page 25: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

25

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Ejemplo de doble buffer

// Reservar dos buffersMbufAlloc2d(..., &MilImage[0]); MbufAlloc2d(..., &MilImage[1]);

// Grabar en el primer bufferMdigGrab(MilDigitizer, MilImage[0]);

// Poner digitizer en modo AsíncronoMdigControl(MilDigitizer, M_GRAB_MODE,

M_ASYNCHRONOUS);

// Procesar un Buffer mientras se adquiere en otrowhile( !kbhit() ) {

// Adq. segunda imagen mientras se procesa la primera MdigGrab(MilDigitizer, MilImage[1]);

// Procesar primera imagen Mim...(..., MilImage[0]);

// Adq. primera imagen mientras se procesa la segunda MdigGrab(MilDigitizer, MilImage[0]);

// Procesar segunda imagen Mim...(..., MilImage[0]); }

Page 26: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

26

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Trabajar con ficheros de imágenes

Si no se dispone de un dispositivo de adqui-sición, podemos trabajar con imágenesguardadas en fichero en alguno de lossiguientes formatos:

• MIM (Formato de imagen MIL)• TIFF• BMP• RAW

También podemos grabar en disco imágenesadquiridas en los formatos anteriormentemencionados.

Para trabajar con ficheros de imágenes utilizaremos funciones del módulo buffer.

Page 27: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

27

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Recuperación de imágenes en disco

• MbufDiskInquire ()

char* FileName Nombre del fichero

long ParamToInquire Parámetro

void* UsersVarPtr Variable de usuario

• MbufImport ()

char* FileName Nombre del fichero

MIL_ID FileFormatId Formato del fichero

long Operation Modo de importación

MIL_ID SystemId Id. del Sistema

MIL_ID* BufferIdPtr Valor de retorno (Id.buffer)

• MbufLoad (FileName, BufId)

• MbufRestore (FileName, SystemId, *BufId)

Pedir información del fichero imagen

Leer de Fichero y guardar en un buffer MIL

Leer de Fichero en Formato MIL

Page 28: Matrox Imaging Library (MIL) Prácticas de Visión Artificial 1 Introducción a la librería MIL Matrox Imaging Library (MIL) Filosofía MIL Elementos de una

Prácticas de Visión Artificial

28

Matr

ox Im

ag

ing

Lib

rary

(M

IL)

Almacenamiento de imágenes a disco

•MbufExport ()

char* FileName Nombre del fichero

MIL_ID FileFormatId Formato del fichero

MIL_ID SrcBufferId Identificador del buffer

• MbufSave (FileName, BufId)

Guardar en Fichero

Guardar en Fichero en Formato MIL

Diálogo Windows de gestión de Ficheros:

static char BASED_CODE szFilter[] = "TIFF Image (*.tif)|*.tif|All Files (*.*)|*.*||"; CFileDialog d( FALSE, "tif", NULL, OFN_HIDEREADONLY |

OFN_OVERWRITEPROMPT, szFilter, NULL );CString nombre;d.m_ofn.lpstrInitialDir= "c:\\";

if (d.DoModal()==IDOK) { nombre = d.GetPathName() ; char FileName[200]; strcpy (FileName, LPCTSTR(nombre)); MbufExport(FileName, M_TIFF, MilImage); }