260 likes | 448 Views
Análisis de Imágenes Binarias. Introducción Pasos Parámetros Características Tamaño Forma Localización Reconstrucción Aplicación simple. Introducción. Blob. Región conectada de pixels (objeto). Caracterísica:. fondo (background). blob (foreground). Información:
E N D
Análisis de Imágenes Binarias • Introducción • Pasos • Parámetros • Características • Tamaño • Forma • Localización • Reconstrucción • Aplicación simple Prácticas de Visión Artificial
Introducción 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. Prácticas de Visión Artificial
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. Prácticas de Visión Artificial
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 Prácticas de Visión Artificial
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 Prácticas de Visión Artificial
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 Prácticas de Visión Artificial
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 Prácticas de Visión Artificial
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 Prácticas de Visión Artificial
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); Prácticas de Visión Artificial
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. Prácticas de Visión Artificial
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) Prácticas de Visión Artificial
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 Prácticas de Visión Artificial
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() Prácticas de Visión Artificial
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”. Prácticas de Visión Artificial
Á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 Prácticas de Visión Artificial
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: Prácticas de Visión Artificial
Diámetros de Feret Para calcular los diámetros de Feret con las MIL: Mil M_GENERAL_FERET + MblobSelectFeret() MIL_ID Feature List double Angle Mil M_FERET_X M_FERET_Y También es posible calcular los diámetros máximo, mínimo y medio: Mil M_FERET_MAX_DIAMETER M_FERET_MIN_DIAMETER M_FERET_MEAN_DIAMETER Prácticas de Visión Artificial
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). Prácticas de Visión Artificial
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: Prácticas de Visión Artificial
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 Prácticas de Visión Artificial
Localización Una característica importante es conocer la localización del blob en la imagen: Mil M_BOX M_CONTACT_BOX M_CENTER_OF_GRAVITY Prácticas de Visión Artificial
Momentos Los momentos nos dan información de localización y de forma. Prácticas de Visión Artificial
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 Prácticas de Visión Artificial
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 Prácticas de Visión Artificial
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. Prácticas de Visión Artificial
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 Prácticas de Visión Artificial