J'utilise scanimage
avec un scanner de documents (Canon DR-2510C) qui prend en charge la numérisation recto verso. Malheureusement, son pilote SANE ne prend pas en charge la détection des pages vierges, de sorte qu'avec les pages mixtes (simple / double face), les pages vierges entrent dans le résultat de la numérisation.
Je voudrais me débarrasser automatiquement de ces pages vierges lors du post-traitement de la sortie de numérisation, donc je cherche un outil en ligne de commande qui est capable de détecter si un fichier TIFF ou PNM est composé principalement de pixels blancs).
Des idées?
Voici la solution que j'ai trouvée sur la base de la réponse 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
la source
la source
Réponses:
Vous pouvez utiliser l' outil de comparaison ImageMagick pour comparer les images numérisées avec une page vierge "principale". Étant donné que mon ImageMagick-fu est assez limité, je ne peux pas vous donner d'exemple de commande. Vous devrez RTFM :
Le deuxième lien a même une section intitulée "Fax vierge" qui explique comment détecter les pages de fax vierges. Malheureusement, cette section semble inachevée. J'espère que les informations disponibles vous permettront de démarrer.
la source
Utilisez la fonction d' identification d'ImageMagik CLI comme indiqué ici:
http://www.imagemagick.org/script/identify.php
Avec commande:
$ identify -format "%#" source.png
Si le nombre de couleurs est 1, vous avez une page vierge.
Vous pouvez également utiliser la commande:
identify -verbose source.png
L'écart type, l'inclinaison et le kurtosis seront de 0 pour une image vierge.
la source
%#
renvoie une valeur de hachage calculée pour l'image, elle doit être à%k
mon humble avis.Version légèrement améliorée du code dans la question:
Changements:
a.pnm
, utilisertouch .a.pnm
)la source
Mon astuce consiste à numériser les images dans un format compressé sans perte (tiff + compression). De cette façon, les pages vierges ont une taille de fichier beaucoup plus faible et je peux les détecter avec
find
, les déplacer vers un autre répertoire, les vérifier rapidement avec une visionneuse puis les supprimer.la source
Vous pouvez effectuer un découpage bruyant avec ImageMagick , par exemple:
La page n'est pas vide si convert imprime quelque chose comme ceci:
(l'exemple d'entrée est une image linéaire numérisée de 600 dpi DIN A4)
Il est vide si la hauteur / largeur après la coupe est étrangement petite, par exemple:
Contrairement à la méthode de l'histogramme à seuil, cela produit moins de faux positifs lorsque vous avez des pages qui contiennent juste un mot ou une ligne de texte. Avec un histogramme à seuil, de telles pages pourraient à tort être détectées comme vides.
En regardant la taille du fichier de l'image compressée, c'est-à-dire comme une approximation de l'entropie, on obtient les mêmes faux positifs.
D'un autre côté, les documents avec des perforations mais autrement vides, ne sont probablement pas détectés comme vides avec juste une garniture bruyante. Si vous vous souciez de ceux-ci, il peut être judicieux de dire à ImageMagick de couper inconditionnellement un espace de marge, d'abord. Par exemple, si l'image a été numérisée à 600 dpi et que vous souhaitez ignorer une marge de 1 pouce tout autour:
la source
%k
doit être utilisé pour le format, car il renvoie:Usage:
Source: https://imagemagick.org/script/escape.php
la source