Forum: Digitale Signalverarbeitung / DSP / Machine Learning Video-RAM nötig?


von Patrick (Gast)


Lesenswert?

Hallo zusammen.

Für ein Bildverarbeitungsprojekt setzen wir einen BF533 Blackfin DSP 
ein. Dabei wird über einen ADV7183 ein analoges Videosignal 
digitalisiert und soll dann im DSP verarbeitet werden.

Meine Frage nun: Wie kann ich abschätzen, ob ein zusätzliches Video-RAM 
benötigt wird? Kann ich mit dem BF533 ganz darauf verzichten, oder 
sollte man allgemein immer Video-RAM für so etwas einsetzen?

Generell geht es um einen Schärfealgorithmus. D.h. aus mehreren Bildern 
soll das schärfste erkannt werden.

Ich hoffe Ihr könnt mir hier weiterhelfen.

Gruss
Patrick

von Patrick (Gast)


Lesenswert?

Weiss niemand Rat?

von Patrick (Gast)


Lesenswert?

Wirklich niemand? Ich werde wohl mal im anderen Bereich fragen.

von Gast (Gast)


Lesenswert?

Nun bin ich kein Experte auf dem Gebiet, aber ich verstehe die Frage 
nicht ganz, so dass Du vielleicht den geplanten Schaltungsaufbau 
praezisieren koenntest. Geht es darum, ob Du am Blackfin noch externen 
Speicher benoetigst?
Moechtest Du den ADV7183 per PPI an den Blackfin anschliessen? Das waere 
nur bequem, der schriebe die Daten dann aber per DMA an eine vorher 
spezifizierte Speicherstelle, so dass Du waehrend der Uebertragung 
keinen Zugriff auf die Daten haettest, sondern erst, wenn sie 
vollstaendig uebertragen sind. In dem Falle waere eine einfache Rechnung 
der benoetigten Speichermenge fuer ein Bild ein gutes 
Entscheidungskriterium fuer die benoetigte Speichermenge (ist, denke 
ich, mit dem internen Speicher nicht zu machen).
Ich betreibe einen Aufbau mit einem Blackfin 532 und externem SDRAM, bei 
der Bilddaten via PPI mit einer Pixelfrequenz von 25 MHz eingelesen und 
in den SDRAM geschrieben werden. Das geht problemlos.

von Patrick (Gast)


Lesenswert?

Danke für Deine Antwort.

Meine Frage zielt dahin, ob ich noch zusätzlichen Speicher benötige, um 
die benötigte Geschwindigkeit zu erreichen. Wir haben uns ein EZ-KIT von 
Analog bestellt, bei dem der ADV7183 per PPI mit dem Blackfin verbunden 
ist.

Verstehe ich das richtig, dass der BF533 während dem Einlesen der 
Videodaten keine Berechnungen daran durchführen könnte. Dann würde es 
eher Sinn machen, die Videodaten vom ADV7183 in einen externen Speicher 
zu schreiben und dann mit dem Blackfin auszulesen? Schreibt dann der 
ADV7183 die Daten selbständig in den Speicher, oder muss das über den 
BF533 erfolgen?

Danke für Deine Hilfe.

von Gast (Gast)


Lesenswert?

Wenn Ihr das EZ-KIT bestellt habt, wird da wohl externer Speicher dabei 
und der ADV7183 ueber den PPI angeschlossen sein.
Nicht der ADV7183 schreibt die Daten sondern der DMA-Controller des 
Blackfin. Das geschiet ohne Zutun und Moeglichkeiten des Zugriffs des 
Prozessorkerns. Man hat also sowieso nur die Moeglichkeit, nachtraeglich 
auf das im Speicher abgelegte Bild zuzugreifen. Auch nehme ich an, dass 
mittlere Bildschaerfe ein globales Merkmal eines Bildes ist (es koennte 
ja durchaus unscharfe und scharfe Bereiche im Bild geben infolge der 
Fokusierung) und dass man Bildschaerfe nur in einer Nachbarschaft ueber 
mehrere Zeilen ermitteln kann, Ihr haettet also wahrscheinlich sowieso 
einen Speicherbedarf, der ueber den internen hinausgeht.
Das mit dem PPI und dem ADV7183 sollte aber super easy sein; das ist 
wirklich bequem geloest im Blackfin. (Unter Umstaenden wird sogar genau 
dafuer Beispielcode mit Visual DSP++ mitgeliefert.)

von Patrick (Gast)


Lesenswert?

OK. Dann warten wir mal, bis das EZ-Kit bei uns eintrifft. Dann können 
wir schon mehr sagen. Falls dazu noch weitere Fragen auftreten sollten, 
werde ich mich wieder melden.

Danke für die Hilfe

Gruss
Patrick

P.S:

Noch ein kleiner Nachtrag zum Zweck unserer Übung. Es geht um ein 
Autofokussier-System, dass auf Grund der Bilddaten die Fokussier-Linsen 
bewegen soll, bis das Bild die maximale Schärfe erreicht. Und die 
Bilddaten stammen von einer Video-Kamera. Dann wird man wahrscheinlich 
mehrere Bilder miteinander vergleichen müssen um eine Änderung der 
Bildschärfe zu erkennen.

von Gast (Gast)


Lesenswert?

Aus reinem Interesse: In welcher Anwendung wollt Ihr denn das 
Autofokus-System verwenden? In vielen Faellen koennte ich mir bei einer 
Schaerfenmaximierung naemlich vorstellen, dass dann auf den 
grossflaechigen Hintergrund fokussiert wird, anstatt auf kleinere 
Objekte im Vordergrund zu fixieren, was vielleicht nicht im Sinne der 
Anwendung ist. Auch weiss ich nicht, ob man die Bilder tatsaechlich 
vollstaendig speichern muss. Ich koennte mir vorstellen, dass man 
Bildschaerfe tatsaechlich absolut quantifizieren kann. Wenngleich ich 
wenig Ahnung auf dem Gebiet habe, koennte ich mir eine Loesung im 
Frequenzbereich vorstellen: Unschaerfe entspricht sicherlich einer 
Tiefpassfilterung, waehrend hohe Kontraste mehr hochfrequente Anteile 
haben. Man koennte also fuer jedes Bild die Energie der hochfrequenten 
Anteile speichern anstatt die vollstaendigen Bildinformationen zu 
behalten. (Ich nehme aber an, dass Euch eher eine Schaerfemessung im 
Bildbereich als im Frequenzbereich vorschwebt.)

von Patrick (Gast)


Lesenswert?

Die Anwendung des Autofokus ist für ein Operationsmikroskop gedacht. 
Dabei wird auch nur ein Ausschnitt aus dem Videobild betrachtet und 
verarbeitet.

Für die Ermittlung der Schärfe gibt es ja viele unterschiedliche 
Algorithmen. Ein Teil unserer Aufgabe besteht auch darin, einen 
geeigneten Algorithmus auszuwählen. Aber die Frequenzermittlung 
(wahrscheinlich mit Fourier) ist bestimmt eine mögliche Variante.

Eine Frage habe ich noch zum ADV7183:
Die Bilddaten werden ja über die 8-bit PPI an den DSP weitergegeben. 
Aber in welcher Form liegen die Daten dann vor? Wie muss ich mir das 
vorstellen?

von Strubi (Gast)


Lesenswert?

Hi Patrick,

guck mal im Blackfin-HardwareManual nach ITU-656 - so kommen die Daten 
rein.
Also eine Marke, Sync-Zeilen, Y/Cb/Cr-Daten - fuer die 
Schaerfe-Erkennung brauchst Du nur den 'Y'-Anteil.
Wuerde das ganze Bild zunaechst mal ins SDRAM einlesen. Wenn sich dann 
der Algorithmus schnell genug erweist, geht's ev. auch ohne externes 
RAM, sofern dein Algorithmus jeweils nur einige (z.b. 3 reichen fuer die 
2. Ableitung :-) ) Zeilen evaluiert.
Mit Pingpong-Buffern schafft man es auch, im L1-SRAM Daten zu 
verarbeiten, waehrend neue eingelesen werden, da der DMA-Bus parallel 
zum Adress/Datenbus verlaeuft. Allerdings muss man die Buffer in 
unterschiedlichen SRAM-Banken ablegen, aber auch dazu verraet das 
HW-manual ein paar Geheimnisse.

Gruss,

- Strubi

von Peter D. (pdiener) Benutzerseite


Lesenswert?

@Strubi:

>fuer die Schaerfe-Erkennung brauchst Du nur den 'Y'-Anteil

Das mag zum Testen schon funktionieren, in der Realität gehen aber auch 
Farbkanten in die Schärfe ein, also wird die Farbinformation sehr wohl 
benötigt. Nimm an, du hast ein Bild mit Farbstreifen, die alle gleich 
hell sind, dann kannst du mit Y allein keine Aussage über die Schärfe 
machen. Unter Kenntnis der Farbrauminformation kann man das schon.

Grüße,

Peter

von Xion (Gast)


Lesenswert?

Auf dem Ez-kit BF533 ist genung Speicher da. Die Frage muss du selber 
beantworten wie viel Rechenzeit brauchst du? und wie viele Bilder oder 
Frames/s und was für eine Auflösung? Falls der Speicher nicht reicht 
kannst du auch über den Expansionstecker Speicher oder zusätzliche 
Schaltungen anschließen. Die Frage muß also nicht heißen brauche eine 
Speicher sondern was will ich genau machen.

von Patrick (Gast)


Lesenswert?

Ziel ist es das nachher auf einer eigenen Hardware laufen zu lassen. Das 
EZ-Kit ist nur zur Entwicklung des Algorithmus gedacht. Zur Entwicklung 
der eigenen Hardware muss ich dann natürlich wissen, ob und wieviel 
Speicher ich brauche. Aber ich denke wir können mehr Aussagen treffen, 
wenn das EZ-Kit erst mal da ist.

von Xion (Gast)


Lesenswert?

wie gesagt über die Extension (Erweiterungsstecker) auf dem untere Seite 
kannst du auch klein Platinchen mit einem Speicher anhänge.

von Lolly (Gast)


Lesenswert?

Hallo Patrick,

sorry für OT, aber manchmal wundere ich mich schon über die 
Vorgehensweise bei der Entwicklung. Wenn es bei mir in der Firma so 
laufen würde, würden wir sehr schnell weg vom Fenster sein.

Was ich meine:
1. man bestellt ein DSP-Kit
2. man fragt nach den Daten des Kits (Speicher...)
3. man fragt nach dem Videostrom-Format
4. Algorithmus muss ausgewählt werden

Fällt Dir da nicht auf, dass die Reihenfolge komplett falsch ist? Man 
macht sich erst Gedanken über das zu verwendete Algo und implementiert 
alles vielleicht mit PC (Matlab, C++, Basic...). Dann werden die 
Anforderungen klar und deutlich festgehalten (so und so viel Speicher, 
so und so viel Zeit pro Frame...). Dann sucht man sich ein DSP-Kit (oder 
eben FPGA, Microcontroller ...) aus.

Hättest Du die Reihenfolge richtig gewählt, würde Dir man auch hier 
sicherlich schneller und kompetenter helfen können :-)

Grüße,
Lolly

von Patrick (Gast)


Lesenswert?

@Lolly
Wer sagt denn, dass das eine Entwicklung für eine Firma ist? Und woher 
willst Du wissen, welche Schritte wir schon gemacht haben oder in 
welcher Reihenfolge wir das noch machen werden? Die Antworten, die 
bisher hier gegeben wurden haben mir schon weitergeholfen. Dein Beitrag 
nützt mir dagegen überhaupt nichts.

von Lolly (Gast)


Lesenswert?

Hast Recht, woher soll ich das wissen? Aber denk mal darüber nach: Du 
stellst eine Frage, nach ein Paar Stunden wirst Du ungeduldig und fragst 
nach, wieso denn keiner antwortet... Und dann erwartest Du, dass die 
Forumteilnehmer, Deine "Hausaufgaben" machen, weil Du vielleicht zu faul 
warst etwas Hirnschmalz darin zu investieren.

Die Problemstellung an sich finde ich sehr interessant und würde gerne 
meinen Senf dazu geben, nur Deine Ungeduld hat mich davon abgehalen. Und 
ich bin mir sicher, dass es vielen so geht.

Dennoch wollte ich Dir "helfen", die Problemstellung besser zu 
definieren.

Grüße,
Lolly

von Patrick (Gast)


Lesenswert?

Ich weiss Deinen Rat zu schätzen. Aber es ging mir nicht darum, dass Ihr 
meine "Hausaufgaben" machen sollt. Ich kenne mich in diesem Gebiet 
nunmal überhaupt nicht aus und dachte, dass hier im Forum bestimmt Leute 
sind, die sich darin auskennen.

Was meine Ungeduld betrifft:

In diesem Forum gibt es sehr viele Threads. Und alle paar Minuten gibt 
es wieder ein paar neue dazu. Weil es dann passieren kann, dass ein 
Thread mal ganz schnell unbeantwortet auf Seite 2 landet, wollte ich das 
verhindern, indem ich ihn mit einem neuen "Beitrag" wieder nach oben 
"gehoben" habe. Aber das sind alles Dinge, die man hier nicht 
diskutieren muss, weil sie absolut nichts mit dem Thema zu tun haben.

Wie bereits gesagt, werde ich gerne wieder auf dieses Forum 
zurückkommen, wenn die ersten konkreten Fragen oder Probleme auftauchen. 
Neben der Einarbeitung ins Thema der Videobildverarbeitung gehört auch 
die Einarbeitung ins Thema DSP dazu. Und deshalb warten wir jetzt auch 
erstmal auf das EZ-Kit.

Vielleicht noch ein Wort zu uns:
Wir sind eine Gruppe von 2 Personen. Die Aufgaben wurden so verteilt, 
dass einer für die Software im DSP (Algorithmus, etc.) und der andere 
(ich) für die Hardware inkl. Anbindung an einen CAN-Bus mittels 
Mikrocontroller verantwortlich ist.

Ein interessantes Projekt, das bestimmt nicht ganz trivial ist. Aber bei 
Fragen werde ich mich einfach nochmal melden.

Danke erstmal für Eure Hilfe.

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.