Estou usando scanimage
um scanner de documentos (Canon DR-2510C) que suporta digitalização duplex. Infelizmente, o driver SANE não oferece suporte à detecção de páginas em branco, de modo que, com páginas mistas (frente e verso), as páginas em branco entram no resultado da digitalização.
Gostaria de me livrar automaticamente dessas páginas em branco ao pós-processar a saída da digitalização, por isso estou procurando uma ferramenta de linha de comando capaz de detectar se um arquivo TIFF ou PNM consiste principalmente de pixels brancos).
Alguma ideia?
Esta é a solução que encontrei com base na resposta de lesmana:
for i in "${DEST_DIR}/out"*.pnm; do
histogram=`convert "${i}" -threshold 50% -format %c histogram:info:-`
white=`echo "${histogram}" | grep "white" | sed -n 's/^ *\(.*\):.*$/\1/p'`
black=`echo "${histogram}" | grep "black" | sed -n 's/^ *\(.*\):.*$/\1/p'`
blank=`echo "scale=4; ${black}/${white} < 0.005" | bc`
if [ ${blank} -eq "1" ]; then
echo "${i} seems to be blank - removing it..."
rm "${i}"
fi
done
linux
scanning
image-processing
imaging
Thilo-Alexander Ginkel
fonte
fonte
Respostas:
Você pode usar a ferramenta de comparação do ImageMagick para comparar as imagens digitalizadas com uma página em branco "principal". Como meu ImageMagick-fu é bastante limitado, não posso dar nenhum exemplo de comando. Você terá que RTFM :
O segundo link ainda possui uma seção intitulada "Fax em branco", que explica como detectar páginas de fax em branco. Infelizmente essa seção parece inacabada. Espero que as informações disponíveis sejam suficientes para você começar.
fonte
Use o recurso de identificação do ImageMagik CLI, conforme indicado aqui:
http://www.imagemagick.org/script/identify.php
Com o comando:
$ identify -format "%#" source.png
Se o número de cores for 1, você terá uma página em branco.
Você também pode usar o comando:
identify -verbose source.png
O desvio padrão, a inclinação e a curtose serão 0 para uma imagem em branco.
fonte
%#
retorna um valor de hash calculado para a imagem, ela deve ser%k
imho.Versão ligeiramente melhorada do código na pergunta:
Alterar:
a.pnm
, usartouch .a.pnm
)fonte
Meu truque é digitalizar as imagens para um formato sem perdas compactado (tiff + compressão). Dessa forma, as páginas em branco têm um tamanho de arquivo muito menor e eu posso detectá-las
find
, movê-las para outro diretório, verificá-las rapidamente com um visualizador e depois se livrar delas.fonte
Você pode fazer um corte barulhento com o ImageMagick , por exemplo:
A página não está vazia se o Convert imprimir algo parecido com isto:
(a entrada de exemplo é uma imagem lineart digitalizada de 600 dpi DIN A4)
Está vazio se a altura / largura após o corte for suspeitamente pequena, por exemplo:
Ao contrário do método do histograma de limite, isso produz menos falsos positivos quando você tem páginas que contêm apenas uma palavra ou uma linha de texto. Com um histograma de limite, essas páginas podem ser detectadas incorretamente como vazias.
Observar o tamanho do arquivo da imagem compactada, ou seja, como uma aproximação da entropia, produz os mesmos falsos positivos.
Por outro lado, documentos com perfurações, mas vazios, provavelmente não são detectados como vazios apenas com um acabamento barulhento. Se você se preocupa com isso, pode fazer sentido dizer ao ImageMagick para cortar incondicionalmente algum espaço de margem, primeiro. Por exemplo, se a imagem foi digitalizada com 600 dpi e você deseja ignorar uma margem de 1 polegada ao redor:
fonte
%k
deve ser usado para o formato, pois retorna:Uso:
Fonte: https://imagemagick.org/script/escape.php
fonte