Java 3D-Bilder

Ok Werdes versuchen danke!
Das hat aber nicht viel mit dem sinussastz zu tun, komisch das mit der Projektleiter diesen"Tipp" gegeben hat
 
Danke das du dir soviel mehr gemacht hast Hancock!
Leider will der Projektleiter das ich das unbedingt über die Winkel Lösse ...
Da stellt sich mit nur die frage wie ich das Phi ( Drehung der Bilder ) in den sinussatz bekomme
 
Zuletzt bearbeitet:
So ich hab's geschafft die z Werte zu berechnen^^ mein nächstes Problem ist jetzt daraus die punktwolke zu erstellen, kann mit jemand da helfen ?
Bzw. ich hab 3 Felder jeweils für die x y in z Werte , ist das Schon die punktwolke? Wenn ja muss i h die ja jeztzt zu Polygonen verbinden, auch das werr ein problem was i h hätte
 
Zuletzt bearbeitet:
lass doch von java an jedem punkt eine kleine kugel oder einen kleinen würfel zeigen
für den anfang ist das auf jeden fall genug.
hierbei mein tipp: teste unbedingt vorher einen einfacheren fall als die kompletten daten zB mit einfachen daten wie "3 punkte die übereinander liegen"
 
Wäre nett, wenn du paar Gedanken posten könntest, wie du es denn mit dem Sinusansatz nun geschafft hast. Wenn ich den Thread schon bis hierhin gelesen hab :D

Vll kannst du aus der Punktwolke die konvexe Hülle berechnen, ich denke dafür existieren sicher einige Algorithmen oder Bibliotheken im Inet. Viel Erfolg weiterhin! ;)
 
Jo hier mal die kurform:

A = x/sin(laserwinkel) x: "X-Wert" des zu berechnenden Punktes
c = m-A m:Mittelpunkt des Objekts
z = c*sin(phi) phi: "drehwinkel" des Objekts (1-360)

Ich hab übrigens mal dreiecke um jeden Punkt der Punktwolke gezeichnet um die Punkte zu kontrollieren , hab mal ein Bild davon in den Anhang gepackt.
Jetzt brauch ich nurnoch einen Algorithmus um die Punkte mit einander zu verbinden.
 

Anhänge

  • Obj.jpeg
    Obj.jpeg
    14,6 KB · Aufrufe: 121
ui glückwunsch erstmal!
ich hätte ehrlich gesagt erwartet dass man das objekt kaum erkennen kann..
wieso isses 90° gedreht?

zum punkte verbinden is sicher konvexe hülle gut

du könntest auch ein voriges "bereinigen" leicht umsetzen was aber relativ viel laufzeit hat. das muss ja aber nur einmal stattfinden
etwas der form
"lösche alle punkte die keinen dichten nachbarn haben" so verschwinden erstmal diese kleinen "fetzen"
hier wäre mein tipp "dicht" nicht mit einer konstanten vorzugeben in der form "alle punkte die nicht mindestens mit abstand 3 einen nachbar haben: löschen" sondern stattdessen statistisch da ranzugehen.
dh du berechnest für die gesamte Punktewolke einmal wie groß die kleinsten abstände zu nachbarn jedes punktes sind und bestimmst für diese menge von zahlen zB mittelwert und standardabweichung. alle punkte die dann zB mehr als 2 standardabweichungen nach oben abweichen werden gelöscht.
der vorteil an so einem statistischen verfahren ist, dass es objekt und auflösungsunabhängig ist. allerdings kann man für einen ersten bereinigungsversuch natürlich auch mit einer konstanten anfangen und die statistische analyse später hinzufügen.

sowas hat schlimme laufzeit aber muss ja nur einmal "offline" erfolgen bevor du die daten überhaupt darstellst und nicht "online" bei jeder bildberechnung.

solche bereinigungsverfahren wie glättungen haben natürlich immer den nachteil, dass sie evtl tatsächlich vorhandene details des objekts löschen - aber ne konvexe hülle sieht bei so kleinen ausreißern sicher ziemlich schlimm aus
 
Zuletzt bearbeitet:
Ich würde versuchen, schon am Ausgangsmaterial was zu bereinigen.

Die Laserlinie ist ja ziemlich dick. Wenn man die durch Bildfilter glätten und schmaler machen kann, ist das schon ein guter Anfang. Die Ränder sind dann nicht mehr so ausgefranst.
Mit einem Kontrastfilter hebst du zB die Laserlinie vor und blendest die anderen Bereiche des Bildes fast aus. Hier mal ein Beispiel mit einem deiner Bilder vom Anfang des Threads:

Original
bild6-png.287400


Kontrastfilter
bild6_kontrast-png.287401


Das könnte man jetzt natürlich weiterbearbeiten, um noch mehr Schärfe reinzubringen oder um die Linie zu verdünnen. zb ein wenig an der Sättigung herumfummeln:
bild6_helligkeit-png.287402


Hier empfiehlt es sich ein wenig über Kantendetektion einzulesen. Der Canny-Algorithmus zB sieht sehr passend aus. Mit dem kannst du immerhin schon einen Meridian herausfinden und als Spline in dein Programm einbauen. Du musst dann später nur noch ein paar Polygonlinien zwischen den Splines einfügen. Mathematisch gesehen, solltest du ihn verstehen können.
 

Anhänge

  • bild6.png
    bild6.png
    45,2 KB · Aufrufe: 178
  • bild6_kontrast.png
    bild6_kontrast.png
    17,8 KB · Aufrufe: 177
  • bild6_helligkeit.png
    bild6_helligkeit.png
    4,5 KB · Aufrufe: 180
Zuletzt bearbeitet:
Zurück
Oben