Speicherbedarf Pixel vs. Polygon?

Shark88

Mitglied
Hallo zusammen,

ich plane gerade ein Java Programm mit Processing mit Kinect-Unterstützung. Ich habe ich in die Kinect-Integration mittels SimpleOpenNI bereits eingearbeitet und bräuchte einmal ein paar erfahrene Meinungen zu folgender Sachlage:

Als Ausgangsarray habe ich ein Arry mit allen Pixel der Kinectkamera in der Aufläsung 640x480. Dieses Array enthält die Pixelinformationen des Users vor der Kamera. Ich möchte nun diese Information zum einen Speichern um die Bewegungen später wiedergeben zu können, zum anderen wird Text angezeigt, indem der User als farbige Buchstaben hervorgehoben werden soll.
Jetzt stellt sich mir die grundlegende Frage, ob ich die Pixel behalten soll oder ob ich die Silhouette in ein Polygon umwandeln sollte, das ich dann vielleicht effizienter Speichern kann?

Mein Anzeigefenster hat außerdem eine höhere Auflösung, sodass ich die Silhouette noch skalieren müsste, bzw gleiche ich momentan die Pixel ab und kontrolliere an welchen Stellen später ein Buchstabe steht und ändere von diesem die Farbe.

Vielleicht ließe sich das ja geschickter mit Polygonen erledigen?
Hier wird z.b. das ganze mittels Polygonen umgesetzt: Kinect Physics Tutorial for Processing

Mit was sollte ich vor allem in Hinblick auf die Aufzeichnung der Bewegung eher anfangen?

Vielen Dank schonmal für eure Hilfe!
 

Marco13

Top Contributor
Ohne wirklich inhaltlich was dazu sagen zu können: 640x480x4byte = 1.2MB. Selbst wenn es 100 so viel ist, könnte es sein, dass man die Daten nicht mehr im Speicher findet, weil es so wenige sind ;) Was ich sagen will: Die Entscheidung sollte (hier bzw. allgemein bei solchen Größenordnungen) nicht vom Speicherbedarf abhängig gemacht werden, sondern davon, was für den Anwendungsfall das bessere ist.
 
S

Spacerat

Gast
Kann es sein, dass die Farbinformationen in den Pixeln Tiefenangaben des gescannten Körpers darstellen (z.B. rote ganz weit hinten und blaue ganzweit vorne)? Wenn du diese verwirfst, enfällt zukünftig die Möglichkeit, Entfernungen auszuwerten. Wenn die ohnehin nicht wichtig sind, ist's egal, aber wenn, dann mach zumindest ein LPO (Low Polygon Object) draus.
 

Shark88

Mitglied
Vielen Dank für eure Anregungen!

Ich bin in der Sache etwas weitergekommen, sodass zumindest scho einmal die Echtzeitgrafik vernünftig läuft. Ich habe jetzt für jeden User eine eigene Map als Array mit 640x480 Werten. Das Array ist nur mit 0 und 1 gefüllt, an den 1er Stellen ist entsprechend der User. Da auch mehrere User aufgezeichnet werden sollen, habe ich potenziell mehrere solcher Arrays. Bei 25-30 Frames pro Sekunde und 3 Usern fallen da schon eine ganze Menge an Daten an.
Sicherlich gibt es einen effizienteren Weg als jeweils das komplette Array zu speichern. Mit den Pixelangaben komme ich bei der Ausgabe allerdings ganz gut zurecht, sodass ich es nicht erst in ein Polygon umwandeln wollte.

Ich benutze die SimpleOpenNI Libary für Processing, diese kann zwar die Kinect Daten aufzeichnen, allerdings gibt es noch Probleme mit dem abspielen, die .oni Files lassen sich einfach nicht mehr einlesen...

@javaman13 Danke dir für den Link, das schaue ich mir gerne mal an! Englisch ist kein Problem.
 

Shark88

Mitglied
Hat noch jemand eine Idee wie ich die Datenmengen sinnvoll verarbeiten könnte um sie effizient auf die Festplatte zu schreiben?
1,2MB pro Frame und pro User sind doch etwas zu hoch.

@javaman13 Den Code kann ich dir gerne mal zur Verfügung stellen, sobald ich fertig bin.
 
S

Spacerat

Gast
Nimm statt 640 * 480 Bytes für 0 und 1 (boolean) die Klasse BitSet mit einer Kapazität von 640 * 480 Bits. Leider kannst du höchstwahrscheinlich in deinem Fall "BitSet.valueOf(byte[] array)" nicht verwenden, sondern müsstest es per Hand überführen:
Java:
BitSet set = new BitSet(myDataArray.length);
for(int b = 0; b < myDataArray.length; b++) {
  set.set(b, myDataArray[b] != 0);
}
Im übrigen komme ich bei 640 * 480 Byte Daten auf nur mehr 300kB. Verwendest du für diese 0en und 1en auch noch int? Naja, selbst aus diesen macht die Überführung oben nur mehr 38416 Bytes (ca. 37,5kB).
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
TimoN11 Speicherbedarf Java Basics - Anfänger-Themen 12
-horn- Java Speicherbedarf begrenzen? (Nicht Jar) Java Basics - Anfänger-Themen 3
M Moorhuhn Pixel-Aimbot mit Robot Library Java Basics - Anfänger-Themen 12
I Greenscreen, funktioniert nicht zu 100%... nicht alle Pixel werden geändert Java Basics - Anfänger-Themen 1
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
A BufferedImage Pixel Java Basics - Anfänger-Themen 7
S suche nach varible POSITION ... fuer das pixel-maennchen Java Basics - Anfänger-Themen 4
M Einzelne Pixel in einem Bild auslesen und bearbeiten Java Basics - Anfänger-Themen 1
T Java gleichfarbige Pixel vergleichen Java Basics - Anfänger-Themen 5
I Zähler, der erst wieder zählt nachdem Pixel wieder andere Farbe hat Java Basics - Anfänger-Themen 2
B Äußere Pixel auslesen Java Basics - Anfänger-Themen 3
P pixel formel versetztes Schachbrettmuster Java Basics - Anfänger-Themen 2
llabusch Fenster um x Pixel verschieben Java Basics - Anfänger-Themen 4
D Kleinere Positionsangabe als einzelne Pixel bei Image? Java Basics - Anfänger-Themen 28
V Pixel auslesen? Java Basics - Anfänger-Themen 3
L Wieviel Speicher braucht ein Pixel? Java Basics - Anfänger-Themen 14
R Kurze Linien alle x-Pixel Java Basics - Anfänger-Themen 2
O Maus / Pixel Position bei mir und bei anderen. Java Basics - Anfänger-Themen 8
S Pixel auf Screen setzen Java Basics - Anfänger-Themen 4
M einzelne Pixel setzen/auslesen Java Basics - Anfänger-Themen 2
S Pixel in Binärbildern zu Konturen zusammenfassen Java Basics - Anfänger-Themen 10
G Pixel-Abstand im JPanel Java Basics - Anfänger-Themen 11
G Bild einlesen und je Pixel die RGB-Werte ermitteln Java Basics - Anfänger-Themen 3
lin Farbwerte von Pixel Java Basics - Anfänger-Themen 4
T Bilder - Array - Pixel Java Basics - Anfänger-Themen 3
B Objete von Polygon mit TreeSet verwalten Java Basics - Anfänger-Themen 1
I Vererbung Polygon erweitern ? Java Basics - Anfänger-Themen 4
F Polygon vergrößern Java Basics - Anfänger-Themen 8
S Polygon contains - Erläuterung Java Basics - Anfänger-Themen 3
K draw Polyline will nicht wie Polygon Java Basics - Anfänger-Themen 2
M Polygon umkreisen? Java Basics - Anfänger-Themen 47
K Methoden contains()-Methode für Punkt in Polygon Java Basics - Anfänger-Themen 5
R Polygon erweitern Java Basics - Anfänger-Themen 10
M Polygon Punkte im Uhrzeigersinn sortieren Java Basics - Anfänger-Themen 2
G Polygon in Frame zeichnen Java Basics - Anfänger-Themen 3
E Polygon und Polyline Java Basics - Anfänger-Themen 30
K Polygon Java Basics - Anfänger-Themen 14
C Polygon um Figur bestimmen Java Basics - Anfänger-Themen 10
K Polygon in Java3D (Java 3D) zeichnen Java Basics - Anfänger-Themen 4
T Polygon.contains Fehler Java Basics - Anfänger-Themen 2
Rene_Meinhardt Polygon.Contains() funktioniert nicht richtig? Java Basics - Anfänger-Themen 3
0 problem beim Polygon zeichnen Java Basics - Anfänger-Themen 3
G bild in polygon zeichnen Java Basics - Anfänger-Themen 6
G Polygon Java Basics - Anfänger-Themen 7
I drehendes polygon Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben