3

Ich möchte ein Bild eines Dokuments aufnehmen, das fotografiert wurde, und es so aussehen lassen, als wäre es gescannt worden. Da ein Scanner eine konstante Lichtquelle über das gesamte Dokument legt, möchte ich diesen Effekt auf einem Foto eines Dokuments erzielen. Der gewünschte Effekt wäre, alle Schatten oder Bereiche mit wenig Licht zu entfernen (oder sie zumindest weniger auffällig zu machen) und das ganze Foto ziemlich hell zu machen.So erstellen Sie eine einheitliche Bildhelligkeit (mit Python/PIL)

Mein erster Gedanke wäre, den hellsten Teil des Zielbildes zu finden, und sie machen das ganze Bild so hell. Angenommen, das ist sogar der richtige Algorithmus, wie würde ich das in PIL machen? Gibt es eine Get-Brightness-Methode? etc?

(Dies ist ein Follow-up zu this earlier question.)

+0

Können Sie ein Beispielbild von Ihnen hinzufügen? – mmgp

Antwort

2

Als erster Versuch, versuchen Sie das Bild Schwellwertbildung. Dunkle Bereiche werden schwarz, helle Bereiche werden weiß. Ich habe PIL nicht benutzt, aber ich kann mir vorstellen, dass es einen einfachen Weg dafür gibt.

2

Versuchen Sie ImageChops.screen (image1, image2) mit 2 Kopien des Bildes. Wenn das nicht zufriedenstellend ist, probieren Sie einige der anderen Funktionen im ImageChops-Modul aus.

Sie können auch zuerst in Graustufen konvertieren: ImageOps.grayscale (Bild).

0

Zuerst versuchen Sie es manuell in einem Bildbearbeitungsprogramm, wie GIMP. Ich denke, was Sie suchen, ist die Anpassung von Helligkeit und Kontrast.

+0

nein, es ist mehr als, da ein dunklerer Bereich mehr Helligkeit bekommen sollte als ein bereits heller Bereich. – Greg

0

Welche Art von Bild? Wenn es, wie bei Textseiten, idealerweise reines Schwarz-Weiß sein soll, dann sind Ihre Rohdaten wahrscheinlich so etwas wie ein Graustufen-Farbverlauf mit unterschiedlichen Graden von nicht ganz schwarzen Buchstaben. Schwellwertbildung gegen eine Konstante kann gute Ergebnisse liefern, jedoch nicht, wenn die Beleuchtung zu ungleichmäßig ist oder die Linsenblendung beeinträchtigt wird. Schwellwert das Bild gegen eine geglättete Version von sich selbst. Glätten Sie es mit PIL_usm.gblur (Bild, Radius), wobei der Radius (in Pixeln) etwa zehn, zwanzig oder einen Wert hat, der mit der Breite der Elemente der Buchstaben vergleichbar ist. Kurze hackcode aus alten Noten nur zur Illustration:

import Image 
import PIL_usm 
# see http://www.cazabon.com/pyCMS/PIL_usm.html for PIL_usm 

img = Image.open(...) 
sm = PIL_usm(img, 10) 
thr = Image.ImageChops.subtract(img,sm, .001, 128) 
# or whatever works 4u... 

OTOH, wenn diese Dokumente von Fotos oder andere nicht-bilevel Grafiken haben, müssen Sie klüger sein.

+0

Interessanter Vorschlag --- hast du es versucht? –

Verwandte Themen