Entwickler-Ecke

Off Topic - Viele Webcams parallel capturen


Aya - Di 13.04.10 15:40
Titel: Viele Webcams parallel capturen
Hi,

ich habe für ein Projekt etwas verrücktes vor.

Ich möchte von einer Person eine 360° rund um ansicht fotografieren aus verschiedenen höhen.
Also rings rum ca. 15 Bilder im abstand von 24° und das ganze dann noch mal 5 mit einem vertikalen winkel von ca. 20°.

So das ich am ende 75 Bilder habe.

Meine erste Idee war das man da ein gestell baut und halt eine Kamera rum fahren lässt... würde sicher irgendwie funktionieren, allerdings müßte die Person die fotografiert werden soll dafür seeehr lange seeehr still halten..

Also kam ich auf die Idee eine Art Kugel-gestell aus Holz zu bauen, das ganze innen mit weißem stoff auskleiden und kleine löcher für Kameras aussparen. Also würde ich da 75 Webcams dran montieren und könnte 75 Bilder gleichzeitig aufnehmen - zudem hätte ich durch das gestell und den weißen stoff ein perfektes diffuses licht verhältnis im inneren der Kugel.


So, jetzt zu dem Problem..

1) Schafft ein Computer es 75 Webcams zu verwalten...? Bekommt Windows das hin?
Natürlich müßte man die alle via USB-Hub mit eigener strom-zufuhr anschließen.

2) 75 USB Kameras an einem USB Port.... reicht das von der datenübertragung?
Mir geht es zwar nur um ein Foto statt um ein Video, aber das dürfte auch ne ordentliche menge an Daten sein.

Übertragen Webcams das Bild komprimiert oder unkomprimiert?
Bei einer Auflösung von 800x600 wären das dann immerhin:

800 * 600 * 3 bytes * 75 = 108.000.000 Byte = ~102mb


Alternativ könnte man entweder das ganze auf mehrere USB Ports verteilen, aber da ist dann wieder die Frage ob die intern wirklich alle getrennt behandelt werden..

Oder nochmal als alternative das ganze auf 2-3 Rechner aufteilen und die dann Synchronisieren.


Wenn das 1) und 2) kein problem darstellt.. gibt es noch was anderes was ich evtl nicht bedacht habe?

Aya~


platzwart - Di 13.04.10 15:50

Den Preis hast du eventuell nicht bedacht :D Wozu müssen die Bilder denn alle zum exakt gleichen Zeitpunkt aufgenommen werden?


Aya - Di 13.04.10 15:53

user profile iconplatzwart hat folgendes geschrieben Zum zitierten Posting springen:
Den Preis hast du eventuell nicht bedacht :D Wozu müssen die Bilder denn alle zum exakt gleichen Zeitpunkt aufgenommen werden?


Doch den Preis hab ich bedacht :)

Na ja, Zeitgleich... es muß nich auf die millisekunde gleichzeitig sein.. aber es sollten schon sehr schnell geschehen, eben damit die Person nicht ewig lange still halten muß.

Zeitgleich wäre also optimal, innerhalb von 1-2 Sekunden denke ich noch in ordnung.

Aber stimmt schon.. ich könnte zur not immer 10er Päckchen capturen oder so, das sollte ordentlich schnell gehen dann.
Allerdings bleibt die Frage ob der Computer soviele USB Webcams handeln kann..

Aya~


ALF - Di 13.04.10 17:38

Theoretisch ja, praktisch?
Zumal Du ja noch ne Software brauchst die Dir das Capturen abnimmt. Manuell Capturen dürfte wohl nicht gehn, da Du immer nur ein Device, max 4-6, zu gleichen zeit aktivieren kannst ohne das System zu überladen.
Wenn es die Windows-Bordmittel überhaupt zulassen!

Aber hier [http://www.videomonitor.biz/pages/home/home.html] hab ich mal nen Link für Dich, die zumindestens verspricht 36 Cams zu scannen :wink:

Annsonsten kann ich Dir nur viel spass bei dieser Aufgabe wünschen. :D

Gruss ALf


Aya - Di 13.04.10 17:41

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Theoretisch ja, praktisch?
Zumal Du ja noch ne Software brauchst die Dir das Capturen abnimmt. Manuell Capturen dürfte wohl nicht gehn, da Du immer nur ein Device, max 4-6, zu gleichen zeit aktivieren kannst ohne das System zu überladen.
Wenn es die Windows-Bordmittel überhaupt zulassen!

Aber hier [http://www.videomonitor.biz/pages/home/home.html] hab ich mal nen Link für Dich, die zumindestens verspricht 36 Cams zu scannen :wink:

Annsonsten kann ich Dir nur viel spass bei dieser Aufgabe wünschen. :D

Gruss ALf


Also die Software wollte ich selber schreiben... entweder für MacOSX oder eben Windows.

Was meinst du mit "max 4-6 aktivieren"?
Geht generell nicht mehr, oder nur mit den vorhandenen Tools nicht?

Aya~


F34r0fTh3D4rk - Di 13.04.10 17:47

Ich weiß, dass die Bullet-Time Effekte in Matrix so gemacht wurden. Aber so viele Kameras an einen PC zu hängen stelle ich mir (bei Webcams) alleine schon wegen der Stromversorgung schwierig vor.


Aya - Di 13.04.10 17:49

user profile iconF34r0fTh3D4rk hat folgendes geschrieben Zum zitierten Posting springen:
Ich weiß, dass die Bullet-Time Effekte in Matrix so gemacht wurden. Aber so viele Kameras an einen PC zu hängen stelle ich mir (bei Webcams) alleine schon wegen der Stromversorgung schwierig vor.

Stromversorgung ist nich das Problem... ich würde 16er Hubs nehmen die jeweils ein eigenes Netzteil haben.

Bei Matrix allerdings haben sie Fotoapparate benutzt, das macht die Sache etwas leichter... aber 75 Spiegelreflex Kameras.. ne das wird dann doch zu teuer :P


ALF - Di 13.04.10 18:23

user profile iconAya hat folgendes geschrieben Zum zitierten Posting springen:
Was meinst du mit "max 4-6 aktivieren"?
Geht generell nicht mehr, oder nur mit den vorhandenen Tools nicht?

Damit meine ich Windowsbordmittel/tools, bei mehr als 6 fängt's an ruppig zu werden :wink:
Die Teile sind nicht für multicapture ausgelegt.
Aber mit eigener Software sicherlich kein Problem!? Aber 75Cams oho :roll:

Gruss Alf


Webo - Di 13.04.10 18:33

Ich denke die Frage, ob der PC 75 WebCams zu verarbeiten schafft, ist nur zu beantworten wenn es jemand mal ausprobiert hat. Da aber der geringste Teil des Forums dies schon getan hat :), wird wohl Google deine Hilfe bleiben, oder eben der praxisbezogene Feldversuch :twisted:


BenBE - Di 13.04.10 20:18

Also, überschlagen wir einmal:

Wir haben USB 2.0 mit 480MBit/s brutto. Nehmen wir einmal an, wir wollen brauchbare Bilder und nehmen daher HD-Cams mit 1080p (Preis spielt erstmal keine Rolle).

Durch einfaches Rechnen erhält man:
1920px * 1080px * 3 Byte * 75 Cams * 25 Frames * s^-1 = 11664000000 Bytes = 10,86 GB * s^-1.

Vergleichen wir: Ein USB 2.0-Controller bietet 480 MBit/s brutto-Datenrate.

Setzen wir ein:
11664000000 Bytes * s^-1 * 8 Bits * Byte^-1 / (480000000 Bits * s^-1 * Controller^-1) = 194,4 Controller

D.h. Du bräuchtest etwa 200 voll saturierte USB2-Controller allein schon dann, wenn Du KEINERLEI Bandbreitenverluste auf der Controller-Strecke hättest.

Nehmen wir der Fairheit halber USB 3.0, sind es immerhin noch 20 Controller (ohne Protokollverluste!).

Zudem nehmen wir rein hypothetisch einmal an, dass alle Webcams einen vollwertigen, hochqualitativen H.264- oder Ogg/Theora-Encoder haben, der einen Videostream mit 300 KiB * s^-1 erzeugt. Dann verblieben dir dennoch mindestens 5 USB 3.0-Controller, auf die ein Datenstrom von rund 1.5 GB*s^-1 aufgeteilt werden muss.

Mal ganz davon abgesehen, dass deine Filmaufnahmen dann für die Verarbeitung mindestens mit 4 Intel Polaris benötigen, bestünde der andere Teil deines Rechners dann vermutlich aus 24 in RAID0 geschalteten Samsung-SSD-Festplatten.

Sind wir einfach mal ehrlich: Für die freien PCIe x16-Slots auf deinem Mainboard gibt es weit bessere Verwendungen als das Einstecken von USB3-Controller-Karten.

P.S.: Solltest Du diesen Rechner aber dennoch bauen, nehme ich ihn gerne Geschenkt :mrgreen:


Aya - Di 13.04.10 20:27

@BenBE:

1) Ich will kein FullHD, sondern 800x600.
2) Ich will EIN Bild, KEINEN Film.

Aya~


BenBE - Di 13.04.10 21:02

k, dann rechne kurz durch 150, dann sprengst Du aber beim Auslösen der Kameras immer noch kurzzeitig die Kapazität deines USB-Controllers um ein Vielfaches:

800 * 600 * 3 * 75 = 108000000 Bytes

108000000 / 480000000 * 8 = 1,8 Sekunden

D.h. unter idealen Umständen hättest Du zwischen erstem und letztem Bild eine Latenz von rund zwei Sekunden. Bezieht man dann noch die Protokollverluste bei 75 Devices zzgl. den Latenzen über die nötigen Hubs mit ein, dürftest Du nicht unter 10 Sekunden kommen.


Aya - Di 13.04.10 21:05

Mhh... das ganze aber auf z.B. 5 USB Controller verteilt dürfte helfen.

Die frage wäre auch, ob die Kameras das Bild zwischen buffern.. also ob alle gleichzeitig capturen können und dann eben sich ihre zeit für's übertragen nehmen.


Martok - Di 13.04.10 21:22

Mir fällt da jetzt eine Google-Artige Spiegelkonstruktion ein.

Mit ein paar sinnvoll platzierten Ganzkörper-Spiegeln müsste man doch eine Vollständige Abdeckung schon mit weitaus weniger Aufwand hinkriegen. Ich würde mal sagen, 4 Spiegel und 2 Kameras, ein wenig Projektionen umrechnen später dürfte da was sinnvolles rauskommen.

Das mit den Höhen wird komplizierter, dürfte aber auch gehen. Das schreit gradezu nach einer Simulation in $3DModellierProgramm mit Testsubjekt und ein paar Cameras.


Aya - Di 13.04.10 21:28

user profile iconMartok hat folgendes geschrieben Zum zitierten Posting springen:
Mir fällt da jetzt eine Google-Artige Spiegelkonstruktion ein.

Mit ein paar sinnvoll platzierten Ganzkörper-Spiegeln müsste man doch eine Vollständige Abdeckung schon mit weitaus weniger Aufwand hinkriegen. Ich würde mal sagen, 4 Spiegel und 2 Kameras, ein wenig Projektionen umrechnen später dürfte da was sinnvolles rauskommen.

Das mit den Höhen wird komplizierter, dürfte aber auch gehen. Das schreit gradezu nach einer Simulation in $3DModellierProgramm mit Testsubjekt und ein paar Cameras.


Spiegel hatte ich auch schon überlegt... auch nen teleskop arm der sozusagen unter einem ist und drum rum fährt... aber das bedeutet immer das es recht lange dauert bis die Fotoreihe fertig ist, und so lange kann niemand still halten :(


Xion - Di 13.04.10 22:27

Ich hab mal von einem Projekt gehört, der hatte nur eine Kamera auf einen Tisch mit Gegenständen gerichtet und die Software hat die Objekte auf dem Tisch erkannt und er konnte mit nem (digitalen) Auto auf dem Tisch rumfahren und an die Gegenstände fahren. Von daher würde ich sagen, sind 75Kameras doch etwas viel, oder? Mit 6 Kameras (oben/untern/N/S/O/W) sollte ohne aufwändige Software doch auch reichen. :gruebel: