image image-processing rectangles edge-detection hough-transform

Detección de rectángulo en imagen



image-processing rectangles (1)

El marco de OpenCV puede ayudar a su problema. Además, puede consultar este documento para la plataforma Android .

El código fuente completo está disponible en Github .

Me gustaría programar la detección de una hoja de papel rectangular que no tiene que ser absolutamente recta en cada lado, ya que puedo tomar una foto de ella "en el aire", lo que significa que los lados individuales del papel podrían distorsionado un poco.

La aplicación (iOs y android) CamScanner hace esto muy bien y me pregunto cómo podría implementarse esto. Antes que nada, pensé en hacer:

  • suavizado / reducción de ruido
  • Detección de bordes (astucia, etc.) O umbralización (global / adaptativa)
  • Transformación de Hough
  • Detectando líneas (solo vertical / horizontalmente permitido)
  • Calcule el punto de intersección de 4 líneas encontradas

Pero esto me da muchos problemas con diferentes tipos de imágenes. Y me pregunto si tal vez haya un mejor enfoque para detectar directamente una forma rectangular en una imagen y, si es así, ¿si tal vez Camscanner también lo implementa así?

Aquí hay algunas imágenes tomadas en CamScanner. Estos se detectan muy bien, aunque en a) el lado está distorsionado (pero la esquina todavía se muestra en la superposición, pero no encaja realmente en la esquina del papel blanco) y en b) el fondo está bastante cerca del papel real, pero aún se reconoce correctamente:

Incluso obtiene las imágenes giradas correctamente:

Y cuando estoy insertando algunos errores de prueba, falla pero al menos detecta algo del contorno, pero siempre trato de detectarlo como un rectángulo:

Y aquí falla por completo:

Supongo que en los últimos tres ejemplos, si se hiciera una transformación profunda, podría haber detectado al menos dos de los cuatro lados del rectángulo.

Alguna idea y consejos? Muchas gracias por adelantado