Estoy usando scanimage
un escáner de documentos (Canon DR-2510C) que admite escaneo dúplex. Desafortunadamente, su controlador SANE no admite la detección de páginas en blanco, por lo que con páginas mixtas (una / dos caras), las páginas en blanco entran en el resultado del escaneo.
Me gustaría deshacerme automáticamente de esas páginas en blanco al procesar la salida de escaneo, por lo que estoy buscando una herramienta de línea de comandos que sea capaz de detectar si un archivo TIFF o PNM se compone principalmente de píxeles blancos).
¿Algunas ideas?
Esta es la solución que se me ocurrió en base a la respuesta 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
fuente
fuente
Respuestas:
Puede utilizar la herramienta de comparación ImageMagick para comparar las imágenes escaneadas con una página en blanco "maestra". Como mi ImageMagick-fu es bastante limitado, no puedo darle ningún comando de ejemplo. Tendrá que RTFM :
El segundo enlace incluso tiene una sección titulada "Fax en blanco" que explica cómo detectar páginas de fax en blanco. Lamentablemente esa sección parece inacabada. Esperemos que la información disponible sea suficiente para que pueda comenzar.
fuente
Utilice la función de identificación de ImageMagik CLI como se indica aquí:
http://www.imagemagick.org/script/identify.php
Con comando:
$ identify -format "%#" source.png
Si el número de colores es 1, tiene una página en blanco.
También puedes usar el comando:
identify -verbose source.png
La desviación estándar, sesgo y curtosis será 0 para una imagen en blanco.
fuente
%#
devuelve un valor hash calculado para la imagen, debería ser en%k
mi humilde opinión.Versión ligeramente mejorada del código en la pregunta:
Cambios:
a.pnm
, usetouch .a.pnm
)fuente
Mi truco es escanear las imágenes a un formato comprimido sin pérdidas (tiff + compresión). De esta manera, las páginas en blanco tienen un tamaño de archivo mucho más bajo y puedo detectarlas
find
, moverlas a otro directorio, verificarlas rápidamente con un visor y luego deshacerme de ellas.fuente
Puede hacer un recorte ruidoso con ImageMagick , por ejemplo:
La página no está vacía si convertir imprime algo como esto:
(la entrada de ejemplo es una imagen de lineart escaneada DIN A4 de 600 ppp)
Está vacío si la altura / anchura después del recorte es sospechosamente pequeña, por ejemplo:
A diferencia del método de histograma de umbral, esto produce menos falsos positivos cuando tiene páginas que solo contienen una palabra o una línea de texto. Con un histograma de umbral, tales páginas podrían detectarse erróneamente como vacías.
Mirar el tamaño del archivo de la imagen comprimida, es decir, como una aproximación de la entropía, produce los mismos falsos positivos.
Por otro lado, los documentos con perforaciones pero por lo demás vacíos, probablemente no se detecten como vacíos con solo un recorte ruidoso. Si te interesan esos, puede tener sentido decirle a ImageMagick que primero recorte un poco de margen de forma incondicional. Por ejemplo, si la imagen se escaneó con 600 ppp y desea ignorar un margen de 1 pulgada:
fuente
%k
debe usarse para el formato, ya que devuelve:Uso:
Fuente: https://imagemagick.org/script/escape.php
fuente