1 4.- Análisis de Blobs IntroducciónPasos para realizar el análisis de blobs Parámetros Características Tamaño Forma Localización Reconstrucción Aplicación simple Curso de Visión Artificial con MIL
2 Introducción al análisis de blobsRegión conectada de pixels (objeto) Caracterísica: fondo (background) blob (foreground) Información: El análisis de blobs nos permite saber las características de los objetos de interés, y eliminar objetos no deseados. Curso de Visión Artificial con MIL
3 Análisis de blobs y MIL La librería MIL contiene un módulo deanálisis de blobs que: Contiene un elemento de control del análisis de blobs: BlobResult Permite la extracción de gran número de características, utilizando el elemento: Feature List El módulo de análisis de blobs identifica cada blob de forma independiente, y puede trabajar con buffers de 1, 8 y 16 bits. El análisis se basa en la realización de una secuencia determinada de pasos. Curso de Visión Artificial con MIL
4 Pasos para realizar el análisis de blobs1. Adquisición (lectura) de la imagen. [Prep.] 2. Binarización. [Prep.] 3. Crear lista de resultados BlobResult 4. Establecer los parámetros del análisis. MblobAllocResult () MIL_ID SystemId Id. del sistema MIL_ID* BlobResIdPtr Lista de resultados MblobControl () MIL_ID BlobResId Id. de la lista de resultados long ProcMode Modo de procesamiento double Value Valor asociado Curso de Visión Artificial con MIL
5 Pasos para realizar el análisis de blobs5. Crear la lista de características, FeatureList 6. Selección de características 7. Cálcular resultados MblobAllocFeatureList () MIL_ID SystemId Id. del sistema MIL_ID* FeatureListIdPtr Lista de características MblobSelectFeature () MIL_ID FeatureListId Id. de la lista de carac. long Feature Característica seleccionada MblobCalculate () MIL_ID BlobIdentImageId Imagen a analizar MIL_ID GrayImageId Imagen a analizar (grises) MIL_ID FeatureListId Id. de la lista de carac. MIL_ID BlobResultId Id. de la lista de resultados Curso de Visión Artificial con MIL
6 Pasos para realizar el análisis de blobs8. Seleccionar blobs según características 9. Obtener resultados MblobSelect () MIL_ID BlobResId Id. de la lista de resultados long Operation Operación (incluir, excluir,...) long Feature Característica utilizada long Condition Condición para la selección double CondLow Valor bajo para la condición double CondHigh Valor alto para la condición MblobSelectMoment(), MblobSelectFeret(). Obtener número de blobs (seleccionados) MblobGetNumber () MIL_ID BlobResId Id. de la lista de resultados long* VarPtr Variable de usuario Curso de Visión Artificial con MIL
7 Pasos para realizar el análisis de blobs9. Obtener resultados (continuación...) Obtener valores de características (seleccionados) MblobGetResult () MIL_ID BlobResId Id. de la lista de resultados long Feature Característica a recuperar void* TargetArrayPtr Ap. a una lista de carac. Obtener la etiqueta de 1 blob MblobGetLabel () MIL_ID BlobResId Id. de la lista de resultados long XPos Coordenada X del blob long YPos Coordenada Y del blob void* LabelVarPtr Variable de usuario Curso de Visión Artificial con MIL
8 Pasos para realizar el análisis de blobs9. Obtener resultados (continuación...) Obtener valores de características de 1 blob MblobGetResultSingle () MIL_ID BlobResId Id. de la lista de resultados long LabelVal Etiqueta del blob long Feature Característica a recuperar void* TargetArrayPtr Ap. a una lista de carac. Obtener la codificación del recorrido de 1 blob MblobGetRuns () MIL_ID BlobResId Id. de la lista de resultados long LabelVal Etiqueta del blob long ArrayType Tipo de datos del array de runs void* RunXPtr Lista de coordenadas X void* RunYPtr Lista de coordenadas Y void* RunLengthPtr Lista de tamaño de cada run Curso de Visión Artificial con MIL
9 Ejemplo // Imagen: bolts.mim// Objetivo: determinar el número de objetos de la imagen y marcar // su centro de gravedad // Crear lista de resultados y lista de características MblobAllocResult(MilSystem, &BlobResult); MblobAllocFeatureList(MilSystem, &FeatureList); // Seleccionar característica MblobSelectFeature(FeatureList, M_AREA); MblobCalculate(BinImage, M_NULL, FeatureList, BlobResult); // Excluir blobs pequeños MblobSelect(BlobResult, M_EXCLUDE, M_AREA, M_LESS_OR_EQUAL, MIN_BLOB_AREA, M_NULL); // Leer número de blobs MblobGetNumber(BlobResult, &TotalBlobs); // Seleccionar centro de gravedad y cálcular nuevas características MblobSelectFeature(FeatureList, M_CENTER_OF_GRAVITY); MblobGetResult(BlobResult, M_CENTER_OF_GRAVITY_X+ M_TYPE_LONG, CogX); MblobGetResult(BlobResult, M_CENTER_OF_GRAVITY_Y+ M_TYPE_LONG, CogY); // Liberar elementos MblobFree(BlobResult); MblobFree(FeatureList); Curso de Visión Artificial con MIL
10 Parámetros del análisis de blobsPara la correcta interpretación de la definición de blob han de establecerse un conjunto de parámetros con la función MblobControl. Curso de Visión Artificial con MIL
11 Parámetros del análisis de blobsLa Conectividad define el vecindario de 1 pixel,y por tanto, un blob. Conectividad a 4 M_4_CONNECTED Conectividad a 8 M_8_CONNECTED 1 blob (c8) 2 blobs (c4) Curso de Visión Artificial con MIL
12 Parámetros del análisis de blobsEl pixel aspect ratio se utiliza para realizar medidas precisas. Podemos ajustar la imagen con MimResize() o modificar el pixel aspect ratio. La manera de conocer el pixel aspect ratio del dispositivo de adquisición es: Adquirir una imagen de un círculo. Extraer las caracteísticas M_FERET_Y M_FERET_X, con par=1.0 Curso de Visión Artificial con MIL
13 Características El módulo de análisis de blobs de las MIL,nos permite extraer las siguientes características: Área y perímetro. Dimensiones. Forma. Localización. Momentos. Estadísticas. Para ello debemos seleccionar la caracterís- tica a extraer con la función: MblobSelectFeature() Curso de Visión Artificial con MIL
14 Unidad de medida: el pixelCada pixel de una imagen representa una medida real que puede estar en cualquier unidad (mm, cm, ...). Sin embargo, en una imagen, sólo tenemos una unidad de medida: el pixel. Convención: 1 P 1 1 1 Las medidas que realicemos sobre la imagen las expresaremos por tanto en pixels. Un proceso posterior (calibración) sería saber a lo que equivale un pixel en el “mundo”. Curso de Visión Artificial con MIL
15 Área y Perímetro El área de un blob es el número de pixelsque pertenecen al blob. Mil M_AREA El perímetro es el número de “caras de pixel” a lo largo del contorno del blob (incluído los agujeros). La distancia de los pixels en diagonal se toman como Mil M_PERIMETER 1 1 1 1 1 1 Área = 10 Perímetro = 14.2 1 1.414 1 1.414 1 1.414 1 Curso de Visión Artificial con MIL
16 Dimensiones Además del área y el perímetro, es necesarioencontrar las dimensiones de los blobs. Debido a que los blobs normalmente tienen formas irregulares, se utilizan como medidas de la dimensión los diámetros de Feret. Un diámetro de Feret es el tamaño del blob en una dirección determinada: Curso de Visión Artificial con MIL
17 q= 0o q= 22,5o M_FERET_X q= 45o q= 67,5o F=5,93 F=6,15 F=5,45 F=6,09Curso de Visión Artificial con MIL
18 q= 90o q= 112,5o M_FERET_Y q= 135o q= 157,5o F=3,99 F=3,35 F=4,27Curso de Visión Artificial con MIL
19 M_FERET_MAX_DIAMETER 6,15 M_FERET_MIN_DIAMETER 3,35 M_FERET_X (0o) 5,93 M_FERET_Y (90o) 3,99 M_FERET_MAX_DIAMETER 6,15 M_FERET_MIN_DIAMETER 3,35 M_FERET_MEAN_DIAMETER 5,05 M_FERET_MAX_ANGLE 22,5o M_FERET_MIN_ ANGLE 122,5o M_FERET_ELONGATION 5,05/3,35=1.54 Curso de Visión Artificial con MIL
20 Curso de Visión Artificial con MIL2.2 mm Curso de Visión Artificial con MIL
21 Bona Que valores han de tenerM_FERET_MAX_DIAMETER M_FERET_MIN_DIAMETER Para dar la pieza como correcta? Curso de Visión Artificial con MIL
22 Diámetros de Feret Para calcular los diámetros de Feret con las MIL:MblobSelectFeature () MIL_ID FeatureListId Id. de la lista de carac. long Feature Característica seleccionada M_FERET_X M_FERET_Y También es posible calcular los diámetros máximo, mínimo y medio: M_FERET_MAX_DIAMETER M_FERET_MIN_DIAMETER M_FERET_MEAN_DIAMETER Curso de Visión Artificial con MIL
23 Diámetros de Feret (II)Para saber en qué ángulos ha encontrado el diámetro máximo y mínimo: Mil M_FERET_MAX_ANGLE M_FERET_MIN_ ANGLE Por último, como carectirística de forma del objeto, podemos conocer la relación diámetro_max/ diámetro_ min (elongación): Mil M_FERET_ELONGATION Aplicación: Cálculo de la orientación y las medidas del objeto de la figura “bellut3.tif” (Aplicar corrección del ángulo). Curso de Visión Artificial con MIL
24 Diámetros de Feret (III)Para calcular los diámetros de Feret para un ángulo determinado con las MIL: MblobSelectFeret() MIL_ID Feature List double Angle Esto añade M_GENERAL_FERET a la lista de características Para realizar la lectura de este valor lo haremos mediante MblobGetResult() Curso de Visión Artificial con MIL
25 Diámetros de Feret (IV)Para cambiar el numero de ángulos para calcular los diámetros utilizar MblobControl. Curso de Visión Artificial con MIL
26 Forma Una región es convexa cuando podemosconectar cualquier pareja de pixels con una línea recta y esta queda completamente contenida dentro de la región: Podemos realizar medidas de la convexidad de un blob basándonos en el perímetro convexo: Curso de Visión Artificial con MIL
27 Forma (II) Cálculo del perímetro convexo: Mil M_CONVEX_PERIMETERLa medida que se utiliza para medir la convexidad de una forma es: Roughness Mil M_ROUGHNESS Otra medida util de forma es: Compactness Mil M_COMPACTNESS Curso de Visión Artificial con MIL
28 Localización Una característica importante es conocerla localización del blob en la imagen: Añade todos Mil M_BOX M_CONTACT_BOX M_CENTER_OF_GRAVITY Curso de Visión Artificial con MIL
29 Momentos Los momentos nos dan información de localización y de forma.Su momento geométrico de orden p + q se define como: Número de momentos de orden p + q: p + q + 1 Número total de momentos hasta orden p + q: (p + q + 1)(p + q + 2)=2 Curso de Visión Artificial con MIL
30 Momentos de Orden 0 y 1 Los momentos de orden 0 y 1 tienen unainterpretación intuitivamente clara. Si tenemos una imagen binaria, sólo sumamos los píxeles negros. Entonces: En general: m0,0 es la “masa” (de gris) de la imagen m01/m00; m10/m00 son las coordenadas de su “centro de masa” Curso de Visión Artificial con MIL
31 Momentos Centrales Los Momentos Centrales de una imagen son sus Momentos Geométricos calculados tomando como origen de coordenadas su centro de masa: PROPIEDADES: m00 = N: masa o número de píxeles negros m10 =m01 = 0: centro de masa en el origen (0; 0) Mpq, p,q = 0; 1; 2; : invariantes a la traslación, Curso de Visión Artificial con MIL
32 Momentos Centrales de Orden 2Los momentos de orden p + q = 2 determinan la orientación del eje de mínima inercia. Ejemplo Curso de Visión Artificial con MIL
33 Propiedades de los mpq de orden 2Los valores de m20, m11, m02 definen un área elíptica que se “ajusta” lo mejor posible al blob. Los ejes de esta elipse caracterizan la “orientación” q: M _AXIS _PRINCIPAL_ANGLE M _AXIS _SECONDARY_ANGLE (perpendicular) Curso de Visión Artificial con MIL
34 Curso de Visión Artificial con MIL
35 Ejemplos Universidad Politécnica de Valencia Enrique Vidal RuizCurso de Visión Artificial con MIL
36 Momentos (MIL) En el módulo de blobs podemos calcular:M _AXIS _PRINCIPAL_ANGLE M _AXIS _SECONDARY_ANGLE M_MOMENT_X0_Y1 M_MOMENT_X1_Y0 M_MOMENT_X1_Y1 M_MOMENT_X0_Y2 M_MOMENT_X2_Y0 M_MOMENT_CENTRAL_X0_Y2 M_MOMENT_CENTRAL_X2_Y0 M_MOMENT_CENTRAL_X1_Y1 M_GENERAL_MOMENT + MblobSelectMoment () MIL_ID FeatureListId Id. de la lista de carac. long MomType Tipo de momento (Normal/ Central) long XMomOrder Orden del momento en X long YMomOrder Orden del momento en Y Curso de Visión Artificial con MIL
37 Estadísticas Suma de los valores de los pixels: Mil M_SUM_PIXELValor máximo y mínimo: Mil M_MAX_PIXEL M_MIN_PIXEL Media: Mil M_MEAN_PIXEL Sigma: Mil M_SIGMA_PIXEL Curso de Visión Artificial con MIL
38 Reconstrucción Por último, es importante conocer, quepodemos utilizar el análisis de blobs para obtener una nueva imagen: Ejemplos: Etiquetar los blobs Reconstruir los blobs a partir de una semilla. Eliminar los blobs que tocan los extremos de la imagen. Rellenar los agujeros de los blobs. Extraer los agujeros de los blobs. Curso de Visión Artificial con MIL
39 Reconstrucción MIL MblobLabel () MIL_ID BlobResId Lista de resultadosMIL_ID DestImageBufId Imagen destino long Mode Modo de escritura. MblobReconstruct () MIL_ID SourceImageBufId Imagen de entrada MIL_ID SeedImageBufId Imagen semilla MIL_ID DestImageBufId Imagen destino long Operation Tipo de operación long ProcMode Modo de operación MblobFill () MIL_ID BlobResId Lista de resultados MIL_ID DestImageBufId Imagen destino long Criteriun Criterio de rellenado long Value Valor de rellenado Curso de Visión Artificial con MIL
40 Ejemplo: Histeresis Curso de Visión Artificial con MIL