¿Cómo puedo detectar (y corregir) sesgo en las imágenes?

Tengo una gran colección de imágenes escaneadas, y todas están algo sesgadas, con un área blanca a su alrededor.

Entonces, estas imágenes tienen rectángulos de colores, rodeadas por un área blanca grande. El problema es que estos rectángulos de color no son paralelos al borde de la imagen.

Estoy seguro de que debe haber una forma de detectar mediante programación estos rectángulos de color, de modo que pueda rotar la imagen (desenfundándola) y luego recortarla para que quede solo la parte interesante. Supongo que no estoy muy seguro de cómo se llama este proceso, por lo que tengo problemas para buscar una solución en Google.

¿Alguien sabe de un enfoque que me ayudaría a comenzar? ¿Hay bibliotecas por ahí que debería examinar? ¿O el nombre de un algoritmo que ayudaría?

Estoy planeando usar Java para este proyecto, pero todavía no he comenzado, así que estoy abierto a sugerencias de biblioteca en cualquier idioma.

Respuestas a la pregunta(3)

Su respuesta a la pregunta