Reliefkarten in 3D-Objekte umwandeln - Wie???

Begonnen von simml, 16 Mär 2019, 23:09

Vorheriges Thema - Nächstes Thema

simml

Hallo!

Ich würde gerne Relief-Bilder, die gezeichnet sind wie die Relief-Karten im Bayern-Atlas, in 3-Dimensionale Objekte in CAD umwandeln.

Beispiel:
https://geoportal.bayern.de/bayernatlas/?topic=ba&lang=de&bgLayer=atkis&catalogNodes=11,122,12&E=675012.70&N=5262499.68&zoom=11&layers=relief_t

(--> auf "Freizeit in Bayern" klicken, dann "Überlagerungen", Geländerelief, dann kräftig rein zoomen bis rein graue Reliefkarten zu sehen sind.)

An CAD-Programmen stünden mir z.B. Rhino und Grasshopper zur Verfügung. Wär super wenn man das damit machen könnte. Bin aber auch an anderen Lösungen interessiert.

Im Rhino hab ich z.B. schon probiert das Werkzeug "Relief aus Bild" zu verwenden. Damit klappts aber leider nicht, denn dieses Werkzeug wandelt Helligkeitswerte in Höhen und Tiefen um. D. h. alles was dunkel ist, wird tiefer angeordnet, alles was heller ist, wird höher angeordnet. Bei Karten wie im Bayernviewer haben Helligkeitswerte allerdings nichts mit Höhen zu tun, sondern stellen quasi Schatten und Licht bei schräger Beleuchtung dar. Grau bedeutet da also "waagerechte Fläche", weiß bedeutet quasi "nach nord-westen abfallende Fläche" und schwarz "nach süd-osten abfallende Fläche".

Weiß jemand eine Lösung? Freue mich über alle Tips.

Viele Grüße!

Michael Meyer

Hallo simml,

das sind die falschen Daten. Mir fallen zwei Möglichkeiten ein:

A. Du brauchst ein Pixelbild (PNG, BMP,...) bei dem weiße Punkte oben sind und schwarze unten, dann funktioniert der Befehl Relief.
B. Du hast eine 3D Punktewolke, dann kannst Du den Befehl PolygonnetzFüllung verwenden.

Gruß

Michael

simml

Hallo Michael,

danke für Deine schnelle Antwort.

Die Ausgangsdaten kann ich leider nicht Ändern. Es geht darum genau solche Bilder von Reliefs mit schräger Beleuchtung in 3D-Objekte umzuwandeln.

Gerade hab ich mir mal diese Grasshopperlösung angesehen:
https://www.grasshopper3d.com/forum/topics/creating-a-relief-in-a-surface-from-image
Der Effekt ist aber der selbe wie beim Werkzeug "Relief aus Bild" in Rhino.
Ich denke, man könnte mit Grasshopper schon eine Lösung zaubern indem man programmiert daß quasi jeder Pixel im Ausgangsdaten-Bild in Relation zu einem Punkt vorher die Höhe berechnet. Also angenommen der erste Pixel hat einen mittleren Grauton, dann bekommt er z.B. die Höhe 100. Wenn der nächste Pixel heller ist wird von den 100 ein Wert abgezogen, so daß der nächste Punkt vielleicht auf Höhe 95 liegt. Ist der nächste Pixel dunkler wird zu den 100 ein bestimmter Wert, entsprechend des Helligkeitsunterschiedes, addiert. So könnte der nächste Punkt auf der Höhe 110 liegen.

Leider bin ich hier bei der Umsetzung mit Grasshopper wieder mal überfordert. :-(

Michael Meyer

Hallo simml,

das hat nichts mit Grasshopper zu tun, das benutzt auch nur Helligkeitsbilder für die Relief-Erzeugung.

Du brauchst andere Höhenbilder oder besser 3D-Punkte.

Hier Beispiele von funktionierenden Höhenbildern (siehe unten):
http://run.usc.edu/cs420-s14/assignments/assign1/assign1.html

Ich habe als Versuch das Santa Monica Bild aus dem Link in Rhino 6 in ein Polygonnetz mit dem Befehl Relief erzeugt. Unten das Ergebnis.

Gruß

Michael

simml

Ja ich versteh schon. Um die Werkzeuge "Relief aus Bild" oder diese Grasshopper-Programmierung ( https://www.grasshopper3d.com/forum/topics/creating-a-relief-in-a-surface-from-image ) zu verwenden, bräuchte ich Bilder bei denen die Höhe oder Tiefe eines Reliefs einem Helligkeitswert entspricht. Also: Hell ist oben, dunkel ist unten - oder umgekehrt.

Ich suche aber einen Weg, Reliefbilder die schräg beleuchtet sind, in 3D-Objekte umzuwandeln.

Eine meiner Ideen war eben, das mit Grasshopper zu lösen. Ich denke schon, daß es gehen würde. In dem Fall dürfte man nicht die Helligkeitswerte der Pixel im Quell-Bild zur Definition der Höhen verwenden, sondern müßte den Unterschied zweier Pixelhelligkeiten als Quelle dafür nehmen ob eine Höhe ansteigt oder fällt.

Grasshopper könnte dann die Höhen in schräg beleuchteten Bildern genauso erkennen wie das menschliche Auge und Hirn.

(Hintergrund ist der, daß schräg beleuchtete Bilder/Fotos leichter zu erzeugen sind als Bilder/Fotos bei denen die tiefen Stellen dunkler sind als die hohen.)

Michael Meyer


simml

Wenn ich jetzt Grasshopper beherrschen würde, würde ich mitwetten... :-(  ;D

simml

Nur nochmal um Missverständnissen entgegenzuwirken, eine kleine Skizze und die Erklärung dazu:

Auf einem Vorlagenbild ist ein schräg beleuchteter Berg dargestellt (senkrecht von oben betrachtet). Wir (bzw. Grasshopper) betrachten die erste Pixelreihe.

1. Grasshopper erkennt die Helligkeit der jeweiligen Pixel und gibt ihnen einen Wert.

2. Grasshopper vergleicht die Helligkeitswerte der Pixel der Reihe nach mit dem jeweils vorherigen Pixel und stellt fest ob der Pixel heller oder dunkler wurde (Genauer: Um wie viel der Pixel heller oder dunkler wurde).

3. Grasshopper zeichnet eine Kurve entlang der X-Achse. Die Kurve hat so viele Zwischenpunkte wie Pixel auf dem Vorlagenbild vorhanden sind (Genauer: Anzahl der Pixel minus 1).

4. Grasshopper definiert an jedem Zwischenpunkt der Kurve einen Winkel nach der Regel:
heller = steigen
dunkler = sinken
(Genauer: Je größer der Helligkeitsunterschied, desto stärker steigt der Winkel an. Je kleiner der Helligkeitsunterschied, desto stärker sinkt der Winkel)
Und immer bezogen auf den vorherigen Winkel.

So müßte ein CAD-Berg entstehen der mit dem Berg auf dem Vorlagenbild identisch ist.

Grüße,

Simml

simml

Kleine Korrektur zu Punkt 4:

Zitat von: simml in 17 Mär 2019, 02:24

(Genauer: Je größer der Helligkeitsunterschied, desto stärker steigt der Winkel an. Je kleiner der Helligkeitsunterschied, desto stärker sinkt der Winkel)


Müsste heißen:

"(Genauer: Je heller, desto stärker steigt der Winkel an. Je dunkler, desto stärker sinkt der Winkel)"

Sorry!