mikrocontroller.net

Forum: FPGA, VHDL & Co. Grauwerte oder Pixelposition


Autor: Bill Lates (Firma: Mann) (billates)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,

ich versuche zwei Kameras anzupassen mit einer 
Kalibration(Kalibrierung). Ich arbeite mit FPGA und ich  frage mich wie 
sollte ich eine Matrix Multiplikation da rechnen.

In meinem Modul ich kann nur auf RGB Werte jedes Pixels zugreifen und 
ich habe die folgende Gleichung gefunden: des(x,y) = M x src(x,y). M st 
die Kalibrattionsmatrix aber was ist des(x,y) und srx(x,y)? Grauwerte 
oder pixelposition?



hat man eine Idee?

Autor: dito (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
x und y sind die Pixelpositionen. Die Funktionen src und des (source 
bzw. destination) entsprechen jeweils dem Grauwert an dieser Postion.

Autor: Bill Lates (Firma: Mann) (billates)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für die Anwort. Nun wollte ich noch mal wissen, ich habe den 
Grauwert eines bildpixels. Ich habe die Kalibration matrix 3x3 (mit open 
cv berechnet), wie soll ich den neuen Pixelwert rechnen?

des(x,y) = 234 x (a,b,c; d,e,f; g,h,i)
des(x,y) -> neuer Grauwert an pos x,y
234 -> alte Grauwert an pos x,y
(a,b,c; d,e,f; g,h,i) entspriht Kalibrationmatrix.

wie soll das gehen?  oder gibt es eine andere Möglichkeit es zu rechnen?

Autor: dito (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst den Src-Koordinatenvektor mit der Kalibrationsmatrix 
multiplizieren und erhälst dann die neue Position. Du setzt du den 
Grauwert hin.

Autor: dito (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es könnte auch durchaus sein, dass man vom Ausgabebild (des) 
zurückrechnet in das Eingabebild (src), dort den entsprechenden Grauwert 
holt und ins Ausgabebild schreibt (also "src" und "des" in der Gleichung 
vertauschen). Weiß jetzt selbst nicht mehr so genau wie das gemacht 
wird. Ist schon ein Weilchen her, dass ich mich damit zuletzt 
beschäftigt habe.

Autor: Harald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube, Du vermischst da was. Grauwerte gelten ja immer für eine 
Farbe, die Korrekturmatrix gilt für alle drei Farben. Die muss also auf 
drei Grauwerte angewendet werden und ergibt dann drei auch Ergebnisse.

Autor: Bill Lates (Firma: Mann) (billates)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo Harald also du meinst:

des(RGB) = Matrix X src(RGB)

da spilen die Pixelpositionen keine Rolle mehr oder?

Autor: Harald Flügel (hfl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch, schon. Die Multiplikation der source-Grauwerte mit der 
Korrekturmatrix muss für jedes einzelne Pixes des Bildes durchgeführt 
werden. Also wenn Du das im FPGA machen willst, dann musst du

- die 3 Grauwerte der Farben aus dem Speicher holen
- die 9 Multiplikationen mit den Matrizenelementen durchführen, am 
besten mit 9 parallel arbeitenden Multiplizierern mit nachgeschalteten 
Summierern
- die 3 Ergebniss-Grauwerte wieder in den Speicher schreiben, an 
gleicher oder anderer Stelle

und das ganze eben durch den ganzen Framebuffer des Bildes. Was Du noch 
nicht gesagt hast, ist ob es nur eine Korrekturmatrix für die ganze 
Kamera gibt oder eine pro Pixel. Das würde die Sache etwas 
verkomplizieren und vor allem mehr Speicherbandbreite erfordern, wäre 
aber auch lösbar.
Möglicherweise kannst du die Korrektur auch machen, bevor das Bild im 
Speicher ist. Wenn das nicht-korrigierte Bild erst gar nicht im Speicher 
steht, muss man es auch nicht erst auslesen.

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.