jueves, 24 de noviembre de 2016

Extracción de características en imágenes digitales- Rotación de figuras en Matlab


Antes de comenzar, el código fuente puede ser visto en la cuenta Github, así como otros códigos.

A la verdad este es un ejemplo básico, las cosas se pueden complicar mucho más. La idea central es la de extraer características de un objeto único presente en una imagen, luego recortarlo y rotarlo a 90 grados.
La utilidad de este ejercicio es la de acomodar los objetos reconocidos para una posterior comparación según su geometría. Representa un paso previo en un sistema de reconocimiento de objetos.
Queda a gusto del lector aplicarle mayor complejidad.

Las sentencias utilizadas que se resaltan son:
  • imcrop.
  • imrotate.
Las sentencias importantes a utilizar son:
%% Recortar imagen
IB3=imcrop(IB1,propiedades(1).BoundingBox); %cortar imagen  
orientacionFinal=-90+propiedades(1).Orientation; %se calcula el angulo para rotar a 90 grados   
IB4 = imrotate(IB3,orientacionFinal); %rotar la imagen a 90grados


 Un ejemplo explicativo de extracción de características geométricas más completo puede ser visto en este blog en:
Allí brevemente se hace una introducción al uso de funciones en Matlab y se adjuntan imágenes de calibración.

Sobre el ejemplo

El ejemplo está pensado para una imagen con un único objeto, existen varias formas de complicar el problema, por ejemplo, teniendo varios objetos, etiquetarlos, alinearlos y separarlos contadolos.
Para evitar complicaciones, se asume que en la figura solamente se encuentra un elemento en la imagen.
En el algoritmo se realizan los pasos generales de:
  • Ajuste de parámetros iniciales.
  • Lectura de la imagen.
  • Convertir a escala de grises.
  • Umbralización y Binarización.
  • Invertir imagen.
  • Etiquetado de áreas conectadas.
  • Cálculo de propiedades de los objetos de la imagen.
  • Con los elementos etiquetados, extraer las características geométricas:
    • Area.
    • Perímetro. 
    • Exentricidad.
    • Centroides.
    • Bounding Box.
  • Recortar y copiar a una nueva imagen.
Si utilizas Matlab, descárgalo y ejecuta, si no tal vez te sea útil para entender el algoritmo y traducirlo a otro lenguaje, descarga desde Github.

No hay comentarios:

Publicar un comentario