Hallo zusammen.
Für ein Bildverarbeitungsprojekt setzen wir einen BF533Blackfin 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
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.
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.
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.)
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.
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.)
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?
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
@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
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.
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.
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
@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.
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
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.