# Z Wert - 3 Dimensionaler Punkt



## Gedoser2214 (20. Jun 2012)

Hallo,
Wir haben ein Bild von einem Objekt. Außerdem haben wir die x- und y- Koordinaten eines bestimmten Pixels des Bildes. Jetzt brauchen wir noch den z-Wert des Punktes.
Könnt ihr uns weiterhelfen wie wir diesen Wert ermitteln können?

Vielen Dank im Vorraus.

MfG
Gedoser2214

:toll:


----------



## X5-599 (20. Jun 2012)

Dafür müssten wir erstmal wissen was das für ein Objekt bzw Bild ist...


----------



## Gedoser2214 (20. Jun 2012)

X5-599 hat gesagt.:


> Dafür müssten wir erstmal wissen was das für ein Objekt bzw Bild ist...



Im Anhang findest du eines der 360 Bilder.
Vielen Dank für die Hilfe


----------



## SlaterB (20. Jun 2012)

aha, ein Bild in welchem nicht mal ein Mensch irgendetwas, geschweige räumliche Verhältnisse erkennen kann..

allgemein ist das schon schwer und immer eine Interpretation, Bilderkennungssoftware,
mit extrem übersichtlichen Dingen wie





welches zumindest ein Mensch in Sekunden erfassen kann, hätte man schon ein Riesenprojekt, 
dein Bild ist aber nur irre

was genau verstehst du eigentlich unter dem z-Wert?
wenn man in meinem Bild einen Punkt von einer schrägen Kante hat, dann wäre es sicherlich interessant, 
die Höhe im dargestellten Raumsystem zu berechnen, aber auch x/y wäre dort letzlich was anderes,
man muss alle drei Koordinaten im Raumsystem des Bildes neu berechnen

geht es dir vielleicht um ganz was anderes, nur die Helligkeit?


----------



## Gedoser2214 (20. Jun 2012)

Wir möchten anhand des roten Laserstrahls ein 3 dimensionales Modell vom Objekt erstellen.
Deswegen brauchen wir die genauen Positionen des rotesten Pixels.


----------



## SlaterB (20. Jun 2012)

man kann ein Bild als BufferedImage einlesen und dann einen bestimmtes Pixel anschauen (wie im ersten Post genannt) 
oder alle Pixel durchgehen (wie es jetzt eher klingt)

anhand der Farbinformation pro Pixel kann man sicherlich manches herauslesen, Helligkeit, 'Rotigkeit', 
allein Unterschied Rot vs schwarzen/ dunkelroten Hintergrund usw.,
für den Anfang die erhaltenen Werte mit dem Bild vergleichen um zu erkennen was was bedeutet,
etwas Hintergrundtheorie zu Bildern schadet aber auch nicht

---

ich hoffe, allein mit bisher unbekannten Stichwort BufferedImage weiterzuhelfen (Verwendung/ Beispiele kann man nachschlagen),
für genauere Details kann ich mir Hilfe eigentlich nicht anmaßen


----------



## Gedoser2214 (20. Jun 2012)

Die Bilder haben wir schon in BufferedImages umgewandelt und jeweils den "rotesten" Pixel herausgelesen, allerdings nur die x- und y- Koordinate diesen Pixel. Um die Punktwolke (die der nächste Schritt auf dem Weg zum 3D-Modell ist?) erstellen zu können, brauchen wir den z-wert(Tiefe des Punktes?) eben diesen "rotesten" - Punktes


----------



## Marco13 (20. Jun 2012)

So eine Frage hat neulich schon jemand gestellt, und schon da hab' ich gesagt: Das hat's in sich. Sowas wie images to point cloud - Google-Suche liefert einen Haufen wissenschaftlicher Abhandlungen darüber, bereite dich auf viel Arbeit vor.


----------



## SlaterB (20. Jun 2012)

ein flaches Bild kann keine Tiefe haben, schau es dir doch an?
was ein Mensch nicht mit Gehirn schafft, kann ein Computer auch nicht,
vielleicht ist es die Helligkeit, die dir was aussagen soll (im Unterschied zur Helligkeit auf anderen Bildern)

ich weiß nicht was dein Gesamtkonzept ist, möglicherweise helfen weitere der 360 Bilder weiter,
anbei ein Beispiel mit 13 Laserstrahlen auf einmal die alle irgendwo in der Mitte enden, woraus man ablesen kann, dass sich dort ein runder Gegenstand befindet,

so stelle ich mir gewisse Interpretationen aus, mag vielleicht trivial erscheinen,

keine Ahnung ob deine Beschreibungen für andere ausreichend Information zur Beantwortung geben,
keine Ahnung ob ich überhaupt weiterhelfen kann, aber wennn dann braucht es wohl noch mehr Erklärungen


----------



## Gedoser2214 (20. Jun 2012)

Die Aufgabenstellung war, ein 3D Scanner zu programmieren und konstruieren. 
Wir haben eine abgedunkelte Kiste, eine Kamera, ein Linienlaser sowie das Objekt, das vom Laser angestrahlt wird. 
Das Objekt steht auf einem Motor, der sich immer genau um 1 Grad dreht.
Jedes mal, wenn der Motor sich dreht, machen wir ein Bild (also 360 Bilder). 
Anhand der Bilder, wo die Laserlinie draufstrahlt, sollen wir eine .stl datei erstellen. 

Wir haben jetzt den x- und y- Wert der rotesten Punkte eines Bildes.


----------



## SlaterB (20. Jun 2012)

wie unterscheiden sich die Bilder, geht der Laserstrahl unterschiedlich weit bis an den oberen Rand?
dann wäre das für mich die Information, dass der Gegenstand bei dieser Winkelstellung dort endet, vergleiches es mit meinem Bild,
wobei ein runder Gegenstand freilich in Drehung nicht viel bringt,

oder geht der Laserstrahl über die ganze Höhe des Objektes, wie eine Stiftlinie von oben nach unten?
ist die Einbuchung unten passend zum Objekt oder reiner Fehler/ Zufall?
wie sieht das Objekt genau in dieser Stellung in echt aus? dann könnte man gut erkennen welche Information ausgedrückt wird,

kommt der Laserstrahl genau von vorne oder von rechts?, bei rechts wäre die Einbuchtung eine gute Tiefeninformation,
insgesamt kann man an dem Abstand vom rechten Rand des Bildes auf die Tiefe schließen,
je weiter desto tiefer
(bzw. von links genauso, ist das Objekt ein Kegel oder eine 'Vase', die oben weiter wird?)

mit der ständigen Wiederholung 'x- und y- Wert der rotesten Punkte' verwirrst du mich eher,
ohne weitere Information, was das bedeutet,
falls ich nur nerve sag Bescheid, dann bin ich still


----------



## Gedoser2214 (20. Jun 2012)

Beim Objekt handelt es sich um den Läufer(Schachfigur), die "Vertiefung" ist also auch im original vorhanden. Der Laser kommt von rechts,  im 45 Grad Winkel zu Kamera.


----------



## SlaterB (20. Jun 2012)

dann kannst du genau ausrechnen, was wie tief ist,
gehe von unten nach oben die Zeilen durch und suche jeweils den Mittelpunkt, also die ominösen x,y, die du schon hast 

ist das x ganz rechts, dann ist die Tiefe 0, dann befindet sich der Gegenstand hier direkt vor der Kamera/ Laser, 
kommt sicherlich nicht in Frage,
befindet er sich ganz links, wäre das die tiefste zu messende Tiefe, 

stelle einen Testgegenstand mit senkrechter Kante eine bestimmte Strecke entfernt, meinetwegen 20 cm,
das Bild dazu sei

```
------------------
|                |
|                |
|   |            |
|   |            |
|   |            |
|   |            |
------------------
```

dann stelle denselben Gegenstand näher dran, 12 cm,
das Bild dazu sei

```
------------------
|                |
|                |
|          |     |
|          |     |
|          |     |
|          |     |
------------------
```
an dem Abstand der beiden Linien in x-Richtung siehst du, wieviel der Laser bei 8cm-Tiefenunterschied nach links wandert,
(die Entfernung zur Kamera/ zum Laser ist egal, muss nicht gemessen werden, nur der Unterschied zwischen den beiden Bildern, zwischen diesen beiden Posititonen, so genau wie möglich)
zu jedem beliebigen x kannst du nun mit einfachem Dreisatz eine genaue Tiefe in cm ausrechen,
soweit nachvollzogen?

mit kompletten Informationen hätte man das auch gleich als erste Antwort schreiben können 
allein schon was das Bild darstellt wäre sehr hilfreich für den Gesamtaufbau, 
inzwischen glaubte ich auch selbst was zu erkennen, anfangs war es (vorschnell) nur ein roter Blitz


----------



## Marco13 (20. Jun 2012)

Mal nebenbei: Gibt es eine Verbindung zu http://www.java-forum.org/awt-swing-swt/136854-3d-modell.html ?!


----------

