Monoskopischer 3-Dimensionaler Oberflächenscanner

  • Tach!

    Das hier ist so ne Mischung aus H&Ü und Projekt.
    Ich möchte und muss mehr oder weniger einen monoskopischen 3D Scaner bauen. Das hört sich erstmal schlimmer an als es ist. Das ist im Grunde nur ein Kasten der an der Decke eine Webcam hängen hat unter der ein Objekt liegt. Die Webcam erfasst dann cm für cm den Abstand zu jenem un speichert dies in einer Map-Artigen Dateistruktur.Anschließend kann sich der Nutzer durch die Querschnitssschichten navigieren, und sieht dabei das Relief und dessen Höhe. Einige kennen das Schichtverfahren vielleicht vom MRT, bei dem man am Ende ein CD bekommt die man eigentlich :whistling: ungeöffnet dem Arzt übergeben sollte.

    Das Problem dabei ist die Monoskopie, bei der mehr Größenangaben vorhanden sein müssen als bei der Stereokoskopie (was auch kein Problem wäre da sich unendlich viele Webcamobjekte auf einer GUI erzeugne lassen). Die Formel zur Entfernenungsberechnung ist dabei recht einfach (monos.):

    Entfernung = Gegenstandgröße / (Bildgröße / Maßstabsfaktor) * Brennweite

    Ich habe aber absolut keine Ahnung wie ich die Brennweite der Webcam rauskriegen soll.

    Zum Plan: Wir sollten erstmal das Verfahren zur Entfernungsbestimmung perfektionieren bevor wir uns an den Skriptkram amchen. Da hab ich auch schon so meine Vorstellungen und Lösungen.

    Also ein Webcamobjekt ist klassischerweise ja 320x240 Pixel groß, so soll es auch bleiben. Um das Verfahren zu beschleunigen soll nun natürlich nicht jeder Pixel berechnet werden, statt dessen werden Sektoren von 3x3 Pixeln erstellt, und diese dann verabreitet.

    So. Nun lasst das Brainstorming beginnen.

    MfG, campweb

  • Also:
    1. Versuch - Webcam API finden (und ggf da suchen, wegen weiteinstellung usw)
    2. Versuch - Ist denn der Raum immer gleich aussehend ? Wenn nicht - Fixpunkte an die Wand malen (oder sowas) ...
    3. Versuch - Support der Webcam anschreiben, ob sie da was habn :D

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Das lässt sich problemlos in AutoIt lösen. Bloß möchte ich eine andere Formel, Vorschläge.

    MfG, campweb

  • Man - Ich meinte: Wie misst du denn bitte die Entfernung ?
    Ausserdem - Eine API ist lediglich etwas, was man mit einer X-Beliebigen Programmiersprache:
    a - Aufruft
    b - für eine programmiersprache zugeschnitten ist

    z.B. die WinAPI - Meinste die gibts nur in AutoIt ?
    *facepalm*

    Es gibt sehr viele Leute, die glauben. Aber aus Aberglauben.
    - Blaise Pascal

  • Ich weiß was ne API ist, dazu braucht man aber keine.

    Die Gleichung für die Entfernungsmessung für Objekte auf dem Bild steht oben.

    MfG, campweb

  • Die Webcam erfasst dann cm für cm den Abstand zu jenem un speichert dies in einer Map-Artigen Dateistruktur

    Wie?
    Woher nimmt die Kamera (RGB-Kamera?) die Tiefeninformationen für die einzelnen Pixel?

    Monoskopisch mit einer RGB-Kamera kenne ich nur Verfahren welche auf Musterprojektion beruhen.
    Also entweder eine statische Musterprojektion (Linien, Punkt, Raster, Zufallsmuster...).
    Oder per Laser-Lichtschicht Triangulation.
    Alternativ die dynamischen Verfahren wie z.B. dem Phasenschiebeverfahren bei der Linienprojektion oder dem codierter Lichtansatz.

    Ohne Triangulation wüsste ich nicht wie du Entfernungen monoskopisch bestimmen willst.
    Maximal (aber höchst ungenau) könnte man noch über die Fokusierung ganz grobe Informationen zur Entfernung ableiten - ist es das was ihr machen sollt?
    Oder hast du ein Objekt dessen Geometrie dir schon bekannt ist und du willst davon die Entfernung ableiten?

  • Er hat sich vermutlich vom DAVID Laserscanner verfahren inspirieren lassen: http://www.rob.cs.tu-bs.de/news/david

    Dort hat man allerdings eine Hintergrundpunktmap sowie einen Laser und es wird der Versatz der Laserpunkte zur Berechnung genommen. Im dem Fall reicht eine normale Webcam aus.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Die Maße des Objektes sind jas bekannt. So ist es auch kein Problem die Entferneng zu berechnen (s. post 1).
    Es müssste bloß noch einfacher gehen.

    MfG, campweb

  • Die Maße des Objektes sind jas bekannt. So ist es auch kein Problem die Entferneng zu berechnen (s. post 1).


    Nein - in deinem 1. Post steht etwas völlig anderes.
    Du beschreibst das du eine Depth-Map erstellen willst - also ein Entfernungswert für jedes einzelne Pixel.
    Bei dem was du nun beschreibst kommt aber nur eine einzige Entfernung heraus - nämlich die zum Objekt.
    Eine Depth-Map oder die von dir beschriebenen "Querschnittsschichten" erhälst du auf diese Weise nicht.

    Du wirst irgendwie nicht konkret wie das ganze wirklich ablaufen soll und auf welcher Grundlage das wie funktionieren soll.

    Schreib mal ganz konkret was am Ende herauskommen soll, wie das erreicht werden soll und welcher mathematische Hintergrund dafür zuständig ist - dann erst kann man dir wirklich weiterhelfen.