• printupy banner2
  • betaprusa-v2-banner1
  • printed-parts banner3
  • foto-1
  • PrintStencil-3ddruckschrift
  • Printupy 3D Drucker Komplettsystem
  • BetaPrusa V2 3D Drucker Bausatz
  • 3D gedruckte Modelle
  • Zweifarbig 3D gedruckte Objekte
  • Lötmasken und Platinen im Kundenauftrag

Start

BAM&DICE - Die Indiegogo Kampagne

Written by BonsaiBrain. Posted in Projekte

Liebe Leser,

das 2PrintBeta-Team ist stolz darauf, auf Indiegogo seine erste Crowdfunding-Kampagne gestartet zu haben.

*** BAM&DICE - The new open standard for Arduino based 3D printers and more. ***

Die flexible Lösung für alle anspruchsvollen Benutzer, die das gewisse Etwas suchen.
Klicken Sie auf den folgenden Link, um mehr zu erfahren: http://igg.me/at/bam-dice-2printbeta

Diese geht um eine universelle und flexible Elektronik, die primär für 3D Drucker geeignet ist, aber auch für den Einsatz in vielen anderen Geräten.

BAMDICE-assembled

Das BAM Shield:

Das BAM Shield ist eine Aufsteckplatine für den beliebten Arduino Mega Controller, der viel in der Makercommunity eingesetzt wird. Das BAM Shield ist dabei vollständig kompatibel zum allseits bekannten RAMPS Board, welches häufig für 3D Drucker eingesetzt wird. Der Vorteil des BAM Shields sind die Stecker für die Treiberplatinen (DICE Boards), basierend auf der kostengünstigen und platzsparenden PCI-E Hardware. Diese bieten mehr Kontakte, somit können die DICEs mehr Strom beziehen und viele verschiedene Funktionen erfüllen. Dadurch dass das Design 100% kompatibel mit den RAMPS für RepRap ist, können alle gängigen 3D-Drucker Firmwares unverändert genutzt werden

Die DICE Module:

Für eine optimale Anordnung stehen die DICE Module aufrecht im BAM Shield. Dies ermöglicht eine äußerst effiziente Kühlung, wenn ein zusätzlicher Lüfter quer dazu angebracht wird. Für alle Module sind die Montagebohrungen an der gleichen Stelle vorgesehen, sodass eine einheitliche Verschaubung mit der umgebenden Mechanik gewährleistet ist.

Das erste DICE, spezialisiert für den 3D-Drucker, wird der DICE-STK sein, ein leistungsstarkes Modul, das bis zu 3 Ampere und bis zu 128-faches Substepping unterstützt.

DICE-STK-top

Das DICE-STK enthält die hoch integrierten Schrittmotor-Treiber-Bausteine STK682-010-E, die 128-faches Substepping unterstützen. Ausserdem enthält das Modul zwei Trimmer für die Strom-Einstellung und Decay-Kontrolle der Motorenentmagnetisierung. Um verschiedene Motoren anzuschliessen benötigen Sie keine speziellen Anschlüsse, da ein praktischer Stecker auf allen DICE Boards integriert ist. Er ermöglicht den direkten Anschluss von starren Leitern und Litzen der Durchmesser AWG18 bis AWG24. Für anspruchsvolle Anwendungen kann am IC ein Kühlkörper montiert werden.

Spezifikation:

Logik Spannung: 5V
Versorgungsspannung : 9V - 35V
Strom: 2.4A RMS (3A max.)
Größe: 51 x 43 mm

Es sind noch viele weitere DICE Boards in Planung, z.B. das DICE-A4988 mit den Allegro A4988 Schrittmotortreiber, das DICE-L6470PD mit einem SPI basiertem Schrittmotortreiber, das DICE-9555 mit einem 16fach Portextender und auch DICEs für Thermocouples und Ventilsteuerungen sind in Planung.

Lizenzen:

Die komplette Hardware wird nach der Kampagne als Open Hardware veröffentlicht und alle Software und Dokumentationen als freier Download verfügbar sein.

Auch planen wir entsprechende Arduino Libraries und Beispiele für alle produzierten DICEs zu erstellen, so dass es einfach sein wird, diese in Ihren eignen Projekten zu verwenden. Durch die Kompatibilität mit dem RAMPS Board stehen auch viele verschiedene 3D Drucker Firmwares zur Verfügung, die ohne Modifikationen verwendet werden können. 

Wie Sie uns Helfen können:

Bitte helfen Sie uns, dieses Projekt zu finanzieren. Wir bieten viele verschiedene Perks auf Indiegogo.com an, von denen die am besten für Sie geeigneten ausgewählt werden können. Selbst kleine Beträge sind gut investiert und werden unser Engagement verstärken. Sie lassen uns damit wissen, dass Sie uns unterstützen und hinter unserem Konzept stehen.

Auch wenn Sie kein Geld ausgeben möchten, können Sie uns dennoch helfen:
Bitte machen Sie Werbung für uns, indem Sie diese Informationen über soziale Netzwerke teilen, mit den Indiegogo Sharing-Tools über uns berichten und Ihren Freunden von unserem Projekt erzählen.

Wenn Sie Fragen, Ideen oder Anregungen haben, zögern Sie nicht, uns zu kontaktieren.

 

Das 2PrintBeta Team

 

Scan your head - Eine Anleitung zur Photogrammetrie

Written by BonsaiBrain. Posted in Projekte

Vor einigen Tagen wurden wir gefragt, ob wir ein 3D Modell einer 2m großen Statue erstellen können. Da wir bisher mit Laserscanner-Technik gearbeitet haben, welche einen definierten Hintergrund benötigt, mussten wir die Anfrage leider verneinen. Der Hintergrund ist lediglich DIN-A3 und damit ist die Größe der Objekte begrenzt. Angespornt, in Zukunft auch 3D Modelle von größeren Objekten anfertigen zu können, machten wir uns auf die Suche nach Möglichkeiten, das bewerkstelligen zu können.

Eine naheliegende Möglichkeit ist die Kinect. Die Kamera besitzt einen 3D Sensor, welcher ohne Hintergrund ohne Weiteres auch große Objekte einscannen kann. Kurzum haben wir eine Kinect Kamera bestellt. Um die Lieferzeit zu überbrücken, wurde weiter gesucht, ob es nicht auch eine Möglichkeit ohne spezielle Kamera gibt. Eine Lösung hierfür ist Photogrammetrie oder auch SFM (structure from movement = Struktur aus Bewegung). Diese Technik erstellt aus Fotos ein 3D Modell, indem in überlappenden Bereichen Übereinstimmungen gesucht werden, über welche anschließend die Kameraposition zurückgerechnet werden kann. Daraus wird dann die 3-Dimensionale Struktur des fotografierten Objektes berechnet. Resultat ist eine Punktwolke (point cloud), welche aus allen übereinstimmenden Punkten der einzelnen Bilder besteht.

Es gibt nicht viele frei erhältliche Software, welche so etwas kann. Ein sehr hilfreicher Blogbeitrag (in englischer Sprache) über dieses Thema kann hier gelesen werden.

Die Software

Die beste Software hierfür ist 123D Catch von Autodesk. Das Programm ist Freeware und die Berechnung erfolgt online. Durch einfaches Anmelden und Hochladen der Bilder wird ein 3D Modell berechnet, welches anschließend wieder heruntergeladen werden kann. Die damit berechneten 3D Modelle sehen sehr sauber aus, da hier hochwertige Software in Kombination mit ausreichender Rechenleistung verwendet wird. Einziges Problem: 123D Catch gibt in den AGBs an, dass die hochgeladenen Daten zur freien Verfügung stehen und von Autodesk verwendet werden können. Will man nun also ein 3D Modell von Daten erstellen, welche nicht veröffentlicht werden sollen, ist 123D Catch nicht das Programm der Wahl.

Alternativen

Eine davon ist VisualSFM, ein sehr komfortables Programm von Changchang Wu, in welchem mit einem grafischen Interface offline ein 3D Modell errechnet wird. Die Berechnung erfolgt ähnlich, wie bei 123D Catch, ist erstaunlich schnell und besitzt ein praktisch nicht erreichbares Limit an Datenmengen, welche eingespeist werden können. Bildberechnungen von 1000 Fotos und mehr sind problemlos möglich.

Die Anwendung ist nicht ganz tivial

VisualSFM erstellt oft aus dem gleichen Datensatz mehrere 3D Modelle, welche manchmal schwer zu vereinen sind. Dies zu vermeiden erfordert jeweils individuell angepasste Einstellungen. Da der Prozess interaktiv gestaltet ist, kann man bei der Erstellung des 3D-Datensatzes die nicht erwünschten Bilder entfernen oder nachträglich einige Fotos hinzufügen, wenn man feststellt, dass für einen Bereich zu wenig Bilddaten bzw. Überlappungen vorhanden sind.

Ein weiteres Programm zur Errechnung von 3D Datensätzen ist die Python Photogrammetry Toolbox. Dieses Programm erzeugt schönere 3D Punktwolken als VisualSFM und arbeitet über zwei Schritte komplett automatisch. Resultat ist ein *.ply File, welches die errechneten Daten enthält. Einige Nachteile besitzt es allerdings: Es arbeitet relativ langsam, der Rechenprozess lässt sich nicht so direkt beeinflussen, wie in VisualSFM und es hat keine so schöne grafische Oberfläche.

Um einen Überblick über die Anwendbarkeit der oben genannten Programme zu bekommen, wurde ein Datensatz mit allen 3 Programmen bearbeitet. Da der leistungsstärkste Computer in unser Firma ein Windows 7 Rechner ist, sind im Folgenden die Links für die Windows 7 64bit Version enthalten. Die selben Programme sind jedoch auch für ältere Windows Versionen, Linux oder auch für Mac verfügbar.

Fotos

Es ist leider nicht ganz egal, welche Fotos man verwendet und auch nicht jedes Objekt eignet sich hierfür. Spiegelungen/Reflektionen auf glänzenden Oberflächen können zu Fehlern beim Bildvergleiche führen. Sehr dunkle oder durchsichtige Objekte lassen sich ebenfalls nicht leicht verarbeiten.

Für die Fotos an sich müssen lediglich einige simple Bedingungen erfüllt sein, welche im Folgenden aufgezählt werden:

  • Beleuchtung: Immer für ausreichende, diffuse Hintergrundbeleuchtung sorgen. Direkte Sonne oder Spots erzeugen Reflektionen. Blitzlicht vermeiden - dadurch entstehen ebenfalls ungewünschte Reflexionen. Am Besten am Tag, draußen im Freien, fotografieren.
  • Hintergrund: Die besten Ergebnisse liefert ein einfacher strukturierter Hintergrund, wie eine Straße, eine Hauswand oder Ähnliches. Bewegungen im Hintergrund sind zu vermeiden. Die Software produziert Fehler, wenn z.B. jemand durch den Hintergrund läuft, oder während der Aufnahmen ein Stuhl oder etwas anderes bewegt wird.
  • Objekt: Das gewählte Objekt sollte frei im Raum stehen, d.h. von allen Seiten zugänglich sein. Es sollte möglich sein, von allen Seiten Fotos zu knipsen. Die Resultate sind wesentlich besser, als wenn man das Objekt dreht und die Kamera immer an der selben Stelle steht.
  • Art der Fotos: Beim Fotografieren möglichst alle Winkel abdecken, um Hinterschnitte oder Löcher gut abbilden zu können, d.h. auch von schräg oben oder unten Fotos knipsen. Dabei immer auf ausreichende Überlappung achten. Für 360° Abbildungen möglichst einmal in gleichem Abstand um das Objekt herumlaufen. Darauf achten, dass die Bilder nicht zufällig von irgendwelchen Positionen geknipst werden. Am Besten systematisch in horizontalen Schlangenlinien einmal - nicht mehrere Male - rund um das Objekt laufen.
  • Nahaufnahme statt Bild aus der Distanz: Das Objekt sollte so viel Platz auf dem Foto, wie nur möglich einnehmen.

Ein guter Fotosatz sieht so aus:

guter datensatz web

Die Fotos sind scharf, gut ausgeleuchtet und ein Großteil des Bildes zeigt das gewünschte Objekt

Ein weniger geeigneter Fotosatz hingegen ist dieser:

schlechter datensatz web

Die Fotos sind teilweise unscharf, schlecht ausgeleuchtet und zeigen zu viel Hintergrund

  • Qualität und Quantität: Möglichst viele Fotos in mäßiger Qualität (3200x2400 Pixel) mit hoher Überlappung ergeben das beste Ergebnis. Ist die Auflösung höher, wächst die Rechenzeit enorm an. VisualSFM z.B. kann mit Bildern höherer Auflösung als 3200 Pixel nicht umgehen, Python begrenzt auf Wunsch automatisch auf 1200 Pixel.

Videos

Für ein Video gelten die selben Kriterien, wie für Fotos. Vorteil von einem Video ist, dass man nicht so viele Bilder knipsen muss, sondern lediglich einmal rund um das gewünschte Objekt herumläuft. Ein Video kann man ganz einfach mit dem VLC-Media-Player in JPG-Dateien umwandeln.

Unter Extras -> Einstellungen klickt man auf "alle" unter "Einstellungen zeigen" und dann auf Video -> Ausgabemodule -> SzenenFilter. Dort gibt man im Verzeichnispfad-Präfix das gewünschte Verzeichnis an, in welchem die Bilder abgespeichert werden sollen. Das Verzeichnis muss schon existieren, da VideoLAN kein neues Verzeichnis erstellt. In Aufnahmeverhältnis gibt man ein, wie viele Bilder der FPS gespeichert werden sollen (steht dort 10, wird jedes 10. Frame gespeichert). Unter Filter gibt man im ersten Eingabefeld das Selbe, wie in Dateinamenpräfix ein (voreingestellt ist "scene") und speichert anschließend. Jetzt kann man das gewünschte Video laden und einfach abspielen.

Wenn die Fotos den Anforderungen entsprechen, so steht der Umrechnung des Datensatzes in ein 3D Modell nichts mehr im Weg.

Autodesk 123D

Die Installation ist sehr simpel. Einfach herunterladen und installieren. Nach Erstellen eines Accounts kann man sich mit der Autodesk ID und einem Passwort Online anmelden. Der Datensatz wird über den Button "123D catch erstellen" eingelesen und hochgeladen.

autodesk upload web

Anschließend hat man die Möglichkeit, sich die Daten zuschicken zu lassen, oder man wartet, bis die Berechnung abgeschlossen ist und das fertige 3D Modell erscheint. Die ganze Prozedur ist sehr einfach, effektiv und mit geringem Zeitaufwand verbunden. Das Ergebnis ist sehr gut. Die Lösungsmethode von Autodesk 123D arbeitet mit patentierten Glättungsverfahren und konvertiert die Punktwolke direkt in ein fertiges 3-Dimensionales Netz (mesh) inklusive Textur.

123D fertiges modell web

Abspeichern im 3ds Format oder Export in unterschiedliche Formate ermöglicht die Nachbearbeitung mit freien Programmen, wie Meshlab und Blender 3D oder kommerziellen Programmen, wie Solidworks und Rhinoceros.

Der STL-Export ergab folgendes Modell:

123D fertiges modell netfabb web

Dieses wurde zunächst mit Meshlab gesäubert und anschließend mit netfabb zugeschnitten:

123D fertiges modell netfabb cleaned web

Abgesehen von der oben erwähnten Problematik mit sensiblen Daten ist 123D Catch ein sehr gutes Programm.

Das mit dem 3D Drucker ausgedruckte Ergebnis kann sich sehen lassen:

holli gedruckt web

VisualSFM

VisualSFM ist Freeware, aber die Installation ist nicht so einfach, wie die von 123D Catch, daher hier ein paar Erläuterungen dazu:

Der Download erfolgt über diese Seite. Die Datei wird einfach mit 7-zip oder einem anderen Entpacker entpackt. Um aus den gewonnenen Punktwolken ein besseres 3D Modell zu erhalten, wird ein weiteres Programm benötigt, welches die Punkte interpoliert und verdichtet (dense point cloud). Das dazu gehörige Dichterekonstruktion-Script (CMVS-PMVS) muss direkt von GitHub heruntergeladen werden. Die enthaltenen Dateien müssen direkt in das VisualSFM Verzeichnis kopiert werden, sonst funktioniert die Dichterekonstruktion nicht korrekt.
 
Sind die beiden Module entpackt, kann das VisualSFM.exe geladen werden.

visualSFM hauptfenster web

Zuerst sollte man das Logfenster einblenden, damit man sehen kann, welche Operationen VisualSFM durchführt. Sollte es nicht neben dem Hauptfenster geöffnet sein geschieht dies durch Klicken auf das Icon unter "File" (ein stilisiertes Blatt Papier). Unter SfM -> Load NView Match und auswählen des Dateityps (All JPEGs in folder (jpg)) können nach Klicken auf die erste *.jpg Datei alle Bilder geöffnet werden.

visualSFM dateien geladen web

Der Bildervergleich wird unter SfM -> Pairwise Matching -> Compute Missing Match oder durch Klicken auf das Icon mit vier Pfeilen in jede Ecke aktiviert.

visualSFM matching web

Das Matching dauert ein paar Sekunden bis wenige Minuten, je nach Rechenleistung. Sobald dieser Prozess abgeschlossen wurde, kann man die Punktwolke direkt erstellen lassen. Dies geschieht durch das ">>" Icon oder durch SfM -> Reconstruct sparse. Manchmal sind die Bilder nicht ausreichend überlappend oder aus anderen Gründen kann das Programm keine Zuordnung (match) finden. Dann werden mehrere Objekte Erstellt, welche man durch Klicken auf das Symbol links neben dem Compute Missing Match Symbol (Shot Single/Multiple Models, 3 Rechtecke sind darauf abgebildet) anzeigen lassen kann. Mit den Pfeiltasten der Tastatur kann man diese selektieren und ggf. bearbeiten.

visualSFM punktwolke web

Um die Punktwolke herum werden die zugeordneten Bilder mit Blickrichtung angeordnet. Sollte ein Bild die falsche Blickrichtung haben, kann man dieses durch zwei verschiedene Wege herauslöschen:

Weg 1: Selektion falscher/unpassender Bildpunkte

* Klick auf das Icon 3+, damit werden alle Bildpunkte angezeigt, nicht nur die, welche in 3 oder mehr Bildern übereinstimmen
* F2 aktiviert die Selektion der fehlerhaften Bildpunkte
* Durch zweimaligen Klick auf das Hand Icon werden die zugehörigen Bilder gelöscht
* Mit dem >>+ Icon kann man die Punktwolke weiter berechnen lassen

Weg 2: Selektion des fehlerhaften Bildes

* F1 aktiviert Selektion der Bilder
* Das Hand Icon löscht die selektierten Bilder
* Mit dem >>+ Icon wird die Punktwolke weiter berechnet

Die Rekonstruktion der einfachen Punktwolke geht recht schnell. Wesentlich länger dauert die anschließende Verdichtung der Punktwolke über Yasutaka Furukawas CMVS-PMVS script. Aktiviert wird Sie durch das CMVS Icon bzw. SfM -> Reconstruct Dense. Die Rekonstruktion wird in einem Verzeichnis mit der automatischen Endung .nvm.cmvs abgespeichert. Das Resultat kann über den Tabulator (TAB) angezeigt werden.

visualSFM punktwolke dicht web

Die Daten hierfür werden im Verzeichnis *.nvm.cmvs\00\models\ in einer Datei (option-0000.ply) bzw. bei mehreren Lösungen in mehreren Dateien (option-0001.ply, option-0002.ply, ...) bzw. Verzeichnissen (*.nvm.cmvs\01\models\, *.nvm.cmvs\02\models\, ...) abgespeichert.

Die Punktwolke kann nun in Meshlab geladen und nachbearbeitet werden.

Python Photogrammetry Toolbox

Dieses Programm ist etwas komplizierter zu installieren. Ein Ablauf für Windows 7 64bit wäre folgender:
Zuerst installiert man Python 2.6, anschließend Pillow 2.3, darauf folgt PyQT.
Dann erst kann man das eigentliche Programm, den Python Photogrammery Bundler installieren.
Zuletzt kommt die Toolbox GUI.
Eine kleine Änderung in einem Python File muss ebenfalls noch vorgenommen werden:
osm-bundler/osm-bundlerWin64/RunCMVS.py wird in einem Texteditor, wie z.B. notepad++ geöffnet und die Zeile 10 einkommentiert (Löschen des "#"-Zeichens).

Zum Starten, wird die Datei osm-bundler/osm-bundlerWin64/ppt_gui_start.bat geladen.
Hat man z.B. Python auf einem anderen Verzeichnis als c:\Python26 installiert, muss man das Verzeichnis in dieser Batch-Datei anpassen.

Das ist aber leider längst noch nicht alles, was man zum Installieren beachten muss:
Das Python Script arbeitet mit EXIF Daten der eingespeisten Fotos. Diese Daten bestehen u.A. aus dem Kameratyp, dem Hersteller und der Brennweite. Die SQlite-Datei des Python Scripts, in welcher diese Daten verwaltet werden, enthält mehrere Kameratypen, aber nicht alle. D.h. benutzt man eine Kamera, welche hier nicht aufgelistet ist, so muss man diese ergänzen.

Dies funktioniert folgendermaßen:
Man läd sich einen SQlite Editor herunter und öffnet die SQlite Datei "cameras.sqlite" im Verzeichnis osm-bundler-pmvs2-cmvs-full-32-64\osm-bundler\osm-bundlerWin64\osmbundler\cameras.
In dieser öffnet man im Tabulator "Browse Data" mit dem Dropdown "cameras" den Kameradatensatz:

sqlite browser web

Nun kann man hier den Kamerahersteller, den Typ und die Brennweite der eigenen Kamera einfügen, indem man irgendeine andere, ungenutzte Kamera ersetzt.

sqlite camera data web

Die EXIF-Daten erhält man, indem man ein mit der Kamera geknipstes Bild mit der rechten Maustaste anklickt und unter Eigenschaften den EXIF Tabulator auswählt.
Die ccd Werte findet man häufig auf dem Datenblatt.

Kommen die Bilder des Objektes aus einem Video (wie oben beschrieben mit VLC abgespeichert), so muss man für das Python Script noch die EXIF Daten in die Bilder einfügen, da diese von VLC nicht aus dem Video übernommen werden. Dies macht man, indem man einen EXIF Editor, wie das Exiftool und die dazugehörige GUI installiert. Hiermit kann man die EXIF Daten aus einem mit der gleichen Kamera geschossenen Bild in die aus dem Video extrahierten Bilder übertragen. Dazu läd man alle JPGs der Videokonvertierung und importiert unter "Export/Import -> copy metadata from single file" die EXIF Daten des geknipsten Fotos. Danach sollte das Python Script die EXIF Daten mit seiner Datenbank vergleichen und eine Punktwolke aus den Bildern berechnen können.

Nachdem die Hürden der Installation und Angleichung der Daten gemeistert ist, kann man mit der eigentlichen Bildbearbeitung anfangen. Dazu lädt man die Batch Datei und gibt im damit geöffneten Interface den Ordner der Bilder an.

pythonbundler hauptfenster web

Mit "Run" lädt das Tool nun die Daten und bildet die Bildvergleiche. Zur Begrenzung der Rechenoperationen werden die Bilder voreingestellt auf 1200 Pixel verkleinert. Zusätzlich kann man im Kästchen darunter die Daten noch weiter verkleinern (Häckchen setzen und im Dropdown den Skalierungsfaktor angeben). Dies verringert die Rechenzeit, allerdings auch die Qualität des berechneten 3D Modelles. Hat man die EXIF Daten nicht korrekt eingegeben, so wird beim Laden der Bilder eine Fehlermeldung ausgegeben, dass der Focus nicht berechnet werden kann. Läuft alles, wie geplant, so werden am Ende die Daten in einem Verzeichnis im temp Ordner abgelegt, dessen Pfad im Dosfenster angezeigt wird.

pythonbundler dateipfad web

Nun kann man zum 2. Schritt, der CMVS/PMVS-Rechnung übergehen. Hierzu gibt man den im Dosfenster eingegebenen Pfad ein und die Anzahl der Bilder pro Rechenschritt (Number of Photos in each Cluster).

pythonbundler cmvs-pmvs web

Die Ausgabe der fertigen Punktwolke erfolgt im Unterverzeichnis \pmvs\models als option-0000.ply bzw. bei mehreren Lösungen als option-0001.ply, option-0002.ply, usw...

Bearbeitung der Punktwolken in Meshlab

Der Berechnung der Punktwolken aus dem cmvs/pmvs-Script folgt die endgültige Umwandlung in ein 3-Dimensionales Netz (mesh). Dies funktioniert sehr gut mit Meshlab, welches diverse Nachbearbeitungstools enthält. Es ist leider nicht das stabilste Programm und stürzt manchmal ab, aber die Möglichkeiten sind für freie Software unschlagbar.

Hier eine mögliche Vorgehensweise zur Umwandlung der Punktwolke in ein Mesh:

Die vom Python Photogrammery Tool oder von VisualSFM ausgegebenen PLY-Dateien werden unter File -> import mesh geladen. Hier ein Bild von einer mit dem Python-Script erstellten Punktwolke:

holli punktwolke roh web

Wie man deutlich erkennen kann, sind hier einige Punkte erstellt worden, welche nicht zum gewünschten Portrait gehören. Diese müssen zunächst manuell entfernt werden. Durch Klicken auf dieses Symbol können die Punkte selektiert werden:

meshlab punktselekt web

Gleichzeitiges Drücken der Shift-Taste ermöglicht es, mit mehreren Rechtecken nacheinander die Punkte zu selektieren. Durch Klicken auf dieses Symbol, oder STRG+Entf werden die ausgewählten Punkte gelöscht.

meshlab punktloeschen web

Wurden mehrere PLY-Dateien erstellt, so lohnt es sich, diese einzeln zu laden und nacheinander zu bearbeiten. Hat man alle unerwünschten Punkte entfernt, wird exportiert (File -> Export mesh as). Dabei im zweiten Fenster den Haken neben "normals" setzen. Anschließend kann in einer neuen Datei die nächste PLY-Datei geladen und bearbeitet werden. Sind alle Dateien bearbeitet, müssen diese nacheinander über die "import mesh"-Funktion geladen und vereinigt werden. Dies geschieht durch Filters -> Layer and Attribute Management -> Flatten visible Layers (Häckchen setzten bei "keep unreferenced vertices"). Eine zusätzliche Verbesserung der Qualität erreicht man durch Filters -> point set -> smooth normals on a point set (number neigbors: 100 oder größer einstellen).

Eine bearbeitete Punktwolke sieht dann ungefähr so aus:

holli punktwolke cleaned web

Zur Erstellung eines Meshs benötigt man eine möglichst gute Ausrichtung der Flächennormalen. Hierfür existiert ein Script in Meshlab, welches diese in der Punktwolke automatisch berechnet:
Filters -> Normals, Curvatures and Orientation -> Compute normals for points set

Bei besonders hoch aufgelösten Bildern ist die Punktwolke sehr dicht und verursacht lange Rechenzeiten der nun folgenden Schritte. Um die Anzahl der Punkte zu reduzieren, kann folgendes Script verwendet werden: Filters -> sampling -> poisson-disk sampling (Häckchen setzen bei "base Mesh Subsampling")
Hier gibt man die gewünschte Punkteanzahl manuell an. Diese sollte kleiner sein, als die unten in der Mitte unter dem Bild als "Vertices" angegebene Punkteanzahl.

Um die Punktwolke letztendlich in ein 3D Mesh umzuwandeln, wird ein Oberflächenberechnungs-Script verwendet:
Filters -> Remeshing, simplification and reconstruction ->Surface reconstruction: Poisson
Hier gibt man in "Octree Depth" eine Zahl zwischen 6 und 12 an, wobei 12 häufig die besten Ergebnisse liefert. "Solver Divide" sollte bei höheren "Depth" Parametern auf 8 oder 9 gesetzt werden. "Samples per Node" ist ein Wert zur Glättung des entstehenden Objektes. Manchmal empfiehlt es sich, hier eine 2 oder 3 einzutragen, da das Mesh allerdings nachträglich noch vereinfacht bzw. geglättet werden kann, ist dies nicht unbedingt nötig, den default Wert zu verändern.

Das Mesh sieht dann folgendermaßen aus:

meshlab poisson web

Eine Alternative zur Meshlab Poisson Rechung ist PoissonRecon. Es ist ein Script, welches *.ply Files verarbeitet. Manchmal sind die Berechnungen über dieses Script genauer, als die von Meshlab. Hierzu muss die vorbearbeitete Punktwolke exportiert (File -> Export mesh as) werden. Dabei im zweiten Fenster den Haken neben "normals" setzen, sonst wird PoissonRecon eine Fehlermeldung bringen.

Ob mit Meshlab, oder PoissonRecon erstellt, sollte das Mesh geglättet und vereinfacht werden. Ein hierfür vorgeschlagenen Script ist:
Filters -> Remeshing, simplification and reconstruction ->Quadric Edge Collapse Decimation
In diesen Script werden benachbarte Vertices zusammengezogen und somit das Mesh vereinfacht. Häkchen unter "Preserve Boundary of the mesh", "Preserve Normal", "Preserve Topology" und "Planar Simplification" ergeben eine brauchbare Vereinfachung, zumindest bei einem Portrait.

meshlab QECD web

Um das Bild zu glätten, wird folgendes Script verwendet: Filters -> Smoothing, Fairing and Deformation -> Laplacian Smooth
Hierbei empfiehlt es sich, bei Smoothing steps statt der Default Einstellung eine 1 einzutragen. Das Resultat ist ein wesentlich glatteres Mesh:

meshlab laplaciansmooth web

Man kann diese beiden Scripts auch in umgekehrter Reihenfolge anwenden oder die Vereinfachung des Meshes weglassen. Für ein gutes Ergebnis muss man hier ein wenig mit den Scripts spielen. Ein mit dem PoissonRecon Script erstelltes Mesh, welches anschließend vereinfacht und geglättet wurde, sieht ganz brauchbar aus:

meshlab fertig bearbeitetes mesh web

Dieses 3D Modell wird mit "File -> Export Mesh As" als STL-Datei exportiert. Final kann es mit netfabb skaliert werden bzw. mit der Schneide-Funktion eine plane Ebene an der Unterseite geschnitten werden. Damit ist es für den 3D-Druck vorbereitet.

netfabb fertig web


Fazit

Das beste Ergebnis liefert 123D Catch. Es ist einfach, effektiv und schnell. Für User mit unsensiblen Daten das Programm der Wahl.

VisualSFM ist ebenfalls relativ einfach zu bedienen, erfordert aber ein wenig Einarbeitung und das Ergebnis ist erst nach einigem Rumprobieren in Meshlab akzeptabel.
Das komplizierteste Programm ist das Python Photogrammetry Tool, welches sehr kompliziert zu installieren ist, wenn man alle Änderungen an den EXIF Daten und der SQL-Datenbank der Kamera-Daten mit einbezieht.  Jedoch liefert es im Offline-Betrieb das schönste Ergebnis.

Hier noch einmal ein Überblick über die besten Ergebnisse, welche mit den 3 Programmen erzielt werden konnten.

Von links nach rechts: Python Photogrammetry Tool, VisualSFM und 123D Catch

netfabb alle web

Photogrammetrie ist mittlerweile also auch für Privatpersonen zugänglich.  Das ehemals nur für Experten geeignete Verfahren ist dank moderner Computertechnik und Software massentauglich.

Wer Interesse hat, sich auch ein 3D Modell seines Portraits (oder auch ein anderes 3D Modell) erstellen zu lassen, ist herzlich eingeladen, uns eine This email address is being protected from spambots. You need JavaScript enabled to view it. oder über das Kontaktformular eine Nachricht zu schicken.

Das 2PrintBeta - Team