mikrocontroller.net

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


Autor: Manuel Bruckner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: THe ImAgEr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Manuel Bruckner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Roger Steiner (edge)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bildverarbeiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Edi M. (elektromeister)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jürgen S. (engineer) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas Fischer (chefdesigner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie verbreitet ist das Bayer-Format bei solchen Sensoren?

Autor: Georg A. (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
> Wie verbreitet ist das Bayer-Format bei solchen Sensoren?

Entweder monochrom oder Bayer...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.