Fläche aus Messwerten

In diesem Forum Fragen und Diskussionen in Deutsch
Forum rules
Foren-Regeln und hilfreiche Informationen

WICHTIG: Bitte zuerst lesen, bevor Sie posten
User avatar
microelly2
Posts: 4690
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Fläche aus Messwerten

Postby microelly2 » Sun Jun 05, 2016 8:19 pm

bernd wrote:Gibt es denn irgendwo auch etwas um aus so einer "Gartenlandschaft" (einer triangulierten Punktoberfläche) dann in FreeCAD Höhenlinien zu errechnen?
Habe ich schon als matplotlibplot eingebaut. Wenn man die Höhenlinien im FreeCAD braucht, kann man ja Schnitte einfügen,
aber wahrscheinlich kann man sich das auch direkt ausrechnen lassen.

Triangulierte Daten muss ich als Ausgangsmenge testen, sollte aber auch gehen. Für das Interpolierte Modell kann man dann auch die Flächennormalen der Vierecke ausrechnen und damit die Falllinien.
Wenn die Interpolation fein genug ist, kann man die Daten als Image speichern und dann all die schönen Methoden on OpenCV anwenden:
z. B. Watershed (http://cmm.ensmp.fr/~beucher/wtshed.html)
Attachments
bp_013.png
bp_013.png (60.85 KiB) Viewed 1392 times
User avatar
bernd
Posts: 11012
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland

Re: Fläche aus Messwerten

Postby bernd » Mon Jun 06, 2016 5:34 am

microelly2 wrote:
bernd wrote:Gibt es denn irgendwo auch etwas um aus so einer "Gartenlandschaft" (einer triangulierten Punktoberfläche) dann in FreeCAD Höhenlinien zu errechnen?
... Wenn man die Höhenlinien im FreeCAD braucht, kann man ja Schnitte einfügen,
aber wahrscheinlich kann man sich das auch direkt ausrechnen lassen.

Triangulierte Daten muss ich als Ausgangsmenge testen, sollte aber auch gehen. Für das Interpolierte Modell kann man dann auch die Flächennormalen der Vierecke ausrechnen und damit die Falllinien.
Naja Schnitte legen ist eher aufwendig wenn für jeden Höhenmeter eine Höhenlinie her soll. Ich suche einen Algoithmus mit Python, bin bisher aber erfolglos gewesen. Anbei mal so eine kleine Gartenlandschaft.
Attachments
gartenlandschaft.fcstd
(747.27 KiB) Downloaded 42 times
User avatar
microelly2
Posts: 4690
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Fläche aus Messwerten

Postby microelly2 » Mon Jun 06, 2016 6:26 am

bernd wrote: Ich suche einen Algorithmus mit Python, bin bisher aber erfolglos gewesen.
Was genau brauchst du genau?
Im Skript ist die Zeile

rbf = scipy.interpolate.Rbf(x, y, z, function=mode)

Damit wird eine Interpolation der Fläche aus den Datenmengen der gegebenen Punkte points -> x, y, z berechnet.
Die Höhe im konkreten Punkt a,b bekommt man mittels rbf(a,b)

zi = rbf(xi, yi)

Das ist das Array mit den Höhen und zi > 10 ist ein Array von Punkten mit den Werten 1 und 0: 1, wenn die Höhe >10 und 0, wenn die Höhe
kleiner ist.
User avatar
microelly2
Posts: 4690
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Fläche aus Messwerten

Postby microelly2 » Tue Jun 07, 2016 8:06 am

Ich habe die Funktion in die Reconstruction Workbench integriert:
Man kann jetzt die Feinheit des Grids einstellen und als Punktmengen die Ecken einen Körpers (welcher auch einfach nur die Fusion von mehreren Messpfaden sein kann)
Man kann sich auch die Höhenbereiche einzeln parametrisch anzeigen lassen.
viewtopic.php?f=8&t=14595&start=20#p127208
Jochen
Posts: 20
Joined: Fri May 29, 2015 12:25 pm

Re: Fläche aus Messwerten

Postby Jochen » Wed Jun 08, 2016 6:33 pm

@microelly2
ich habe mir das/die Reconstruction Workbench nach .FreeCAD/Mod geklont (.FreeCAD/Mod/reconstruction).

Code: Select all

git clone https://github.com/microelly2/reconstruction.git
Allein - es geht nicht, ich kann in FreeCAD reconstruction nirgends finden.

Ich habe bereits andere Workbenches (Assembly2, Drawing Dimensioning etc.) erfolgreich installiert. Mit reconstruction habe ich keinen Erfolg. Woran mag das liegen?

Gruß,
Jochen
Jochen

--------------------------------------------
Freecad 0.17 daily build
+Assembly2
+Drawing Dimensioning

Ubuntu 16.04 64 bit
User avatar
microelly2
Posts: 4690
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Fläche aus Messwerten

Postby microelly2 » Wed Jun 08, 2016 9:57 pm

Jochen wrote: Ich habe bereits andere Workbenches (Assembly2, Drawing Dimensioning etc.) erfolgreich installiert. Mit reconstruction habe ich keinen Erfolg. Woran mag das liegen?
Ich habe in der reconstruction wb eine menge bibliotheken eingebunden,
wahrscheinlich liegt es daran, dass irgendeine bei dir fehlt.
ich muss da aber jetzt selbst mal sehen, was das alles war.

kannst du mal folgende kommandos im python fenster ausführen und mir sagen,was einen fehler macht:

import scipy
import cv2
import skimage
import matplotlib
import sympy
import pcl

unabhängig davon sollte der skript weiter standalone funktionieren
es fehlt halt die grafische Oberfläche, aber das bekommen wir auch schon hin.
Jochen
Posts: 20
Joined: Fri May 29, 2015 12:25 pm

Re: Fläche aus Messwerten

Postby Jochen » Thu Jun 09, 2016 8:38 am

Hallo Microelly2,
ich habe folgende Pakete nachinstalliert:

scipy

open-cv

skimage und

sympy


matplotlib war schon da

Nur für Pointcloudlibrary habe ich nichts gefunden.

Das hier habe ich gemacht, hat aber nicht geholfen.

Code: Select all

sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all
Ob das geht, weiß ich nicht:
https://stackoverflow.com/questions/370 ... -on-ubuntu



Gruß,
Jochen
Jochen

--------------------------------------------
Freecad 0.17 daily build
+Assembly2
+Drawing Dimensioning

Ubuntu 16.04 64 bit
User avatar
microelly2
Posts: 4690
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Fläche aus Messwerten

Postby microelly2 » Thu Jun 09, 2016 11:07 am

Komisch,

passt der Pfad?
im Mod Verzeichnis ist neben Part, Draft, Assembly2, ... auch das Verzeicchnis reconstruction mit diesem Inhalt?

https://github.com/microelly2/reconstruction

was sagt der Befehl
import reconstruction
Jochen
Posts: 20
Joined: Fri May 29, 2015 12:25 pm

Re: Fläche aus Messwerten

Postby Jochen » Thu Jun 09, 2016 11:22 am

microelly2 wrote:passt der Pfad?
im Mod Verzeichnis ist neben Part, Draft, Assembly2, ... auch das Verzeicchnis reconstruction mit diesem Inhalt?
ja, der passt. Ist alles da.

Code: Select all

jochen@WS-UB-03:~/.FreeCAD/Mod/reconstruction$ pwd
/home/jochen/.FreeCAD/Mod/reconstruction
jochen@WS-UB-03:~/.FreeCAD/Mod/reconstruction$ ll -R
.:
insgesamt 64
drwxrwxr-x 7 jochen jochen  4096 Jun  8 09:16 ./
drwxrwxr-x 9 jochen jochen  4096 Jun  8 09:16 ../
drwxrwxr-x 2 jochen jochen  4096 Jun  8 09:16 examples/
drwxrwxr-x 8 jochen jochen  4096 Jun  8 09:48 .git/
-rw-rw-r-- 1 jochen jochen   774 Jun  8 09:16 .gitignore
drwxrwxr-x 2 jochen jochen  4096 Jun  8 09:16 icons/
-rw-rw-r-- 1 jochen jochen 20013 Jun  8 09:16 InitGui.py
-rw-rw-r-- 1 jochen jochen  7651 Jun  8 09:16 LICENSE
-rw-rw-r-- 1 jochen jochen    64 Jun  8 09:16 README.md
drwxrwxr-x 2 jochen jochen  4096 Jun  8 09:17 reconstruction/
drwxrwxr-x 2 jochen jochen  4096 Jun  8 09:16 testdata/

./examples:
insgesamt 40
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 7 jochen jochen 4096 Jun  8 09:16 ../
-rw-rw-r-- 1 jochen jochen 2233 Jun  8 09:16 example_colorspace.py
-rw-rw-r-- 1 jochen jochen  331 Jun  8 09:16 example_elevationgrid.py
-rw-rw-r-- 1 jochen jochen  799 Jun  8 09:16 example_houghlines.py
-rw-rw-r-- 1 jochen jochen 1106 Jun  8 09:16 example_mask.py
-rw-rw-r-- 1 jochen jochen  648 Jun  8 09:16 example_pathanalyser.py
-rw-rw-r-- 1 jochen jochen  853 Jun  8 09:16 example_rectangle.py
-rw-rw-r-- 1 jochen jochen 1087 Jun  8 09:16 example_skeleton.py
-rw-rw-r-- 1 jochen jochen  780 Jun  8 09:16 example_threshold.py

./.git:
insgesamt 64
drwxrwxr-x 8 jochen jochen 4096 Jun  8 09:48 ./
drwxrwxr-x 7 jochen jochen 4096 Jun  8 09:16 ../
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 branches/
-rw-rw-r-- 1 jochen jochen  273 Jun  8 09:16 config
-rw-rw-r-- 1 jochen jochen   73 Jun  8 09:16 description
-rw-rw-r-- 1 jochen jochen  106 Jun  8 09:48 FETCH_HEAD
-rw-rw-r-- 1 jochen jochen   23 Jun  8 09:16 HEAD
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 hooks/
-rw-rw-r-- 1 jochen jochen 5976 Jun  8 09:16 index
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 info/
drwxrwxr-x 3 jochen jochen 4096 Jun  8 09:16 logs/
drwxrwxr-x 4 jochen jochen 4096 Jun  8 09:16 objects/
-rw-rw-r-- 1 jochen jochen   41 Jun  8 09:48 ORIG_HEAD
-rw-rw-r-- 1 jochen jochen  107 Jun  8 09:16 packed-refs
drwxrwxr-x 5 jochen jochen 4096 Jun  8 09:16 refs/

./.git/branches:
insgesamt 8
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 8 jochen jochen 4096 Jun  8 09:48 ../

./.git/hooks:
insgesamt 48
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 8 jochen jochen 4096 Jun  8 09:48 ../
-rwxrwxr-x 1 jochen jochen  452 Jun  8 09:16 applypatch-msg.sample*
-rwxrwxr-x 1 jochen jochen  896 Jun  8 09:16 commit-msg.sample*
-rwxrwxr-x 1 jochen jochen  189 Jun  8 09:16 post-update.sample*
-rwxrwxr-x 1 jochen jochen  398 Jun  8 09:16 pre-applypatch.sample*
-rwxrwxr-x 1 jochen jochen 1642 Jun  8 09:16 pre-commit.sample*
-rwxrwxr-x 1 jochen jochen 1239 Jun  8 09:16 prepare-commit-msg.sample*
-rwxrwxr-x 1 jochen jochen 1352 Jun  8 09:16 pre-push.sample*
-rwxrwxr-x 1 jochen jochen 4898 Jun  8 09:16 pre-rebase.sample*
-rwxrwxr-x 1 jochen jochen 3611 Jun  8 09:16 update.sample*

./.git/info:
insgesamt 12
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 8 jochen jochen 4096 Jun  8 09:48 ../
-rw-rw-r-- 1 jochen jochen  240 Jun  8 09:16 exclude

./.git/logs:
insgesamt 16
drwxrwxr-x 3 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 8 jochen jochen 4096 Jun  8 09:48 ../
-rw-rw-r-- 1 jochen jochen  192 Jun  8 09:16 HEAD
drwxrwxr-x 4 jochen jochen 4096 Jun  8 09:16 refs/

./.git/logs/refs:
insgesamt 16
drwxrwxr-x 4 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 3 jochen jochen 4096 Jun  8 09:16 ../
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 heads/
drwxrwxr-x 3 jochen jochen 4096 Jun  8 09:16 remotes/

./.git/logs/refs/heads:
insgesamt 12
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 4 jochen jochen 4096 Jun  8 09:16 ../
-rw-rw-r-- 1 jochen jochen  192 Jun  8 09:16 master

./.git/logs/refs/remotes:
insgesamt 12
drwxrwxr-x 3 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 4 jochen jochen 4096 Jun  8 09:16 ../
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 origin/

./.git/logs/refs/remotes/origin:
insgesamt 12
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 3 jochen jochen 4096 Jun  8 09:16 ../
-rw-rw-r-- 1 jochen jochen  192 Jun  8 09:16 HEAD

./.git/objects:
insgesamt 16
drwxrwxr-x 4 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 8 jochen jochen 4096 Jun  8 09:48 ../
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 info/
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 pack/

./.git/objects/info:
insgesamt 8
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 4 jochen jochen 4096 Jun  8 09:16 ../

./.git/objects/pack:
insgesamt 5548
drwxrwxr-x 2 jochen jochen    4096 Jun  8 09:16 ./
drwxrwxr-x 4 jochen jochen    4096 Jun  8 09:16 ../
-r--r--r-- 1 jochen jochen    5888 Jun  8 09:16 pack-2905c31639b0bdf14ffee867d5da1befefa8fd3e.idx
-r--r--r-- 1 jochen jochen 5664277 Jun  8 09:16 pack-2905c31639b0bdf14ffee867d5da1befefa8fd3e.pack

./.git/refs:
insgesamt 20
drwxrwxr-x 5 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 8 jochen jochen 4096 Jun  8 09:48 ../
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 heads/
drwxrwxr-x 3 jochen jochen 4096 Jun  8 09:16 remotes/
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 tags/

./.git/refs/heads:
insgesamt 12
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 5 jochen jochen 4096 Jun  8 09:16 ../
-rw-rw-r-- 1 jochen jochen   41 Jun  8 09:16 master

./.git/refs/remotes:
insgesamt 12
drwxrwxr-x 3 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 5 jochen jochen 4096 Jun  8 09:16 ../
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 origin/

./.git/refs/remotes/origin:
insgesamt 12
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 3 jochen jochen 4096 Jun  8 09:16 ../
-rw-rw-r-- 1 jochen jochen   32 Jun  8 09:16 HEAD

./.git/refs/tags:
insgesamt 8
drwxrwxr-x 2 jochen jochen 4096 Jun  8 09:16 ./
drwxrwxr-x 5 jochen jochen 4096 Jun  8 09:16 ../

./icons:
insgesamt 108
drwxrwxr-x 2 jochen jochen  4096 Jun  8 09:16 ./
drwxrwxr-x 7 jochen jochen  4096 Jun  8 09:16 ../
-rw-rw-r-- 1 jochen jochen  1930 Jun  8 09:16 CannyEdge.svg
-rw-rw-r-- 1 jochen jochen  1930 Jun  8 09:16 Color.svg
-rw-rw-r-- 1 jochen jochen  5053 Jun  8 09:16 freek (Kopie).png
-rw-rw-r-- 1 jochen jochen  5053 Jun  8 09:16 freek.png
-rw-rw-r-- 1 jochen jochen 10802 Jun  8 09:16 HoughLinesPost.png
-rw-rw-r-- 1 jochen jochen  1930 Jun  8 09:16 HoughLinesPost.svg
-rw-rw-r-- 1 jochen jochen  1924 Jun  8 09:16 HoughLines.svg
-rw-rw-r-- 1 jochen jochen  1924 Jun  8 09:16 ImageFile.svg
-rw-rw-r-- 1 jochen jochen  1930 Jun  8 09:16 Invert.svg
-rw-rw-r-- 1 jochen jochen 19675 Jun  8 09:16 std_viewscreenshot.svg
-rw-rw-r-- 1 jochen jochen  1924 Jun  8 09:16 Threshold.svg
-rw-rw-r-- 1 jochen jochen 21437 Jun  8 09:16 web-home.svg

./reconstruction:
insgesamt 264
drwxrwxr-x 2 jochen jochen  4096 Jun  8 09:17 ./
drwxrwxr-x 7 jochen jochen  4096 Jun  8 09:16 ../
-rw-rw-r-- 1 jochen jochen 15448 Jun  8 09:16 configuration.py
-rw-rw-r-- 1 jochen jochen 26240 Jun  8 09:16 create_perspective_tool.py
-rw-rw-r-- 1 jochen jochen 43335 Jun  8 09:16 CV2.py
-rw-rw-r-- 1 jochen jochen  6579 Jun  8 09:16 CV_canny.py
-rw-rw-r-- 1 jochen jochen  7047 Jun  8 09:16 CV_closing.py
-rw-rw-r-- 1 jochen jochen  4808 Jun  8 09:16 CV_combiner.py
-rw-rw-r-- 1 jochen jochen  4491 Jun  8 09:16 CV_cornerharris.py
-rw-rw-r-- 1 jochen jochen  5951 Jun  8 09:16 CV_demo.py
-rw-rw-r-- 1 jochen jochen  7039 Jun  8 09:16 CV_opening.py
-rw-rw-r-- 1 jochen jochen  7318 Jun  8 09:16 CV.py
-rw-rw-r-- 1 jochen jochen  5827 Jun  8 09:16 elevationgrid.py
-rw-rw-r-- 1 jochen jochen  6925 Jun  8 09:16 houghlines.py
-rw-rw-r-- 1 jochen jochen   205 Jun  8 09:16 __init__.py
-rw-rw-r-- 1 jochen jochen   445 Jun  8 09:17 __init__.pyc
-rw-rw-r-- 1 jochen jochen  2023 Jun  8 09:16 makeCylinder.py
-rw-rw-r-- 1 jochen jochen  2155 Jun  8 09:16 makePlane.py
-rw-rw-r-- 1 jochen jochen  3016 Jun  8 09:17 makePlane.pyc
-rw-rw-r-- 1 jochen jochen  1860 Jun  8 09:16 makePrism.py
-rw-rw-r-- 1 jochen jochen  2085 Jun  8 09:16 makeSphere.py
-rw-rw-r-- 1 jochen jochen 15945 Jun  8 09:16 miki.py
-rw-rw-r-- 1 jochen jochen  1191 Jun  8 09:16 mpl.py
-rw-rw-r-- 1 jochen jochen  8116 Jun  8 09:16 pathanalyser.py
-rw-rw-r-- 1 jochen jochen  4547 Jun  8 09:16 pathfinder.py
-rw-rw-r-- 1 jochen jochen 14915 Jun  8 09:16 projectiontools.py
-rw-rw-r-- 1 jochen jochen  1170 Jun  8 09:16 say.py
-rw-rw-r-- 1 jochen jochen  8844 Jun  8 09:16 tools.py

./testdata:
insgesamt 5468
drwxrwxr-x 2 jochen jochen    4096 Jun  8 09:16 ./
drwxrwxr-x 7 jochen jochen    4096 Jun  8 09:16 ../
-rw-rw-r-- 1 jochen jochen    6782 Jun  8 09:16 ba_500.png
-rw-rw-r-- 1 jochen jochen    5623 Jun  8 09:16 bn_475.png
-rw-rw-r-- 1 jochen jochen   74285 Jun  8 09:16 bn_511.png
-rw-rw-r-- 1 jochen jochen    7280 Jun  8 09:16 bn_703.png
-rw-rw-r-- 1 jochen jochen   46440 Jun  8 09:16 bn_717.png
-rw-rw-r-- 1 jochen jochen    7489 Jun  8 09:16 bn_809.png
-rw-rw-r-- 1 jochen jochen 1098069 Jun  8 09:16 bn_900.png
-rw-rw-r-- 1 jochen jochen  879031 Jun  8 09:16 bn_901.png
-rw-rw-r-- 1 jochen jochen  680593 Jun  8 09:16 bn_902.png
-rw-rw-r-- 1 jochen jochen  750383 Jun  8 09:16 bn_903.png
-rw-rw-r-- 1 jochen jochen  666076 Jun  8 09:16 bn_904.png
-rw-rw-r-- 1 jochen jochen 1269683 Jun  8 09:16 bn_917.png
-rw-rw-r-- 1 jochen jochen    5065 Jun  8 09:16 bn_930.png
-rw-rw-r-- 1 jochen jochen   11699 Jun  8 09:16 bn_935.png
-rw-rw-r-- 1 jochen jochen   10280 Jun  8 09:16 bn_949.png
-rw-rw-r-- 1 jochen jochen   11770 Jun  8 09:16 bn_954.png
-rw-rw-r-- 1 jochen jochen    4286 Jun  8 09:16 bn_990.png
-rw-rw-r-- 1 jochen jochen   16626 Jun  8 09:16 quader2.png
jochen@WS-UB-03:~/.FreeCAD/Mod/reconstruction$ 

import reconstruction sagt das hier:

Code: Select all

>>> import reconstruction
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/home/jochen/.FreeCAD/Mod/reconstruction/reconstruction/__init__.py", line 1, in <module>
    import reconstruction.makePlane
  File "/home/jochen/.FreeCAD/Mod/reconstruction/reconstruction/makePlane.py", line 12, in <module>
    from sympy import Point3D,Plane
ImportError: cannot import name Point3D
>>> 
Gruß,
Jochen
Jochen

--------------------------------------------
Freecad 0.17 daily build
+Assembly2
+Drawing Dimensioning

Ubuntu 16.04 64 bit
User avatar
microelly2
Posts: 4690
Joined: Tue Nov 12, 2013 4:06 pm
Contact:

Re: Fläche aus Messwerten

Postby microelly2 » Thu Jun 09, 2016 11:29 am

okay, es liegt am sympy,
ich ändere das noch ab und mache das modul robuster gegen fehlende pakete.