410 likes | 645 Views
4.- Análisis de Blobs. Introducción Pasos para realizar el análisis de blobs Parámetros Características Tamaño Forma Localización Reconstrucción Aplicación simple. Introducción al análisis de blobs. Blob. Región conectada de pixels (objeto). Caracterísica:. fondo (background). blob
E N D
4.- Análisis de Blobs • Introducción • Pasos 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
Introducción al análisis de blobs Blob Regió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
Análisis de blobs y MIL • La librería MIL contiene un módulo de • aná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
Pasos para realizar el análisis de blobs 1. 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 SystemIdId. del sistema • MIL_ID* BlobResIdPtrLista de resultados • MblobControl () • MIL_ID BlobResIdId. de la lista de resultados • long ProcModeModo de procesamiento • double Value Valor asociado Curso de Visión Artificial con MIL
Pasos para realizar el análisis de blobs 5. Crear la lista de características, FeatureList 6. Selección de características 7. Cálcular resultados • MblobAllocFeatureList () • MIL_ID SystemIdId. del sistema • MIL_ID* FeatureListIdPtrLista de características • MblobSelectFeature () • MIL_ID FeatureListIdId. de la lista de carac. • long FeatureCaracterística seleccionada • MblobCalculate () • MIL_ID BlobIdentImageIdImagen a analizar • MIL_ID GrayImageId Imagen a analizar (grises) • MIL_ID FeatureListIdId. de la lista de carac. • MIL_ID BlobResultIdId. de la lista de resultados Curso de Visión Artificial con MIL
Pasos para realizar el análisis de blobs 8. Seleccionar blobs según características 9. Obtener resultados • MblobSelect () • MIL_ID BlobResIdId. 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 BlobResIdId. de la lista de resultados • long* VarPtr Variable de usuario Curso de Visión Artificial con MIL
Pasos para realizar el análisis de blobs 9. Obtener resultados (continuación...) Obtener valores de características (seleccionados) • MblobGetResult () • MIL_ID BlobResIdId. 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 BlobResIdId. 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
Pasos para realizar el análisis de blobs 9. Obtener resultados (continuación...) Obtener valores de características de 1 blob • MblobGetResultSingle () • MIL_ID BlobResIdId. 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 BlobResIdId. 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
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); MblobCalculate(BinImage, M_NULL, FeatureList, BlobResult); 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
Parámetros del análisis de blobs Para 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
Parámetros del análisis de blobs La Conectividad define el vecindario de 1 pixel,y por tanto, un blob. Conectividad a 8 M_8_CONNECTED Conectividad a 4 M_4_CONNECTED 1 blob (c8) 2 blobs (c4) Curso de Visión Artificial con MIL
Parámetros del análisis de blobs • El 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
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
Unidad de medida: el pixel Cada 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
Área y Perímetro El área de un blob es el número de pixels que 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 1.414. Mil M_PERIMETER 1 1 1 1 1 1 Área = 10 Perímetro = 14.2 1 1.414 1 1.414 1.414 1 1 Curso de Visión Artificial con MIL
Dimensiones Además del área y el perímetro, es necesario encontrar 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
F=6,15 F=5,93 q= 0o q= 22,5o M_FERET_X F=5,45 F=6,09 q= 45o q= 67,5o Curso de Visión Artificial con MIL
F=3,99 F=3,35 q= 90o q= 112,5o M_FERET_Y F=4,27 F=5.22 q= 135o q= 157,5o Curso de Visión Artificial con MIL
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
2.2 mm 2.2 mm Curso de Visión Artificial con MIL
Bona Que valores han de tener M_FERET_MAX_DIAMETER M_FERET_MIN_DIAMETER Para dar la pieza como correcta? Curso de Visión Artificial con MIL
Diámetros de Feret • Para calcular los diámetros de Feret con las • MIL: • MblobSelectFeature () • MIL_ID FeatureListIdId. de la lista de carac. • long FeatureCaracterí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
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
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
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
Forma Una región es convexa cuando podemos conectar 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
Forma (II) Cálculo del perímetro convexo: Mil M_CONVEX_PERIMETER La 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
Localización Una característica importante es conocer la 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
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
Momentos de Orden 0 y 1 Los momentos de orden 0 y 1 tienen una interpretació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
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 latraslación, Curso de Visión Artificial con MIL
Momentos Centrales de Orden 2 Los momentos de orden p + q = 2 determinan la orientación del eje de mínima inercia. Ejemplo Curso de Visión Artificial con MIL
Propiedades de los mpq de orden 2 Los 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
Ejemplos Universidad Politécnica de Valencia Enrique Vidal Ruiz Curso de Visión Artificial con MIL
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 FeatureListIdId. 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
Estadísticas Suma de los valores de los pixels: Mil M_SUM_PIXEL Valor 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
Reconstrucción • Por último, es importante conocer, que • podemos 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
Reconstrucción MIL • MblobLabel () • MIL_ID BlobResIdLista de resultados • MIL_ID DestImageBufId Imagen destino • long ModeModo de escritura. • MblobReconstruct () • MIL_ID SourceImageBufId Imagen de entrada • MIL_ID SeedImageBufId Imagen semilla • MIL_ID DestImageBufId Imagen destino • long OperationTipo de operación • long ProcModeModo de operación • MblobFill () • MIL_ID BlobResIdLista de resultados • MIL_ID DestImageBufId Imagen destino • long CriteriunCriterio de rellenado • long ValueValor de rellenado Curso de Visión Artificial con MIL
Ejemplo: Histeresis Curso de Visión Artificial con MIL