Forum: FPGA, VHDL & Co. Bayer-Mosaic zu RGB


von Manuel Bruckner (Gast)


Lesenswert?

Hallo Forum,

ich habe mir vor kurzen ein Kameramodul für mein Terasic Board (DE2-70) 
bestellt.
Das Kameramodul liefert (wie ich mit erschrecken festellen musst :-) ) 
keinen RGB-Datenstrom sondern die Daten kommen durch den Bayer-Mosaic 
Filter in dem Format:
[G,00][B,10][G,20][B,30]...
[R,01][G,11][R,21][G,22]...
[G,03]...

Diese würde ich nun gerne in einen RGB-Datenstrom umwandeln.
Ich habe dazu auch schon einige Algorithmen gefunden, aber diese 
brauchen neben den Zeilenzugriff auch einen Spaltenzugriff, also:
R 00 = [R,01]
G 00 = [G,00]
B 00 = [B,10]

In dem Fall würde ich für den Rotanteil des ersten Pixels schon den 
Rotwert aus der nächsten Zeile benötigten.

Ich könnte einen Zeile im internen Speicher ablegen, aber so viel 
Speicher habe ich leider nicht zur Verfügung.

Drum ist meine Frage ob es einen einfacheren Interpolationsalgorithmus 
gibt, der keinen Vorgriff um eine Zeile benötigt?

Die Qualität muss nicht die beste sein, ich möchte nur das 
zwischenspeichern einer ganzen Zeile vermeiden.

Hat schon jemand etwas ähnliches Realisiert oder ist vor dem gleichen 
Problem gestanden?

Bin für jeden Tipp Dankbar!

lg,
Manuel

von Duke Scarring (Gast)


Lesenswert?

Laut

http://de.wikipedia.org/wiki/Bayer-Sensor

wirst Du um einen Zwischenspeicher nicht drumrumkommen. In einer Zeile 
hast Du nur grün/blau oder rot/grün.

Eventuell kannst Du Dir ja von den ungeraden Zeilen nur den Blauanteil 
merken und den mit rot und grün geraden Zeilen zusammenfassen.

Duke

von THe ImAgEr (Gast)


Lesenswert?

Hochwertige Debayer-Algorithmen arbeiten auf einer Fläche von 5x5 
Pixeln. D.h. du benötigst Zugriff auf 5 Zeilen. Das kannst du entweder 
mit BRAMs oder einem externen RAM realisieren.

von Manuel Bruckner (Gast)


Lesenswert?

Vielen Dank für eure Antworten.

Ich habe schon befürchtet das ich um den Zeilenspeicher nicht drum herum 
kommen werde. Ich werde es wohl mit dem Ansatz von Duke versuchen um so 
immerhin die Länge des Speichers um die Hälfte zu reduzieren.

Wiegesagt bei der billigen Kamera reicht eine eher einfache 
Interpolation über eine Zeile sicher aus. Ist ja nicht so das ich mit 
dem zur Verfüugung stehenden Speicher eine andere Wahl hätte ;)

von Roger S. (edge)


Lesenswert?

> Ich könnte einen Zeile im internen Speicher ablegen, aber so viel
> Speicher habe ich leider nicht zur Verfügung.

Was ist denn die Aufloesung deiner Kamera?

> Wiegesagt bei der billigen Kamera reicht eine eher einfache
> Interpolation über eine Zeile sicher aus.

Fuer eine 3 Megapixel Kamera mit 8 Bit Farbtripel braucht es 4 M4K 
Bloecke eines CycloneII um eine Zeile zu speichern.
Dein 2C70 hat 250 davon.

Cheers, Roger

von Tobias (Gast)


Lesenswert?

Hallo,

ich stehe vor einem ähnlichen Problem und würde gern wissen, ob ihr das 
Problem gelöst habt und wie ihr letzten Endes ein RGB-Format aus dem 
Bayer RGB erzeugt habt? Als Info, ich möchte eine kleine Kamera 
entwickeln und habe mir dazu den IBIS5-B-1300 gekauft. Jetzt suche ich 
nach einer Möglichkeit, ein schönes Bild zu erzeugen.
Ich habe jetzt schon einige Seiten durch und wäre gerade auch an einer 
Umsetzung des Algorithmus als Quellcode interessiert, wenn sowas jemand 
von euch hat.

Ich danke euch schon im Voraus und wünsche noch einen schönen Abend!
Tobi

von Bildverarbeiter (Gast)


Lesenswert?

Eine Ent-Bayerung ist ja nicht so schwer. Du musst nur immer 5 Zeilen 
parat haben und dann ein Filter darüber laufen lassen. Das Filter schaut 
in jedem 4er-Böckeh nach den Intensitäten und addiert sie zu 50% für 
grün und 100% für rot und blau. Danach hast Du ein einfaches RGB-Bild.

von Strubi (Gast)


Lesenswert?

Hi,

brauchst du denn wirklich RGB fuer die Bildverarbeitung?
Man kann die bayercodierten Daten naemlich auch per 2x2-Schema direkt in 
planares YUV420-Format umwandeln. Das ist normalerweise das, was JPEG 
bzw. diverse andere Encoder fressen. Ist zwar nicht High-End-Qualitaet, 
aber fuer Bildverarbeitung ok.

Gruesse,

- Strubi

von Edi M. (Gast)


Lesenswert?

Wenn Farbinformationen vorliegen, sind die eigentlich immer irgendwie 
hilfreich für die Bildverarbeitung.

> Danach hast Du ein einfaches RGB-Bild
Ein sehr einfaches. Dann lieber die Zwischeninterpolation /nearest 
neighbour.

von Strubi (Gast)


Lesenswert?

Apropos, falls jemand Konversionsalgorithmen gerne gleich aus der 
Simulation visualisieren möchte, mit GHDL geht das sehr gut.
Siehe auch http://tech.section5.ch/news/?p=130 (englisch kann man ja :-) 
)

Grüsse,

- Strubi

von J. S. (engineer) Benutzerseite


Lesenswert?

>nearest neighbour
Nee, wirklich nicht. Eine quadratische Interpolation, gfs selektiv 
kantenorientiert ist einfach zu implementieren. Dazu kann man das Bild 
noch verrauschen, glätten und dann erneut schärfen.

>hochwertige Debayer-Algorithmen arbeiten auf einer Fläche von 5x5
>Pixeln. D.h. du benötigst Zugriff auf 5 Zeilen.
Wenn man für jedes Pixel eine 5x5 laufen lassen will, muss man von den 4 
möglichen Fällen jeweils 2+2 für die alternierenden Zeilen 
unterscheiden. Um die benötigte Entscheidung bei komplexeren 
Interpolationen zu fällen, ist es nötig, mindestens die komplette 
4er-Zelle zu "sehen". Daher ist es gfs. zweckmäßiger mindestens 6 Zeilen 
zur Verfügung zu haben. Dann kann man auch etwas puffern, die 4 Fälle 
parallel prozessieren und so bei den nachgeschalteten Filtern redundante 
Implementierungen der Terme nutzen. Wenn man noch glätten und schärfen 
möchte, muss man den Betrachtungsradius u.U. auf noch mehr Pixel 
ausdehnen.

>Simulation visualisieren möchte, mit GHDL
Danke für den Tipp! Habe ich noch gar nicht gesehen. Sehr guter Ansatz.

von A. F. (chefdesigner)


Lesenswert?

Wie verbreitet ist das Bayer-Format bei solchen Sensoren?

von Georg A. (Gast)


Lesenswert?

> Wie verbreitet ist das Bayer-Format bei solchen Sensoren?

Entweder monochrom oder Bayer...

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
Noch kein Account? Hier anmelden.