Esto es lo que hice por un cliente (lo que estás preguntando es lo mismo).
Suponiendo que tiene acceso a cierto tipo de patrón en la imagen (o en el centro del agujero), siempre puede detectar la plantilla para obtener la ubicación de una posible deformación:
Tenga en cuenta que en la imagen transformada, se definen dos regiones de intereses y la región dentro de la cual nos gustaría leer los caracteres es el toro que se encuentra entre dos círculos. Usando esta información, podríamos deformar esta imagen usando una transformación polar inversa para obtener:
También proporciono el código MATLAB para esta transformación en esta publicación de intercambio de archivos .
En el siguiente paso, gracias a la coincidencia de plantillas, los caracteres a leer siempre se encuentran en la región local definida en la imagen de arriba. Ahora, si tiene la iluminación adecuada, la segmentación de caracteres no es más que un conjunto trivial de operaciones de procesamiento de imágenes:
Los componentes conectados obtenidos finalmente se alimentan a una red neuronal o un SVM, primero para entrenar y luego para clasificar. Esta parte se compone solo de una tarea básica de aprendizaje automático, que no detallaré aquí.
No olvide cuidar bien la iluminación, ya que casi está resolviendo el problema a la mitad.