J'ai de vieux documents qui ont été numérisés et je veux les convertir en noir et blanc. Le contenu doit toujours être noir et l'arrière-plan blanc:
J'utilise Photoshop.
J'ai de vieux documents qui ont été numérisés et je veux les convertir en noir et blanc. Le contenu doit toujours être noir et l'arrière-plan blanc:
J'utilise Photoshop.
Réponses:
Si vous avez le contrôle sur la numérisation ou si vous pouvez les obtenir à nouveau, augmentez le paramètre de contraste dans la numérisation et définissez le point noir sur le bit de texte le plus sombre que vous pouvez trouver. Cela faciliterait les étapes ci-dessous. Sinon, lisez la suite ...
Voici une partie d'une ancienne numérisation de documents assez typique:
Les détails seront différents selon le document (cela a un contraste un peu plus élevé que votre échantillon, par exemple) mais le contour général sera le même.
Notez que le curseur jaune est bien à droite, éclaircissant le fond jaunâtre. J'ai pu assombrir un peu le texte.
Cela vous permet d'atteindre 95% du chemin. Un document numérisé a généralement un histogramme avec une grosse bosse vers la droite (le papier) et une plus petite bosse vers la gauche (texte). Vous devrez expérimenter avec vos documents pour trouver les bons paramètres.
À partir de là, vous pouvez dupliquer l'image, aplatir le doublon et utiliser vos outils de retouche Photoshop habituels pour nettoyer le reste.
Vous mentionnez Photoshop, mais si vous êtes intéressé, il existe également un plugin GIMP qui effectue un nettoyage et un traitement avancés des niveaux de gris:
Il s'appelle Nuvola Tools , et il est principalement axé sur l'art numérisé, mais vous voudrez peut-être l'essayer.
Avant:
Après:
Source: Registre des plugins GIMP
Avec GIMP:
J'ai essayé diverses méthodes mentionnées, y compris. plugin FineThreshold gratuit http://www.mehdiplugins.com/english/finethreshold.htm . Ce plugin produit rapidement de bons résultats à condition que le document soit éclairé de manière homogène et que le papier lui-même soit également de qualité homogène. Mais ce n'était pas mon cas. J'ai constaté que la face supérieure de chaque document était plus claire que la partie inférieure. Par conséquent, chaque méthode et son paramétrage partiel ne fonctionnaient bien que pour la partie de chaque page et non pour le reste.
Finalement, j'ai trouvé l'effet "Dynamic Thresholding" qui fait partie de Zoner Photo Studio v15 . Sa version eval est gratuite pour une certaine période, je suppose. Il semble compenser le seuil n / b en fonction de la luminosité du quartier. Son application est un processus en une seule étape. Pour moi, les paramètres "Large, value +14" ont très bien fonctionné. A côté de "Editor", Zoner contient également l'interface "Manager" dans laquelle vous pouvez traiter le lot sur toutes les images sélectionnées. Au final, j'ai pu imprimer le résultat sur la très vieille imprimante laser 300 dpi avec un excellent contraste.
Maintenant, la seule tâche restante que je recherche est le recadrage automatique de chaque image de manière intelligente pour couper les marges inutiles. Toutes les astuces sont les bienvenues car le recadrage manuel est ennuyeux et prend du temps.
Il y avait un plugin dans le registre des plugins GIMP qui faisait cela. Il est archivé ici maintenant.
Il y a quelque temps, j'ai traduit cela en Python et cela a fonctionné beaucoup plus rapidement.
Voici le résultat de son application à l'image dans la question d'origine:
Voici le résultat de son application à l'image dans la réponse d'Alan:
Quoi qu'il en soit, voici le code du plugin:
from __future__ import division
import random
import gimp, gimpfu
pdb = gimp.pdb
sample_count = 100
def set_image_background_to_white(image, drawable):
pdb.gimp_context_push()
pdb.gimp_image_undo_group_start(image)
pdb.gimp_progress_set_text('Correcting background')
if drawable.is_gray:
channel_count = 1
elif drawable.is_rgb:
channel_count = 3
assert not drawable.is_indexed
# get some random points in the image
sum_by_channel = [0]*channel_count
for sample_index in range(sample_count):
px = pdb.gimp_drawable_get_pixel(drawable,
random.randint(0, pdb.gimp_drawable_width (drawable)-1),
random.randint(0, pdb.gimp_drawable_height(drawable)-1))[1]
for i in range(channel_count):
sum_by_channel[i] += px[i]
pdb.gimp_progress_update(sample_index/sample_count)
if drawable.is_gray:
pdb.gimp_levels(drawable, gimpfu.HISTOGRAM_VALUE,
0, sum_by_channel[0]/sample_count,
1.,
0, 255)
elif drawable.is_rgb:
for i in range(channel_count):
pdb.gimp_levels(drawable, 1+i,
0, sum_by_channel[i]/sample_count,
1.,
0, 255)
pdb.gimp_levels(drawable, gimpfu.HISTOGRAM_VALUE,
0, 255,
0.6,
0, 255)
pdb.gimp_image_undo_group_end(image)
pdb.gimp_displays_flush()
pdb.gimp_progress_update(1.)
pdb.gimp_context_pop()
gimpfu.register('set_image_background_to_white', # name
'Set image background to white', # blurb
'No help info yet', # help
'Robert Fleming', # author
'Robert Fleming', # copyright
'2015', # date
'<Image>/Filters/Set Background to White', # menupath
'RGB*, GRAY*', # imagetypes
[], # params
[], # results
set_image_background_to_white, # function
)
gimpfu.main()