Tenho milhares de imagens cujas principais características são as da imagem anexa: todas as imagens estão em uma moldura (quase) preta, enquanto o conteúdo real da imagem quase sempre está em um fundo branco.
Agora eu gostaria de girar o conteúdo real da imagem para que a borda esquerda desse conteúdo fique vertical. Então eu gostaria de cortar (aparar) a imagem para que a borda preta seja jogada fora, mas mantendo o conteúdo real completamente. Ou seja, mesmo que a área que contém o conteúdo real não seja perfeitamente retangular, tudo dessa área deve ser mantido, o que significa que pequenos restos do quadro preto ainda podem ser visíveis depois.
Dado o número de imagens que eu gostaria de tratar dessa forma, acho que terei que fazer isso usando ferramentas de linha de comando. No passado, usei o ImageMagick para esse tipo de trabalho (para transformações que são muito mais fáceis), mas eu realmente não me importaria em combinar várias ferramentas diferentes para realizar a tarefa.
O que eu já tentei:
Eu pesquisei como desnivelar imagens, e isso funciona na maioria das vezes. No entanto, os métodos de desnivelamento que eu encontrei funcionam deixando as linhas de texto horizontais. Isso é legal porque facilita a leitura, mas é claro que na maioria dos casos as bordas da área que segura o texto não ficam verticais ou horizontais depois, respectivamente. Não é isso que eu estou procurando.
Para explicar com mais detalhes, gostaria de:
- Detecte a borda esquerda entre o quadro preto e a área que contém o conteúdo real da imagem.
- Ajuste uma linha reta (invisível) ao longo dessa borda.
- Determine o ângulo entre essa linha e uma linha vertical.
- Gire a imagem inteira pelo (negativo) ângulo para que a borda da etapa 1 fique vertical.
- Corte a imagem, descartando o máximo possível do quadro preto, mas mantendo assim a área completa que contém o conteúdo real (e, portanto, aceitando que o restante do quadro preto seja mantido se essa área não for perfeitamente retangular).
Alguém poderia explicar como fazer isso, de preferência usando ferramentas de linha de comando?