Hallo zusammen, ab und an fallen bei mir Bildschirmfotos von Geräten mit LCD an. Beispielhaft habe ich mal so ein Foto (noch ohne Trapez-Entzerrung) angehängt. Das Foto hat die vielfache Auflösung des LCDs (das Bild im Anhang ist verkleinert), also sollte sich das Monochrom-Bild in Originalauflösung problemlos rekonstruieren lassen. Als Software habe ich Gimp und die Matlab Image Processing Toolbox zur Verfügung. Probiert habe ich das Ganze bislang aber nur mit Gimp. Die Trapez-Entzerrung ist kein Problem. Die verbleibende Wölbung durch die Linse ist so klein, das ich sie nicht feststellen kann. Was mich allerdings vor Schwierigkeiten stellt, ist einen Schwellwert für hell und dunkel zu finden. Man sieht es dem Bild nicht direkt an, aber oben links ist es weitaus dunkler als im Rest, so daß ein einheitlicher Schwellwertwert über die ganze Bildschirmfläche zu fehlerhaften hellen/dunklen Pixeln führt. Hätten wir hier kein Bild, sondern Meßdaten, würde ich einen bilinearen Ansatz wählen, diesen Ansatz mit der gaußschen Fehlerquadratmethode parametrieren und das damit erhaltene Bild vom Ursprungsbild abziehen. sozusagen einen extrem tiefpaßgefiltertes Bild abziehen. Aber was wäre das Equivalent einer normalen Bildbearbeitung? Viele Grüße W.T.
Hallo, wenn du Matlab hast hilft vielleicht das hier: http://de.mathworks.com/help/images/examples/correcting-nonuniform-illumination.html Andreas
Hm... ...ich fürchte, ohne wahnsinnig viel Einarbeitungsaufwand werde ich der strel -Funktion nichts sinnvolles entlocken können. Ich suche allerdings auch keine vollautomatische Bearbeitung. Mir reicht ein "Kochrezept". Meine ersten Versuche mit "Ebene duplizieren" -> Weichzeichnen mit 300 Pixeln Radius" -> "Ebene: Division" und daraus den Schwellwert bestimmen haben schon eine leichte Verbesserung gebracht, aber die Abdunkelung in der oberen linken Ecke kann es nicht so richtig ausgleichen.
:
Bearbeitet durch User
Ich würde an deiner Stelle im ersten Schritt das Bild in Graustufen umwandeln. anschließend vertikal in der Mitte trennen. Dadurch hast du eine linke und rechte Bildhälfte auf die man das Otsu-Schwellwertrennungsverfahren anwenden kann. Matlab sollte das können. Nach der Schwellwerttrenung setzt du das Bild dann wieder zusammen. Eventuell solltest du das Bild vorher verkleinern oder testen ob Weichezeichner auf den Hälften die Ergebnisse verbessern.
Walter T. schrieb: > Mir reicht ein "Kochrezept". Kontrast vor Binarisierung erhöhen? Scheint ja ein reines s/w-Bild zu sein. Warum eigentlich abphotographieren? Kann das Tek-Oszi nicht selbst einen Screenshot auf einem angeschlossenen USB-Stick ablegen, oder ist das so steinalt, daß das noch mit Disketten arbeitet?
Hallo zusammen, danke für die bisherigen Antworten. Rufus Τ. F. schrieb: > Kontrast vor Binarisierung erhöhen? Scheint ja ein reines s/w-Bild zu > sein. Eine reine Kontrastspreizung des gesamten Bildes bringt an dieser Stelle nicht. Vielleicht sieht man das Problem am besten, wenn man eine naive Auftrennung nach Schwellwert, wie ich jetzt mal im Anhang gemacht habe, durchführt. Man sieht weiße Bereiche, die zu dunkel sind, während andere schwarze Bereiche schon zu hell sind. Eine Kontrastspreizung ändert daran erst einmal nichts, weil sie ja unabhängig auf jedes Pixel wirkt. Medientechniker schrieb: > [...] auf die man das > Otsu-Schwellwertrennungsverfahren [...] Danke, mit Schwellwert-Trennverfahren hast Du mir ein gutes Stichwort zur weiteren Suche gegeben. Der Wikipedia-Artikel https://de.wikipedia.org/wiki/Schwellenwertverfahren#Probleme zeigt ja genau das Phänomen auf. Rufus Τ. F. schrieb: > Kann das Tek-Oszi nicht selbst einen > Screenshot auf einem angeschlossenen USB-Stick ablegen, oder ist das so > steinalt, daß das noch mit Disketten arbeitet? Leider nein. Es ist ein TDS-220, für das ich kein RS232-Modul habe. Ich muß also vorerst auf klassische Screenshots zurückgreifen. Und wenn ich schon damit anfange, will ichs auch direkt richtig machen.
Walter T. schrieb: > Was mich allerdings vor Schwierigkeiten stellt, ist einen Schwellwert > für hell und dunkel zu finden. Man sieht es dem Bild nicht direkt an, > aber oben links ist es weitaus dunkler als im Rest, so daß ein > einheitlicher Schwellwertwert über die ganze Bildschirmfläche zu > fehlerhaften hellen/dunklen Pixeln führt. Zur Kalibrierung je ein Weiß- und ein Schwarzbild (ganzer Bildschirm Weiß bzw. Schwarz) erzeugen, und dann die Korrekturwerte für jedes Pixel berechnen. Das sollte mit OpenCV (oder Matlab) und etwa 10-20Zeilen Code zu erledigen sein. Das ganze ist eine einfache, lineare Interpollation.
Schreiber schrieb: > Zur Kalibrierung je ein Weiß- und ein Schwarzbild (ganzer Bildschirm > Weiß bzw. Schwarz) erzeugen Wenn das ein TFT-Display ist, mag das gehen, aber wenn das noch ein STN-Display ist (wir erinnern uns: träge graue Matschdisplays), dann geht das in die Hose, weil die erreichbaren Kontrastwerte abhängig vom Bildschirminhalt waren. Das Bild da oben sieht für ein STN-Display zwar verdammt gut aus, aber eben nicht so gut, wie es ein TFT-Display hinbekommen sollte, zumal monochrome TFT-Displays extrem selten sind (es gab wohl mal ein PowerBook von Apple, noch in der 68k-Zeit, das so etwas hatte).
Moinsen, man bekommt auch aus obigem JPEG durchaus was hin, bin mal mit Corel Paint Shop Pro X7 drauf losgegangen. Also zuerst die Perspektivische Entzerrung der Aufnahme und dann einen exakten Beschnitt auf das aktive Displayfenster. Der Trick mit dem Schwellwert ist: vorher den Lokalkontrast steigern. Habe nur ein paar Mal einen Hochpaßfilter drüberlaufen lassen, Aperturgröße zwischen 2 bis 8 Pixeln und dann läßt sich eine Gradationskurve anwenden, die den Hintergrund komplett weiß macht. Dann kommt der eigentliche Trick: Da das Display Format beim Tek 220 bekannt ist (320 x 240 Pixel) dann das Bild per Größenänderung ohne Interpolation auf dieses Format verkleinern. Wenn der Beschnitt zuvor paßte, ist das Ergebnis jetzt schon ziemlich gut, nur daß die dunklen Pixel noch verschiedene Grautöne haben und nicht schwarz sind. Jetzt haben wir ein Bild in Originalauflösung, und können im letzten Schritt dann einen Schwellwert anwenden, so daß als Ergebnis ein Bitmap mit einem Bit pro Pixel herauskommt. Ergebnis siehe angehängtes Bild oben. Was mir nicht gelungen ist, ist das Erhalten der Graustufen in der Darstellung des Meßrasters. Aufgrund der Hochpaßfilterung wurden die Einzelpixel des Rasters direkt schwarz. Dafür war der Tonwertbereich des Ausgangsbildes dann doch zu wenig eindeutig. Gruß, Thorsten
Walter T. schrieb: > ab und an fallen bei mir Bildschirmfotos von Geräten mit LCD an. > Beispielhaft habe ich mal so ein Foto (noch ohne Trapez-Entzerrung) > angehängt. Das Foto hat die vielfache Auflösung des LCDs (das Bild im > Anhang ist verkleinert), also sollte sich das Monochrom-Bild in > Originalauflösung problemlos rekonstruieren lassen. Ich habe keinen Lösungsvorschlag, aber ich bewundere das Problem. Warum ist es Dir wichtig, dass der Screenshot als Monochrom-Bitmap vorliegt? Auf dem Ausgangsfoto ist doch alles festgehalten. Grüße Richard
Thosch schrieb: > Der Trick mit dem Schwellwert ist: vorher den Lokalkontrast steigern. > Habe nur ein paar Mal einen Hochpaßfilter drüberlaufen lassen, > Aperturgröße zwischen 2 bis 8 Pixeln und dann läßt sich eine > Gradationskurve anwenden, die den Hintergrund komplett weiß macht. Das leuchtet mir jetz nicht ganz ein. Wie geht das genau?
So, mit ein büschen Handarbeit bekommt man dann auch das "Original" hin: Also mit Graustufen im Raster. Habe das Bild mit 'ner zweiten Ebene versehen, die Hintere auf Grauwert 160 eingestellt und in der vorderen Ebene alle Pixel vom Meßraster mit Weiß übermalt. Ebenen-Mischmodus auf "dunklere Farbe", dann wird für alle Pixel des Meßrasters das graue Pixel aus der hinteren Ebene genommen... Hier mal als 200% vergrößert, das Originalformat von 320x240 ist ja gar zu klein... Gruß, Thorsten
ich hätte eine Farbpalette erstellt und alles ausser sehr Dunkel in Weiß umgewandelt.. bzw dazu noch Farbreduzierung 16 oder 256 .. das geht auch als script.
der Unbekannte schrieb: > ich hätte eine Farbpalette erstellt und alles ausser sehr Dunkel in Weiß > umgewandelt.. Das funktioniert nicht - probier's aus! Entweder geht der Schriftzug "MESSUNG" rechts oben kaputt, oder links oben bleiben dunkle Pixel im Hintergrund. Du mußt erst den Lokalkontrast der Pixel mit einer passenden (Hochpaß-) Filterung erhöhen, dann kann man sowas machen.
Markus W. schrieb: > Das leuchtet mir jetz nicht ganz ein. Wie geht das genau? Ok. Also mal Schritt für Schritt von vorne (siehe angehängte Bilderfolge!) 1. Bild perspektivisch korrigiert und beschnitten (Tek220_per.jpg) 2. Noisereduction entfernt Fliegengitter (Tek220_per_nr.jpg) 3. Hochpaßfilter: 4 Pixel Apertur, 100% Stärke, Hartes Licht (Tek220_per_nr_hp.jpg) 4. Bildgröße auf 320x240 geändert, Methode gewichteter Durchschnitt (Tek220_per_nr_hp_rs.jpg) 5. Geschärft mit "Unscharf maskieren" Radius 0,5; Stärke 200%; Diff 0 (Tek220_per_nr_hp_rs_usm.jpg) 6. Schwellenwert auf 70 (Helligkeitswert) angewendet (Tek220_per_nr_hp_rs_usm_thr.png) 7. Das Ganze auf 200% hochskaliert (Tek220_200%.png) Die Schärfungsparameter habe ich jeweils empirisch ermittelt, also einfach ausprobiert, wieviel Schärfung man braucht, damit man eine saubere Schwelle zwischen Schwarzen und weißen Pixeln definieren kann. Für diese Bilderreihe habe ich die gesamte Bearbeitung nochmals nachvollzogen und in einzelnen Schritten andere Mittel verwendet, als beim ersten Anlauf. (z.B. Unscharf maskieren in Schritt 6. statt mehrmaligen Hochpaßschärfens) Ich hoffe, daß anhand der Bilder die Schritte nachvollziehbar sind. Das Wichtigste ist, daß man bei der Perspektivkorrektur und beim anschließenden Zuschneiden sauber arbeitet, sonst klappt der Verkleinerungsschritt nicht. Viel Spaß beim Nachbasteln. ;-) Gruß, Thorsten
Wenn ich mal unterstelle, dass die Pixel wirklich nur die Zustände hell (wie auch immer) und dunkel (dito.) annehmen können, so sollte es doch möglich eine Flächenreferenz zu erstellen. An einer solchen Vergleichsreferenz sollte es möglich sein die zwei Zustände zu erkennen. Natürlich hat diese, über die Fläche gesehen, keine konstante 50%-Helligkeit. Wichtig hierfür sind nur die folgenden Parameter bzw. Bedingungen: 1. Keiner fummelt am Helligkeits- und Kontrastregler rum. 2. Die aufnehmende Kamera sollte immer die gleiche Position haben. 3. Die Kamera sollte immer die gleiche Empfindlichkeit haben. 4. Streulicht muss draußen bleiben. Alternativ muss eine Möglichkeit geschaffen werden das "Referenzbild" möglichst einfach zu erstellen. Das Bild scheint recht Grobpixlig zu sein. Dies lässt die großzügige Möglichkeit, in Verbindung mit den heute üblichen Auflösungen, zu Interpolieren.
Ich würde das Bild mal kopieren und einen fetten Tiefpass (7x7) oder Median drüber und dieses gefilterte Bild würde ich dann vom Orginal Bild abziehen. Dann sollte eigentlich deine Threshold besser drüberlaufen. Just a idea.
Walter T. schrieb: > Man sieht es dem Bild nicht direkt an, > aber oben links ist es weitaus dunkler als im Rest Das ist doch eine Schwäche der Aufnahmetechnik, die man erst mal beseitigen sollte, oder ist der Bildschirm schon so kaputt? Oszi-Kameras gab es schon vor Jahrzehnten, dazu wurde i.A. ein Tubus der passenden Länge aufgesetzt, um Fremdlicht auszuschliessen. Ich gehe davon aus, dass man mit so einem Tubus und einer billigen Digitalkamera so einwandfreie Screenshots machen kann, dass sich jegliche Diskussion über Schwellwerte und Filter erübrigt. Fehler sollte man immer an der Wurzel beseitigen. Georg
Thosch schrieb: > Markus W. schrieb: >> Das leuchtet mir jetz nicht ganz ein. Wie geht das genau? > Ok. Also mal Schritt für Schritt von vorne (siehe angehängte > Bilderfolge!) > .... Sehr schöne Lösung gefällt mir. Eine paar Fragen/Anmerkungen dazu. Hat es einen bestimmten Grund warum du nach dem 2. Schritt weiterhin mit einem Farbbild arbeitest? Ich habe das Gefühl, dass die Farbinformationen nicht benötigt werden und man das ganze in ein Graustufenbild wandeln könnte. Durch die Reduzierung auf einen Kanal verringert man den Rechenaufwand etwas und evtl. hat es noch andere positive Effekte. Welches Schärfungsverfahren wird da angewandt? Mich wundert die Angabe der Apertur von 4Px. Ich denke bei Schärfung beispielsweise an lineare Faltungsmatrizen und einer Laplace Gewichtung. Also stark negative gewichtet im Zentrum und gering positiv gewichtet am Rand. Diese Filtermatrizen haben aber immer eine ungerade meist quadratische Matrixgröße. Also 3x3, 5x5, 7x7 ...... Das sind so die Sachen die mir aufgefallen sind aber wie gesagt schönes Verfahren und gute Ergebnisse. Grüße MT
Georg schrieb: > Das ist doch eine Schwäche der Aufnahmetechnik, die man erst mal > beseitigen sollte, oder ist der Bildschirm schon so kaputt? > [...] > Fehler sollte man immer an der > Wurzel beseitigen. Das Oszi-Bild steht exemplarisch für LCD-Bilder. Ein LCD ist kein Röhrengerät: Beim Röhrengerät wird das Bild erst in der Digitalkamera gerastert, während der Strahl noch völlig analog malt. Und an den Stellen, an denen der Strahl nicht malt, hat der Hintergrund überall dieselbe Farbe. Etwas madgig wird das Bild nur zwischen den Stellen, wo Text dargestellt wird. Geht bei der analogen Aufnahme Bildinhalt verloren, ist er weg. Beim LCD ist das Bild ist schon von sich aus gerastert. Die Zeilen und Spalten unterscheiden sich in der Helligkeit, je nachdem wieviele Pixel darin gesetzt sind. Deswegen würde es auch nicht nützen, ein weißes und dunkles Referenzbild zu haben. Darüberhinaus in das Bild aber auch schon völlig digital. Solange ich jedem Pixel richtig als weiß/schwarz identifizieren kann, kann keinerlei Information durch ein irgendwie schlechtes Foto verlorengehen - lediglich der Aufwand für die Rekonstruktion steigt. Aber hier habe ich die Freiheit, zwischen dem Aufwand bei der Aufnahme und dem Aufwand in der Nachbearbeitung zu wählen. Tosch hat die passende Rekonstruktion dankenswerterweise schon völlig fertig ausgeknobelt - das, was ich am Ende erreichen wollte. Meine ursprünglichen Überlegungen gingen auch erst in die Richtung, erst eine Bitmap für den Threshold-Verlauf zu gewinnen, aber bei seiner Methode sprechen die Ergebnisse schon für sich selbst! Corel Photo Paint hat die meisten genannten Optionen nicht, aber in Gimp läßt sich das 1:1 umsetzen: 1. Hilfslinien einfügen (0H, 0V, 960V, 720H) und dann perpektivisch daran ausrichten, Bild beschneiden 2. Flecken entfernen 3. Schärfen 4. Skalieren (jetzt läßt sich sehen, ob die Ausrichtung so OK war) 5. Nochmal schärfen (unscharf maskieren) 6. Jetzt paßt der Schwellwert Vielen Dank für die Diskussion und natürlich insbesondere Tosch.
ein tipp um Gradienten aus schlechter Beleuchtung auf relativ einfarbigen Flächen aus dem Bild zu bekommen (gut geeignet für fotografierte dokumente oder so): - ebene duplizieren - auf duplizierte Ebene den gaußschen weichzeichner anwenden mit filterbreite in der Größenordnung der halben Bildbreite auswählen (typ auf RLE stellen, sonst rechnet er ewig) - dann mit den Ebenenmodi und der Deckkraft spielen. meist ist Division oder Bildschirm ganz gut bei Division eventuell die Deckkraft etwas reduzieren ein normaler Mittelwertfilter scheint mir dafür besser geeignet zu sein, aber den habe ich im GIMP bisher vergeblich gesucht - zumindest mit frei konfigurierbarer Filterbreite.
:
Bearbeitet durch User
Wie wäre es, das gesamte Bild in einzelne Kacheln aufzuteilen, z.B. 16x16 Pixel und innerhalb dieser jeweils eine dynamische Schwelle für den SW-Umschlag zu berechnen?
Richard H. schrieb: > Warum ist es Dir wichtig, dass der Screenshot als Monochrom-Bitmap > vorliegt? > Auf dem Ausgangsfoto ist doch alles festgehalten. Hallo Walter Tarpan, es würde mich wirklich interessieren, warum die Ausgangsfotos für die Archivierung nicht ausreichen. Vielen Dank Richard
Richard H. schrieb: > [...] warum die Ausgangsfotos für die > Archivierung nicht ausreichen. Wer sagt, daß es nur für die Archivierung ist? Ich mache auch Bilder für meine Website und andere Publikationen.
Walter T. schrieb: > Ich mache auch Bilder für meine Website und andere Publikationen. Danke Walter, das leuchtet mir augenblicklich ein. Grüße Richard
Hier mal mein Versuch ... 1. Bild kopiert und Gaußfilter mit 250 Pixel drüber. 2. Orginal durch gefiltertem Bild dividieren. 3. in sw konvertieren.
Es ist erstaunlich... der Filter "intelligente Unschärfe" (hier getestet in Corel Photo Pain), eingesetzt um die Bildschirm-Streifen zu entfernen, ist durch nichts in Gimp zu ersetzen. Leider hat Corel Photo Paint scheinbar nicht die Perspektiven-Werkzeuge wie Gimp oder Paint Shop Pro. Momentan sieht mein Workflow also aus: Perspektivisch geraderichten in Gimp -> Export als PNG -> "intelligente Unschärfe" in Corel Photo Paint -> Export als PNG -> Hochpaß und Schwellwertbildung in Gimp. Mit dem Ergebnis bin ich allerdings sehr zufrieden. Noch einmal Danke für die Diskussion und vor allem Thosch mit seinem feinen Rezept!
:
Bearbeitet durch User
Walter T. schrieb: > Es ist erstaunlich... der Filter "intelligente Unschärfe" (hier getestet > in Corel Photo Pain), eingesetzt um die Bildschirm-Streifen zu > entfernen, ist durch nichts in Gimp zu ersetzen. entspricht das nicht dem selektivem gaußschem weichzeichner?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.