Wir benutzen für eine Sortieranlage eine Bildsensoren, die farbig sind, statt s/w und daher muss eine Bayerkonversion erfolgen. Mitgelieferte Software ist allerdings derart simpel, das nur schlechte Bild rauskommen. Kennt jemand eine LIB, die das kann? Ich brauche nur die Formeln, den Code bekomme ich schon hin. Falls nichts verfügbar, wie macht man das? Dass ich für die Farben arbeiten muss, ist klar, mir geht es ums Interpolieren. Logisch scheint mir, eine 2D-Kurve über mehrere Pixel zu legen, um die Interpolaionspunkte zu erhalteb. Die Frage wäre, wie weit ich so einen Filter ausdehnen sollte, damit er noch sinnvoll arbeitet?
Entschuldigung; ich habe was verschlungen. Ich wollte schreiben "eine neue Art von Bildsensoren". Außerdem fällt mir noch ein: Die Bayerdaten kommen sequenziell als schwarz, weiss-Muster, ich muss das also zwischenspeichern. Gibt es eine Strategie, wie man das scho gleich mehrfach speichert, um es an verschiedene Prozesse zu senden?
Ich verstehe nur: Bahnhof. Welchen Translator verwendest Du eigentlich? Solltest Du ein nativer Deutschsprachler sein, solltest Du nicht mit Bildern arbeiten, sondern an der Sprache feilen. Übrigens, bei uns sind alle Bildsensoren Industriegrau und einer Alu gebürstet;-)
Bildverarbeiter schrieb: > rauskommen. Kennt jemand eine LIB, die das kann? OpenCV, gstreamer, Cottonpicken, es gibt noch eine Menge andere. Kommt draufan, was du von deinen Bildern erwartest. > Außerdem fällt mir noch ein: > > Die Bayerdaten kommen sequenziell als schwarz, weiss-Muster, ich muss > das also zwischenspeichern. Gibt es eine Strategie, wie man das scho > gleich mehrfach speichert, um es an verschiedene Prozesse zu senden? Macht auf einem Intel kaum Sinn, da nimmst du, wenn's irre schnell gehen soll, lieber die entsprechenden SIMD-Befehle. Was ist denn das für eine Kamera? Typischerweise reicht es, 3 bis 5 Zeilen zwischenzupuffern, bei clever gestrickten Systemen verarbeitet man während des Bildeinzugs. Das hängt aber stark vom eingesetzten Framegrabber ab. Gruss, - Strubi
Ich stochere mal im Nebel, weil mir die Aufgabe bekannt vorkommt: Die Anlage ist aus Fischertechnik, sortiert Smarties und hat seit "neuestem" eine intelligente Kamera? Wenn ja, lass dich nicht erwischen, die Profs und Laborassistenten haben auch Internet und sehen das gar nicht gern. Jetzt mal weniger esoterisch. Geht es um ein Embedded-System oder läuft die Auswertung auf dem PC? Wenn PC, dann nimm etwas von dem bereits genannten. Ansonsten: Das Verfahren nennt sich umgangssprachlich "Debayering" und hier https://en.wikipedia.org/wiki/Demosaicing finden sich unter den Referenzen lauter tolle Links mit Formeln (Nebenbei gestichelt: Der Artikel ist im deutschen Wiki genau einen Link von "Bayer-Sensor" entfernt). Bildverarbeiter schrieb: > "eine neue Art von Bildsensoren". Was soll das sein? Was können die besser? Bitte um Datenblatt, interessiert mich. Bildverarbeiter schrieb: > Die Bayerdaten kommen sequenziell als schwarz, weiss-Muster, ich muss > das also zwischenspeichern. Gibt es eine Strategie, wie man das scho > gleich mehrfach speichert, um es an verschiedene Prozesse zu senden? Du sprichst in Rätseln. Für jede Bildebene (also in deinem Fall RGB/CMY oder was auch immer) einen Puffer - z.B. R,G,B. Und nach Empfang aller Ebenen: C = f(R,G,B), wobei C das farbige Bild und f deine Farbrekonstruktionsfunktion ist. Das für jeden einlaufenden Frame. Wenn Du weitere Hilfe brauchst: Datenblätter aller beteiligten Komponenten und Bilder vom Aufbau posten.
Merke gerade, muss natürlich R,G,B = f(C) heißen, wobei C die Rohdaten in der Reihenfolge des Bayer-Sensors enthält.
Bildverarbeiter schrieb: > Software ist allerdings derart simpel, das nur schlechte Bild(er) > rauskommen. Was heisst denn in dem Zusammenhang "schlecht"? Die Schwierigkeit bei der Bayerthematik ist ja hauptsächlich die, unterhalb der eigenlich definierten Auflösung, die sich durch die Pixelabstände und dem Abtasttheorem ergibt, nach Informationen zu suchen und diese wiederherzustellen und das betrifft überwiegend die Kanten. Es gibt dazu eine Reihe von überlegungen, die man (auch durch die Hinzunahme der Informationen der anderen Farben) die Geometrie schätzen und manuell rekonstruieren kann. Das ist aber alles Fischen im Trüben und erfordert diskrete Berechnungen. Mit einem einzigen Filter läuft es darauf hinaus, daß man sich 3 oder 5 Werte nimmt und eine glättende Kurve durchlegt und dabei Nyqust beachtet. Im einfachsten Fall reichen auxh 2, um zu interpolieren, aber das erzeugt massive Knicke und Artefakte. Bei der Bildverarbeitung kann man zweidimensional denken, was die Ausdehnung in jede Richtung X/Y etwas vermindern hilft. Mit 3 Werten würde man also 6 Pixel für rot und blau - und 3 Pixel für grün in jede Richtung brauchen. Die von mir entwickelten Bayerfilter laufen auf 5 Werten, schließen also bis zu 9 Pixel in jeder Richtung mit ein. Das Filter schaut also auf 81 Werte gleichzeitig und legt eine 2d-Ebene durch - gfs unter Ignorieren von defekten Pixeln. Die Position wird auch gleich mitkorrigiert, damit die Farbbilder zueinander passen. Man errechnet aus jeweils 10x10 pixeln brutto ein echtes 2x2 Farbpixel, dessen wertemäßige Erstreckung 4x4 beträgt. Darauf werden dann Schärfungsfilter angewendet.
:
Bearbeitet durch User
Bildverarbeiter schrieb: > Wir benutzen für eine Sortieranlage eine Bildsensoren, die farbig sind, > statt s/w und daher muss eine Bayerkonversion erfolgen. Mitgelieferte > Software ist allerdings derart simpel, das nur schlechte Bild > rauskommen. > > Logisch scheint mir, eine 2D-Kurve über mehrere Pixel zu > legen, um die Interpolaionspunkte zu erhalteb. Das Stichwort für die google Suche ist demosaicing, damit lassen sich hunderte Dokumente finden bspw: https://courses.cs.washington.edu/courses/cse467/08au/pdfs/lectures/09-Demosaicing.pdf http://tx.technion.ac.il/~rc/Demosaicing_algorithms.pdf http://research.microsoft.com/pubs/102068/demosaicing_icassp04.pdf Ein interesanter Ansatz ist nicht pauschal nach einer "optimalen" Interpolation suchen sondern gezielt den am störenden Fehler - den "Farbsaum" (BTW kombiniert mit "Bayer" auch ein geeignetes Google-Suchwort) - anzugehen. Also Bereiche bei denen dieser Saum besonders störend hervortritt anders zu interpolieren. Das setzte bei den Beispielen mit denen ich mich damals beschäftigte eine Kantendetektion voraus. MfG,
Fpga K. schrieb: > Ein interesanter Ansatz ist nicht pauschal nach einer "optimalen" > Interpolation suchen sondern gezielt den am störenden Fehler - den > "Farbsaum" (BTW kombiniert mit "Bayer" auch ein geeignetes > Google-Suchwort) - anzugehen. Also Bereiche bei denen dieser Saum > besonders störend hervortritt anders zu interpolieren. Das setzte bei > den Beispielen mit denen ich mich damals beschäftigte eine > Kantendetektion voraus. Moin, der Ansatz deucht mich auch recht elegant, allerdings ist es ganz schön knifflig, das nur mit einem kleinen Filterkernel so hinzukriegen, dass lange durchs Bild laufende Kanten (z.B. Richtung 1 Uhr) kein Aliasing zeigen. Aber da es wohl nicht auf dem FPGA laufen muss... Gruss, - Strubi
Fpga K. schrieb: > Ein interesanter Ansatz ist nicht pauschal nach einer "optimalen" > Interpolation suchen sondern gezielt den am störenden Fehler Man muss beides tun, weil der interpolierte / tieffrequente Verlauf des Bildes die Basis für Erkennung der weitläufigen Kante darstellt. Wichtig ist dabei vor allem auch die Behandlung und Lageinterpretation der Farbe. Man kann bei einem weitgehend homogenen Verlauf der Umgebung antizipieren, dass sich a) die Kante im unbekannten Pixel fortsetzt, auch wenn eine oder gfs sogar 2 Farben das NICHT hergeben und b) gerade dort eine Mittelung zu einem sichtbaren Fehler führt.
Bildverarbeiter schrieb: > Wir benutzen für eine Sortieranlage eine Bildsensoren, die farbig sind, > statt s/w und daher muss eine Bayerkonversion erfolgen. Das ist aber auch zu hinterfragen - ob für eine Sortierung also Gruppierung der aufgenommen Bilder nach optischen Eigenschaften eine Bayerkonversion zwingend nötig ist. Eher im Gegenteil, man reduziert das Bild bis die benutzen Klassifikatoren den Bildinhalt bestimmen und führt dann eine Bewertung durch. Bei Kontrolle der Farbe genügt ein Vergleich mit einem Referenzbild (Vergleichsmuster oder auch Farbtafel) ohne Bayerkonversion, bei einer Kontrolle der Muster, Geometrien genügt ein Graustufenbild völlig. Deshalb werden in der Auromatisierung gern Graustufenkameras eingesetzt und das erleichter auch die Downskalierun (Binning) deutlich. Beleuchtung mit "farbigen" Blitzlich kann auch helfen. Ich würde also in die Bayerkonvertierung weniger Aufmerksamkeit widmen sondern die Sortierung an dem nicht interpolierten Bild ausführen, Bayerkonvertierung nur für den BildViewer aktivieren. Außer natürlich man benutz eine "Sortierbibliothek" die zwingend auf "demosaicte" Bilder angewiesen ist. MfG,
Das finde ich einen interessanten Ansatz. Aber wie bekommt man dann die Lage in der Griff? Kleine Verschiebungen unterhalb der Bayer-Dimension führen zu springendem Verhalten. Den Vorteil des Blitzens verstehe ich nicht. Die Farbmaske wird doch ohnehin die Farben trennen und mit Blitz hat man die Farben nur nacheinander.
Mal ein Byaer Bild wie es aus der Bayer-Kamera kommen sollte: http://www.cs.unc.edu/~kewang/13spring/vision/figures/crayons_mosaic.png Markus F. schrieb: > Das finde ich einen interessanten Ansatz. Aber wie bekommt man dann die > Lage in der Griff? Kleine Verschiebungen unterhalb der Bayer-Dimension > führen zu springendem Verhalten. Ich glaube das weniger das springen auftritt als eine Verschiebung. Verschiebungen zu erkennen ist das kleine einmal eins der Bildverarbeitung, das schafft jede optische maus. Ist die verschiebung (und eventuell Skalierung) im Vergleich zum Referenzbild erkannt, wird diese rausgerechnet und dann der eigentliche Sortierungalgo gestartet. Dabei behilft man sich gerne mit passmarken/Druckmarken, wie beispielsweise hier bei PCB's: https://www.dischereit.de/tipps/faq/passermarken-fiducials > Den Vorteil des Blitzens verstehe ich nicht. Die Farbmaske wird doch > ohnehin die Farben trennen und mit Blitz hat man die Farben nur > nacheinander. wenn man statt einmal Weiss mit Bayer; 3 mal rot/grün/blau ohne Bayer blitzt hat man für jedes Pixel die volle Farbinformation, rechnet sich also keine künstlichen Farbsäume durch das demosaicing rein. Ohne Bayer matrix bekommt man auch ein homogenes bild ohne die Pünktchen wie im Bild oben. Diese Pünktchen könnten evtl doch eine Interpolation nötig machen, das hab ich noch nicht ganz durchdacht, aber vielleicht reicht eine Interpolation in der Grauskala. Oft reduziert man die Aufbahme für eine Optische Qualitätskontrolle resp Sortierung noch weiter indem eine Binarisierung durchführt also als auf ein Schwarz/weiss-bild reduziert. ist halt die Frage was man für eine objekttrennung vornehmen will. MfG,
Fpga K. schrieb: > Mal ein Bild wie es aus der Bayer-Kamera kommen sollte: Wenn ich das Bild im Link prozessiere, erhalte ich einen Linienfehler, d.h. ich muss das Bayer-Pattern um eine Zeile nach unten schieben, damit es passt - wieso auch immer. Möglicherweise entsteht der Fehler auch bei mir durch die Konversion, weil mein FPGA ein anderes Format erwartet und da ein falscher offset drin steckt. Das hier käme dann bei einem bilinearen Filter über 3 Pixel hinweg heraus. Das sollte für Objekterkennung reichen, wenn sie mit dem Bayersignal direkt nicht umgehen kann. Einen Versatz muss man dann auch nicht berücksichtigen. Natürlich muss der Filter entsprechend appliziert werden und selber keinen Versatz produzieren. Man kann z.B. nicht einfach das Rot-Bild glätten und dem genau so geglättenten Blau überlagern. Wenn man farbspezifisch sucht, also z.B: mit einer RGB-Maske, kann man das natürlich auch im Nachhinein tun und von den ermittelten Koordinaten jeweils halbe Subpixel weginterpretieren. > wenn man statt einmal Weiss mit Bayer; 3 mal rot/grün/blau ohne Bayer > blitzt hat man für jedes Pixel die volle Farbinformation, rechnet sich > also keine künstlichen Farbsäume durch das demosaicing rein. Ich bin ohnehin nicht sicher, ob die nachträglich hineininterpretierten fehlenden Pixel irgendeine wirklich wichtige Information bieten können, die die Objekterkennung nutzen kann. Das geschieht ja eigentlich nur, um den Betrachter ein feineres Bild zu suggerieren. Wenn man das "ent-Bayern" weglässt, bzw entsprechend farbneutral durchführt, kommen erst gar keine Falschfarben rein, die dann farbspezifische Matcher irritieren könnten. Das Mehrfachblitzen würde in dem Fall auch nicht funktionieren, weil man dann einen echten SW-Sensor mit Vollspektrum OHNE eine Bayerfarbmaske benötigt und wenn man das tut, hätte man auch nur ein Drittel der frame rate. Das ist bei beweglichen Objekten dann schnell der show stopper. Im Gegenteil: Bei solchen Applikationen (besonders in bestimmten Bereichen, auf die ich hier nicht näher eingehen kann) geht man durchaus den gegensätzlichen Weg und verzichtet auf Auflösung, um höhere frame Raten zum erhalten, als sie z.B. bei konventionellem Video (60 Hz) üblich sind. > Ohne Bayer matrix bekommt man auch ein homogenes bild ohne die Pünktchen > wie im Bild oben. Diese Pünktchen könnten evtl doch eine Interpolation > nötig machen, das hab ich noch nicht ganz durchdacht, aber vielleicht > reicht eine Interpolation in der Grauskala. Dann würde man verschiedene Farben zusammenklatschen und Information verlieren. Das ginge nur bei reinen Luminanzmatchern. > ist halt die Frage was man für eine > objekttrennung vornehmen will Beim Sortieren ist die Farbe meist sehr hilfreich, weil man dann z.B. mit verschiedenen Farben aus unterschiedlichen Richtungen belichten kann und so 3D-Strukturen leichter erkennen kann. Erhabene Objektteile werfen dann zwei farbige Schatten und es braucht mitunter nur sehr simple Fragestellungen, um die Lage und Orientierung eines Objekts zu erkennen. Ich denke, das einfachste ist es, man greift sich die Farben parallel und reduziert die Auflösung durch eine saubere down conversion auf die tatsächliche Pixelgröße, die der Farbe entspricht. Dann hat man nur ein Viertel der Rohinformation, fängt sich keine falschen Farben ein und verliert auch nicht wirklich etwas.
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.