Zum Inhalt springen
Zurück zum Blog
· 8 Min. Lesezeit · Alexander Nassian

Scanora 0.11.0: Warum Fotos falsch herauskamen – und was der Sensor eigentlich misst

Scanora 0.11.0 ist im Mac App Store. Warum Fotos zu hell, zu dunkel oder beschnitten herauskamen, was lineare Sensordaten damit zu tun haben und was das Update für Dokumente ändert.

Kurz gesagt: Scanora 0.11.0 ist im Mac App Store. Es geht vor allem um Fotos: Sie kamen bisher teils zu hell, teils zu dunkel und an den Rändern beschnitten heraus. Dahinter standen drei Annahmen, die für Dokumente stimmen und für Fotos nicht – und eine Eigenschaft des Sensors, die auch Dokumente betraf. Ein Profil lässt sich jetzt auf „Vorlage: Foto“ stellen, und Dokumente kommen mit sauberem Papier und natürlichen Farben heraus. Dieser Beitrag beschreibt, was dahintersteckte und was wir dabei am Gerät gefunden haben.

Der Anlass: Fotos, die nicht aussahen wie der Abzug

Scanora ist unsere macOS-App für den KODAK E1030, einen Einzugsscanner, für den der Hersteller keinen macOS-Treiber anbietet. Die App spricht das USB-Protokoll des Geräts direkt und macht aus dem Sensorbild fertige Seiten: Sie sucht das Blatt, richtet es gerade, gleicht das Weiß ab und liest den Text.

Anfang November schrieb uns ein Kunde, dass seine Fotoabzüge mal zu hell, mal zu dunkel und wie hineingezoomt herauskamen. Jeder dieser Verarbeitungsschritte war an Papier mit Schrift abgestimmt, und ein Foto widerspricht gleich drei Annahmen: Sein Rand kann dunkel sein, es hat kein weißes Papier, und es enthält keine Textzeilen, an denen sich die Schieflage messen ließe. Dazu kam eine Eigenschaft des Sensors, die erst beim Nachmessen auffiel.

Erstens: dunkle Ränder, für den Hintergrund gehalten

Hinter dem Blatt sieht der Sensor einen fast schwarzen Hintergrund. Scanora findet das Blatt dort, wo das Bild heller ist als dieser Hintergrund. Bisher entschied darüber allein der Rotkanal mit einer Schwelle von 40. Für weißes Papier ist das reichlich. Ein Foto ist an seinem Rand aber oft dunkler – Schatten, Laub, ein dunkler Himmel, ein Streifen tiefes Blau. Die erkannte Kante wanderte ins Bild, und der Zuschnitt folgte ihr. Ein künstlich erzeugter 10 × 15-Abzug mit einer Schattenseite behielt 37 % seiner Fläche, ein Flyer mit dunkelblauer Kopfzeile verlor die Kopfzeile.

Jetzt zählt für jeden Bildpunkt sein hellster Farbkanal, und die Schwelle liegt bei 16, dem Doppelten des stärksten Rauschens, das wir am Hintergrund je gemessen haben. In den Tests war das Problem damit gelöst. Am Gerät nicht.

Die Gegenprobe mit einem echten Polaroid fand eine Linie, die durch das ganze Bild lief: zwei Bildpunkte breit, in jedem Kanal etwa 31 hell – Staub oder ein Kratzer auf dem Scannerglas. Die alte Schwelle hatte sie um einen einzigen Wert verfehlt, die neue hielt sie in jeder Zeile für den rechten Blattrand. Das 88 mm breite Polaroid maß 149,8 mm. Seitdem gilt als Kante nur ein Bildpunkt, mit dem ein Millimeter Helligkeit beginnt, bei 300 dpi zwölf Punkte in Folge. Eine Linie auf dem Glas ist ein paar Punkte breit, Papier nie.

Diese zweite Bedingung erlaubte einen weiteren Schritt. Eine fast schwarz bedruckte Visitenkarte las an ihrem Rand nur 12 bis 23, der Hintergrund daneben 0 bis 3. Bei einer Schwelle von 16 fand die Hälfte ihrer Zeilen keinen Millimeter Helligkeit, die linke Kante landete auf der Schrift, und die Karte kam 80,5 mm breit und um 2,8° verdreht heraus. Die Schwelle steht jetzt bei 10. Das liegt nah am Rauschen und ist nur deshalb sicher, weil zwölf Punkte in Folge über 10 im Hintergrund nicht vorkommen. Dieselben Rohdaten, neu vermessen: 85,0 × 54,4 mm, ganz und gerade.

Eine letzte Kürzung hatte mit Helligkeit nichts zu tun. Der Scanner beginnt und beendet die Aufnahme an seinem Papiersensor, nicht an den Ecken des Blatts. Läuft eine Vorlage schräg ein, fehlt an beiden Enden je eine Ecke. Scanora berechnete die Länge aus den aufgenommenen Zeilen – das größte Rechteck, das hineinpasst – und schnitt dem schräg eingezogenen Polaroid so oben 3 bis 4 mm und unten 2 bis 3 mm ab. Bei einem randlosen Abzug wäre das Bild gewesen. Jetzt ergibt sich die Länge aus der Ausdehnung des aufgenommenen Papiers entlang der Blattachse, und was der Sensor nie gesehen hat, wird weiß ergänzt. Das Polaroid misst 88,6 × 107,8 mm, mit 6,6 mm Rand oben und 22 mm unten, wie auf dem Abzug.

Zweitens: ein Weißabgleich ohne Weiß

Der Weißabgleich nahm bisher jede Seite für sich: Was ihr hellstes halbes Prozent auf 247 hob, wurde angewendet, für jeden Farbkanal einzeln und ohne Obergrenze. Bei einem Dokument ist das hellste halbe Prozent das Papier, und genau das soll weiß werden. Ein Foto hat kein Papierweiß. Eine künstliche Abendszene bekam so die Faktoren 1,9, 2,6 und 3,2 für Rot, Grün und Blau, und aus einem warmen Braun (103, 75, 56) wurde ein gleichmäßiges Grau (164, 164, 164).

Jetzt ist die Korrektur an dem verankert, was dieser Sensor für Papier misst, und eine Seite darf einen Kanal höchstens um das 1,3-Fache darüber hinaus anheben. Thermopapier, das nur 171 liest, wird weiterhin weiß; die Abendszene bleibt warm. Mit „Vorlage: Foto“ bekommt ein Bild nur noch die Korrektur des Geräts und nichts, was auf der Seite selbst gemessen wurde: Aus 103, 75, 56 wird 100, 73, 54.

Drittens: Der Sensor misst Licht, kein Bild

Hier lag der Grund, warum Fotos zu dunkel herauskamen – und er betraf auch Dokumente. Der Sensor zählt Licht linear: doppelt so viel Licht, doppelt so großer Wert. Bilddateien und Bildschirme erwarten dagegen Werte, die nach dem Empfinden des Auges kodiert sind (sRGB) und den dunklen Tönen deutlich mehr Stufen geben. Eine solche Tonkurve wendet der Scanner nur an, wenn man ihm eine lädt, und das tat Scanora nicht. Gespeichert wurden die linearen Werte so, wie sie kamen.

Bei einem Dokument fällt das kaum auf, schwarze Schrift auf weißem Papier gewinnt dadurch sogar an Kontrast. Bei einem Foto ist jeder Mittelton und jeder Schatten viel zu dunkel. Die dunklen Bäume auf dem Polaroid lasen 8, sein Papier 219 – die wenigen Prozent Licht, die ein solcher Abzug zurückwirft. Gespeichert wurden sie mit 9 von 255, fast schwarz. Kodiert liegen sie bei etwa einem Fünftel des Bereichs, wie auf dem Abzug. Mit „Vorlage: Foto“ kodiert Scanora jetzt mit der sRGB-Kurve, und zwar auf ein Sechzehntel eines Messwerts genau: Am dunklen Ende entspricht ein linearer Wert mehreren kodierten, und dort würde vorzeitiges Runden sichtbar.

Einen Preis hatte die lineare Darstellung aber auch bei Dokumenten: Knitter und Schatten kamen als graue Flecken heraus, die Rückseite schien durch, farbige Logos wirkten schwer. Wir haben am Gerät einen Kassenbon auf Thermopapier und einen Brief mit farbigem Logo in drei Fassungen verglichen: linear, mit der reinen sRGB-Kurve und mit der Kurve und einem Schwarzpunkt bei der Druckfarbe. Die reine Kurve machte das Papier sauber und die Schrift grau. Mit dem Schwarzpunkt bei 5 % der Papierhelligkeit blieb die Schrift so schwarz wie linear, das Papier wurde so sauber wie mit der Kurve, und die Farben sahen aus wie auf dem Brief. Das ist jetzt die Kurve für Dokumente. Die Bilddatei des Briefs wurde dabei um ein Fünftel kleiner.

Was gespeichert wird und was gelesen wird

Die neue Kurve hatte einen Nachteil: Auf blassem Thermodruck las die Texterkennung schlechter. Auf dem Kassenbon wurde aus „0,45“ ein „0.45“, und Datum und das gepunktete Logo kamen falsch heraus, wo die lineare Fassung sie richtig gelesen hatte.

Deshalb liest die Texterkennung jetzt eine lineare Fassung derselben Seite – gleicher Zuschnitt, gleiche Drehung, damit die Textebene im PDF genau auf dem gespeicherten Bild liegt –, und gespeichert wird die Fassung mit der Kurve. Beide Testdokumente lesen sich damit Wort für Wort wie vorher. Die zweite Fassung entsteht nur, wenn ein Profil Text erkennen soll.

Die neuen Einstellungen

  • Vorlage: Dokument oder Foto, pro Profil. Ein Foto bekommt nur die Farbkorrektur des Geräts, wird nie geglättet und an seiner Kante gerade gerichtet: Ein Abzug sitzt rechtwinklig auf seinem Papier, und eine Messung am Bildinhalt findet über Jalousien oder einem Horizont einen Winkel, den es nicht gibt.
  • Automatisch zuschneiden, vorgegeben eingeschaltet. Ausgeschaltet speichert Scanora das ganze Sensorbild, ungedreht – für Vorlagen, deren Rand so dunkel ist wie der Hintergrund im Scanner. Das Geraderichten ist dann ausgegraut.
  • Bestehende Profile öffnen als „Dokument“ mit eingeschaltetem Zuschneiden.

Die vollständigen Versionshinweise stehen auf der Produktseite.

Was daraus für Geräteprojekte folgt

Scanora ist ein kleines Produkt, aber die Fehler dieser Version sind typisch für jedes Gerät mit einem Sensor. Vier Dinge nehmen wir daraus mit:

  1. Wissen, was der Sensor liefert. Lineare Messwerte und kodierte Bildwerte sehen in einer Datei gleich aus und sind es nicht. Wer eine Verarbeitung auf Daten abstimmt, deren Kodierung er nicht kennt, stimmt sie auf einen Zufall ab – hier auf schwarze Schrift, die von der linearen Darstellung sogar profitierte.
  2. Am Gerät prüfen, mit echten Vorlagen. Die künstlichen Testbilder bestanden alle. Die Linie auf dem Glas und die schwarze Karte zeigten sich erst am Scanner; beide stehen jetzt mit ihren gemessenen Werten in den Tests.
  3. Eine Schwelle nahe am Rauschen braucht ein zweites Kriterium. Helligkeit allein trennt Papier nicht von Staub. Helligkeit über eine Mindestbreite tut es – und erlaubt erst die niedrige Schwelle.
  4. Was man speichert und was man auswertet, muss nicht dasselbe Bild sein. Das Auge will eine Kurve, die Texterkennung auf blassem Druck nicht. Beides aus denselben Rohdaten zu erzeugen, kostet etwas Rechenzeit und erspart einen Kompromiss.

Wie sich Software regelmäßig gegen das echte Gerät statt nur gegen Testdaten prüfen lässt, beschreibt unser Beitrag Hardware-in-the-Loop-Testing.


Scanora ist ein unabhängiges Produkt der bitshift dynamics GmbH und steht in keiner Verbindung zum Inhaber der Marke KODAK. Der Modellname benennt allein, mit welchem Gerät die App zusammenarbeitet.

Häufige Fragen

Wie bekomme ich Scanora 0.11.0?
Über den Mac App Store. Ist dort die automatische Aktualisierung eingeschaltet, kommt das Update von selbst; sonst finden Sie es im App Store unter „Updates“. Die Voraussetzungen sind unverändert: macOS 13 oder neuer und ein Mac mit Apple Silicon.
Wann wähle ich „Foto“, wann „Dokument“?
„Foto“ für Fotoabzüge und andere Bilder ohne weißes Papier: Farben und Helligkeit bleiben wie auf der Vorlage, gerade gerichtet wird an der Kante. „Dokument“ für alles mit Schrift auf Papier: Das Papier wird weiß, gerade gerichtet wird nach der Schrift. Die Einstellung gilt pro Profil; ein eigenes Profil für Fotos ist der bequemste Weg.
Ändern sich meine bestehenden Profile?
Ihre Einstellungen nicht: Profile aus früheren Versionen öffnen als „Dokument“ mit eingeschaltetem Zuschneiden. Die Seiten sehen trotzdem anders aus als bisher – sauberes Papier, natürliche Farben, die Schrift bleibt schwarz.
Mein Foto wird trotzdem beschnitten. Was hilft?
Fotos einzeln einlegen und die Führungen eng anlegen, damit der Abzug gerade einläuft. Ist der Rand der Vorlage so dunkel wie der Hintergrund im Scanner, findet keine Schwelle die Kante; dann im Profil „Automatisch zuschneiden“ ausschalten. Scanora speichert dann das ganze Sensorbild, ungedreht.

Alexander Nassian

Geschäftsführer, bitshift dynamics

Entwickelt mit seinem Team hardwarenahe Software für Embedded-Produkte – C++, Qt/QML, Embedded Linux und das Yocto Project. bitshift dynamics arbeitet seit 2005 in diesem Feld.

Verwandte Beiträge

10 Min. Lesezeit

Yocto-BSP: ein Board Support Package bauen, das hält

Wie ein Yocto-BSP-Layer aufgebaut ist – Maschinenkonfiguration, Kernel und Device Tree, U-Boot, Image-Layout – und welche Regeln ihn von einem Yocto-LTS-Release zum nächsten wartbar halten.

  • Yocto
  • BSP
  • Embedded Linux
Weiterlesen

Steht bei Ihnen eine ähnliche Aufgabe an?

Wir begleiten Embedded-Teams genau bei solchen Fragestellungen – von der Architekturentscheidung bis zur Serienreife. Schildern Sie uns kurz Ihr Vorhaben.

Projekt anfragen