A função de reprocessamento de software que você está procurando é chamada de segmentação de imagem. Pelo menos no Linux, eu não conheço uma solução adequada até agora. (Existe o script de segment_image de prova de conceito baseado no ImageMagick - - verse também .)
Quando você coloca suas fotos livremente no scanner, você precisa de segmentação e enquadramento automáticos, e ambos parecem ser difíceis com o software gratuito disponível resp. muitas vezes exigem pós-processamento manual. Além disso, muitos scanners têm a propriedade irritante de que o pixel (0,0) está a alguns milímetros do canto dos glas, levando ao recorte ao colocar as fotos na borda.
Então, que tal isso:
Alternativa proposta: digitalizar com modelos, dividindo com o recurso Magia da imagem
-
Construa alguns modelos de papelão com recortes para várias fotos, para colocar no vidro do scanner. Algumas dicas:
- Posicione o modelo no vidro do scanner para que ele não possa se mover, colando-o em uma borda, se necessário.
- Como suas fotos terão alguns tamanhos padrão, alguns modelos serão suficientes.
- Crie modelos para maximizar a cobertura com fotos. Isso pode significar rotacioná-los em 90 graus (para ser corrigido automaticamente pelos comandos de digitalização abaixo) e combinar fotos de tamanhos diferentes.
- A área coberta por fotos deve ser retangular, com tão pouco espaço dentro dela que não seja coberta por fotos. Porque a digitalização desse espaço vai perder tempo mais tarde.
-
Defina a área a ser digitalizada. Deve ser a área retangular contendo todas as suas fotos. Para obter seus offsets e tamanho, por exemplo, use XSane para criar uma visualização, selecione uma área de digitalização e procure os valores em "Janela → Mostrar opções avançadas ".
-
Rastreie em lote as colagens de fotos. Você deseja salvar cada colagem de fotos como um arquivo de imagem grande, mas digitalizar várias dessas colagens em um processo em lote. Para Linux, eu gosto de
scanimage
com a opção--batch
para isso - basta pressionar Digite para adquirir e salvar a próxima varredura. Usescanimage -A
para encontrar as opções específicas do dispositivo para limitar sua área de digitalização e defini-las para os valores determinados na última etapa. -
Divida as colagens de fotos em imagens individuais. Use o ImageMagick para isso, girando as imagens onde for necessário. No Linux, um pequeno script de shell pode fazer isso para todas as imagens digitalizadas com o mesmo modelo de papelão. Como este, processando arquivos chamados
collage-001.jpg
,collage-002.jpg
etc .: ( cuidado, não testado! )for file in collage-*.jpg; do convert "$file" \ -crop '1000x1500+0+0' -rotate 90 +write ${file/.jpg/.img1.jpg} \ -crop '1000x1500+1000+0' -rotate 90 +write ${file/.jpg/.img2.jpg} \ null:; done
Fontes: esta resposta , que adicionalmente possui uma técnica para imagens que não cabem na memória; esta postagem para explicar
null:
; docs para -crop , - rotate e + escreva .
Outra alternativa: as digitalizações em lote do XSane. Eu também tentei usar o recurso de varredura em lote do XSane . Permite definir múltiplas áreas de escaneamento por página (veja "Janela → Mostrar escaneamento em lote"), incl. opções de rotação por área de digitalização. Assim, você pode criar (e até salvar) um conjunto de definições de área de digitalização para cada modelo de papelão e pressionar "Lista de lotes de digitalização" para obter suas várias imagens do modelo. No entanto, para um conjunto grande de imagens, isso é muito mais lento porque o scanner voltará à posição zero depois de processar uma área de digitalização. (Pelo menos isso acontece com o meu scanner. Não sei se há scanners onde os recursos do SANE podem evitar essa etapa de retorno a zero, mas duvido.)