Ich habe einige alte Dokumente, die gescannt wurden, und ich möchte sie in Schwarzweiß umwandeln. Der Inhalt sollte immer schwarz und der Hintergrund weiß sein:
Ich benutze Photoshop.
Wenn Sie die Kontrolle über das Scannen haben oder sie erneut scannen können, erhöhen Sie die Kontrasteinstellung im Scan und setzen Sie den Schwarzpunkt auf das dunkelste Textelement, das Sie finden können. Das würde die folgenden Schritte erleichtern. Wenn nicht, lesen Sie weiter ...
Hier ist ein Teil eines ziemlich typischen alten Dokumentenscans:
Die Details werden je nach Dokument unterschiedlich sein (dieses hat beispielsweise einen etwas höheren Kontrast als Ihr Muster), aber die groben Umrisse sind gleich.
Beachten Sie, dass sich der Gelb-Schieberegler weit rechts befindet und den gelblichen Hintergrund aufhellt. Ich konnte den Text nur ein wenig abdunkeln.
Damit kommst du zu 95% ans Ziel. Ein gescanntes Dokument hat normalerweise ein Histogramm mit einer großen Erhebung nach rechts (das Papier) und einer kleineren Erhebung nach links (Text). Sie müssen mit Ihren Dokumenten experimentieren, um die richtigen Einstellungen zu finden.
Von diesem Punkt an können Sie das Bild duplizieren, das Duplikat glätten und Ihre regulären Photoshop-Retuschierwerkzeuge verwenden, um den Rest zu bereinigen.
Sie erwähnen Photoshop, aber falls Sie interessiert sind, gibt es auch ein GIMP-Plugin , das eine erweiterte Graustufenreinigung und -verarbeitung durchführt:
Es heißt Nuvola Tools und konzentriert sich hauptsächlich auf gescannte Kunst, aber vielleicht möchten Sie es ausprobieren.
Vor:
Nach:
Quelle: GIMP-Plugin-Registrierung
Mit GIMP:
Ich habe verschiedene erwähnte Methoden ausprobiert, inkl. kostenloses FineThreshold http://www.mehdiplugins.com/english/finethreshold.htm Plugin. Dieses Plugin liefert schnell gute Ergebnisse, sofern das Dokument homogen ausgeleuchtet ist und auch das Papier selbst von homogener Qualität ist. Dies war jedoch nicht mein Fall. Ich habe die Erfahrung gemacht, dass die Oberseite jedes Dokuments heller war als die Unterseite. Folglich funktionierte jede Methode und ihre partielle Einstellung nur für einen Teil jeder Seite gut und nicht für den Rest.
Schließlich fand ich den Effekt „Dynamic Thresholding“ , der Teil von Zoner Photo Studio v15 ist . Die Eval-Version ist für einige Zeit kostenlos, denke ich. Es scheint die S/W-Schwelle entsprechend der Umgebungshelligkeit auszugleichen. Seine Anwendung ist nur einstufiger Prozess. Bei mir hat der Parameter "Groß, Wert +14" sehr gut funktioniert. Neben „Editor“ enthält Zoner auch die „Manager“-Oberfläche, in der Sie den Stapel über alle ausgewählten Bilder bearbeiten können. Am Ende konnte ich das Ergebnis auf dem uralten 300 dpi Laserdrucker mit hervorragendem Kontrast ausdrucken.
Jetzt ist die einzige verbleibende Aufgabe, nach der ich suche, das automatische Zuschneiden jedes Bildes auf intelligente Weise, um unnötige Ränder auszuschneiden. Jeder Hinweis ist willkommen, denn manuelles Zuschneiden ist sowohl langweilig als auch zeitaufwändig.
Es gab ein Plugin in der GIMP-Plugin-Registrierung, das dies tat. Es ist jetzt hier archiviert .
Vor einiger Zeit habe ich dies in Python übersetzt und es lief viel schneller.
Hier ist das Ergebnis der Anwendung auf das Bild in der ursprünglichen Frage:
Hier ist das Ergebnis seiner Anwendung auf das Bild in Alans Antwort:
Wie auch immer, hier ist der Code des Plugins:
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()
Versuch es doch einfach mal mit Photoshop. Graustufenmodus.
Adam Schuld
Benutzer41141