Tengo una forma arbitraria definida por una máscara binaria (gris = forma, negro = fondo).
Me gustaría encontrar un rectángulo más grande posible que contenga solo píxeles grises (dicho rectángulo se muestra en amarillo):
La forma siempre es "de una pieza", pero no es necesariamente convexa (no todos los pares de puntos en el límite de la forma se pueden conectar mediante una línea recta que atraviese la forma).
A veces existen muchos de estos "rectángulos máximos" y luego se pueden introducir más restricciones, como:
- Tomar el rectángulo con su centro más cercano al centro de masa de la forma (o centro de la imagen)
- Tomar un rectángulo con una relación de aspecto más cercana a una relación predefinida (es decir, 4: 3)
Mi primer pensamiento sobre el algoritmo es el siguiente:
- Calcule la transformación de distancia de la forma y encuentre su centro de masa
- Crecer área cuadrada mientras contiene solo píxeles de forma
- Haga crecer el rectángulo (originalmente un cuadrado) en ancho o alto mientras contiene solo píxeles de forma.
Sin embargo, creo que dicho algoritmo sería lento y no conduciría a una solución óptima.
¿Alguna sugerencia?