RGB-Farbkorrektur von CCD-Kamerabildern [geschlossen]

Ich habe eine Anwendung entwickelt, die in der Lage ist, direkt mit einer CCD-Kamera (ohne Markenzeichen und obskur) zu kommunizieren, und ich kann das Bild von dieser Kamera erfassen und speichern.

Wenn das Bild zum ersten Mal aufgenommen wird, ist die Byte-Reihenfolge für RGB-Daten sequentiell (RRRGGGBBB), also korrigiere ich dies, indem ich einfach die Werte verschachtele. Dabei werden die Bildfarben invertiert. Um diesen Schritt zu beheben, subtrahiere ich einfach die Pixelwerte von 255.

In diesem Stadium habe ich ein Bild, das dem Gescannten sehr ähnlich ist, mit Ausnahme von RGB-Farbstreifen an den Rändern des Gescannten. Wenn Sie das angehängte Bild vergrößern, werden Sie rote/grüne/blaue Linien an den Rändern der Streifen bemerken; am prominentesten um den 2D-Barcode.

Ergebnis der CCD-Kamera

Ich habe zwei Fragen zu diesem Thema:

  1. Könnte jemand die Ursache dieses Problems näher erläutern? Wäre es ein Fall von chromatischer Aberration? oder etwas anderes, das oft bei CCD-Kameras niedriger Qualität beobachtet wird?
  2. Welche Techniken gibt es zur Bekämpfung dieses Problems (die in Echtzeit auf einer Kiosk-Hardware ausführbar sein sollten.

Bearbeiten 1: Vollbild enthaltenGeben Sie hier die Bildbeschreibung ein

Bearbeiten 2: Einschließlich des ursprünglichen CCD-Bildes vor der Farbinversion.Geben Sie hier die Bildbeschreibung ein

Ist das ein Ausschnitt aus einem größeren Bild? - Dies scheint eine chromatische Aberration zu sein, ja, wenn dies nicht von der Bildmitte, sondern von oben / unten / seitlich ist, ist dies die Ursache.
Sieht aus wie chromatische Aberration, aber ich sehe, dass sie im gesamten Bild vorhanden ist. Wie kommst du an deine Bilder? Benutzt du einen Bayer-Filter? Beim Rekonstruktionsschritt des farbkodierten Bildes kann etwas nicht stimmen. Außerdem nur eine Idee, wenn Sie nur die QR-Codes überprüfen möchten, können Sie die Verwendung von Graustufenbildern in Betracht ziehen.
@DarkcatStudios Ja, das Bild wurde beschnitten. Ich habe das Originalbild in der Bearbeitung angehängt.
@SelimArikan Ich erhalte die RGB-Daten von einer CCD-Kamera über eine USB-Verbindung. Dies geschieht alles programmgesteuert. Es werden keine Filter verwendet, nur 255 Farbwerte, um die richtigen Farben zu erhalten. Der Inhalt der Streifen (nicht vorhanden) ist farbig und diese Information ist erforderlich, wodurch die Verwendung von Graustufen entfällt.
@DarkcatStudios Ist chromatische Aberration ein gelöstes Problem? Gibt es Echtzeitlösungen? oder handelt es sich in der Regel um Schätzungen?
@SelimArikan Entschuldigung, ich dachte, Sie beziehen sich zuerst auf Nachbearbeitungsfilter. Die CCD-Kamera ist völlig markenlos und ich habe keine Informationen über ihr Innenleben, daher kann ich Ihnen nicht sagen, welchen Filter sie verwendet.
Ich sehe, dass Ihr Bild auf 32 Stufen quantisiert ist. Und der Farbton wird nicht nur in Randnähe (Kap. Aberration) vertikal verschoben, sondern im gesamten Bild ( i.imgur.com/Rcna2de.png ). Meiner Meinung nach stimmt etwas mit dem Bildprozessor der Kamera oder noch schlimmer, dem CCD nicht.
@SelimArikan Interessant; Der gesamte Prozessor und die Kamera werden von einer kleinen Firma gebaut, die es nicht mehr gibt. Ich weiß, dass dies in der Vergangenheit von anderen Entwicklern kompensiert wurde (kein Kontakt / kein Quellcode), also muss es eine Technik dafür geben; mein einziges Problem ist, dass ich nicht weiß, was diese Technik wäre.
Dies ist keine CA, dies ist nur das Artefakt der R-, G- und B-Sensoren, die sich nicht denselben physischen Standort teilen. Sie sollten einfach die Position der R-, G- und B-Kanäle anpassen (in Ihrer Bildverarbeitung, dh durch Pixel oder Subpixel verschieben), und Sie erhalten ein zusammengesetztes Bild ohne Fehler.
Diese Frage scheint nicht zum Thema zu gehören, da es um Computervision geht, die wahrscheinlich nicht der Standfotografie entspricht.
Am Anfang hatte das Poster Zweifel an der CCD-Qualität und der chromatischen Aberration, schließlich sind wir zu dem Schluss gekommen, dass das Problem durch den Sensor oder den Rekonstruktionsschritt der Kamera verursacht wird, was beide meiner Meinung nach diese Frage relevant macht.
Entschuldigung, aber ich denke, es ist sehr grenzwertig und leicht auf der falschen Seite. Dies scheint für eine Anwendung zum Scannen von Barcodes zu sein, und ich sehe nicht wirklich, wie dies Fotografen helfen wird.
JoanneC: Ich interessiere mich eigentlich nicht für das Scannen von Barcodes, sondern dafür, festzustellen, was mit der CCD-Kamera nicht stimmt. Ich habe mich beraten lassen, bevor ich hierher kam, und die Frage wurde hierher geleitet, da sie nicht genug mit dem Codieren oder Programmieren zu tun hatte. Glücklicherweise fand ich jemanden, der mir sagen konnte, dass die Probleme mit der Kamera zu einer Lösung führten.

Antworten (1)

Um dies zu beheben, müssen Sie Ihr Bild separat in RGB-Kanäle zerlegen. Die R- und G-Kanäle sind vom B-Kanal jeweils um 5 Pixel vertikal verschoben. Sie müssen diese Kanäle vertikal ausrichten. Zum Beispiel habe ich den Rotkanal um 10 Pixel und den Grünkanal um 5 Pixel vom Blaukanal verschoben.

Hier das Ergebnis mit Vergleich:

Eins verschobenVerschoben

Eins korrigiertKorrigiert

5 Pixelwert ist nur eine Annahme, Sie können dies noch verbessern, indem Sie ein Kalibrierungsblatt verwenden.

Ausgezeichnete Selim. Genau das Wissen, das ich brauchte, danke. Eine kurze Frage; Wenn du schaltest, was bleibt in den Lücken? werden die letzten Pixel an den Anfang gefahren oder durch schwarz/weiß/alpha ersetzt?
Dies ist eigentlich Ihre Präferenz. Ich habe das Bild zugeschnitten, wie Sie im unteren Teil sehen können. Wenn Sie die ursprüngliche Bildgröße beibehalten müssen, können Sie wählen, ob Sie schwarze Pixel an den Hintergrund anpassen möchten.
Ja okay, ich verstehe! Nochmals vielen Dank für Ihre Hilfe und Erklärungen.