Ich habe einige alte Dokumente, die gescannt wurden, und ich möchte sie in Schwarzweiß konvertieren. Der Inhalt sollte immer schwarz und der Hintergrund weiß sein:
Ich benutze Photoshop.
Ich habe einige alte Dokumente, die gescannt wurden, und ich möchte sie in Schwarzweiß konvertieren. Der Inhalt sollte immer schwarz und der Hintergrund weiß sein:
Ich benutze Photoshop.
Antworten:
Wenn Sie die Kontrolle über das Scannen haben oder es erneut scannen lassen können, erhöhen Sie die Kontrasteinstellung im Scan und setzen Sie den Schwarzpunkt auf die dunkelste Stelle, die Sie finden können. Das würde die folgenden Schritte einfacher machen. Wenn nicht, lesen Sie weiter ...
Hier ist ein Teil eines ziemlich typischen alten Dokumentenscans:
Die Details sind je nach Dokument unterschiedlich (dies hat beispielsweise einen etwas höheren Kontrast als Ihr Beispiel), aber der grobe Umriss ist derselbe.
Beachten Sie, dass sich der gelbe Schieberegler weit rechts befindet und den gelblichen Hintergrund aufhellt. Ich konnte den Text nur wenig abdunkeln.
Damit sind Sie zu 95% am Ziel. Ein gescanntes Dokument weist normalerweise ein Histogramm mit einem großen Knoten nach rechts (Papier) und einem kleineren Knoten nach links (Text) auf. Sie müssen mit Ihren Dokumenten experimentieren, um die richtigen Einstellungen zu finden.
Ab diesem Zeitpunkt können Sie das Bild duplizieren, das Duplikat reduzieren und den Rest mit den normalen Photoshop-Retuschewerkzeugen bereinigen.
Sie erwähnen Photoshop, aber falls Sie interessiert sind, gibt es auch ein GIMP-Plugin , das erweiterte Graustufenbereinigung und -verarbeitung ermöglicht:
Es heißt Nuvola Tools und konzentriert sich hauptsächlich auf gescannte Grafiken. Sie können es aber auch ausprobieren.
Vor:
Nach:
Quelle: GIMP Plugin Registry
Mit GIMP:
Ich habe verschiedene Methoden ausprobiert. kostenloses FineThreshold http://www.mehdiplugins.com/english/finethreshold.htm Plugin. Dieses Plugin liefert schnell gute Ergebnisse, vorausgesetzt, das Dokument ist homogen beleuchtet und das Papier selbst ist von homogener Qualität. Dies war jedoch nicht mein Fall. Ich habe festgestellt, dass die Oberseite jedes Dokuments heller ist als die Unterseite. Folglich funktionierte jede Methode und ihre teilweise Einstellung nur für den Teil jeder Seite und nicht für den Rest der Seite.
Schließlich fand ich den Effekt "Dynamic Thresholding", der Teil von Zoner Photo Studio v15 ist . Die Testversion ist für einige Zeit kostenlos, denke ich. Es scheint die s / w-Schwelle entsprechend der Umgebungshelligkeit zu verschieben. Die Anwendung erfolgt in nur einem Schritt. Für mich haben die Parameter "Groß, Wert +14" sehr gut funktioniert. Neben "Editor" enthält Zoner auch die "Manager" -Schnittstelle, in der Sie den Stapel über alle ausgewählten Bilder verarbeiten können. Am Ende konnte ich das Ergebnis mit dem sehr alten 300 dpi Laserdrucker mit hervorragendem Kontrast ausdrucken.
Die einzige verbleibende Aufgabe, nach der ich suche, ist das automatische AUSSCHNEIDEN jedes Bildes auf intelligente Weise, um die unnötigen Ränder auszuschneiden. Hinweise sind willkommen, da das manuelle Zuschneiden sowohl langweilig als auch zeitaufwändig ist.
Es gab ein Plugin in der GIMP-Plugin-Registry, 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 seiner 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()