X-Ray Simulation

Du hast eine Idee für ein Projekt?
Antworten
doc_nik
User
Beiträge: 1
Registriert: Mittwoch 7. April 2021, 10:49

Mittwoch 7. April 2021, 11:00

Hallo liebe Gemeinde,

ich plane ein Programm zur virtuellen Simulation der Abbildung eines 3D-Objekts auf einer 2D-Fläche ähnlich von konventionellen Röntgenaufnahmen. Lieder fehlen mir die Ideen, womit man das ganze zielgerichtet umsetzen kann. Es soll folgendes können:

- 3D-Objekt laden (stl-Datensatz)
- perspektivische Projektion des 3D-Objekts auf eine 2- Ebene (Sensor) von einem fixen Betrachtungspunkt (Röntgenstrahlungsquelle)
- veränderbare Parameter:
* Position/Rotation des 3D-Objekts in allen Ebenen
* Abstände zwischen Röntgenstrahlungsquelle - Objekt - Sensor

Kann man sowas in Python umsetzen? Welche Bibliotheken sind hilfreich? Gibt es hierfür hilfreiche Ansätze?

Vielen Dank für eure Hilfe
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

Samstag 1. Mai 2021, 15:14

Als Idee - schau zunächst, ob Du mit klassischen Raytracern Dein Modell hinreichend genau abbilden kannst. Z.B. gibt es etliche Anleitungen im Netz, wie man sowas in Blender simulieren kann.

Da Du es in einem Programmierforum anbringst, willst Du es wahrscheinlich mit eigenem Code erreichen und nicht als Projekt in einer fertigen Software. Da hilft es nur, sich in die zugrundeliegende Physik einzuarbeiten und zu schauen und wieviel korrekte Physik drinstecken soll (Reflexion, Absorption/Dämpfung, Beugung/Streuung usw). Diese kannst Du dann verschieden nahe an der Wirklichkeit simulieren, am einfachsten wieder mit einem Raytracer, den Du dann schrittweise um die korrekte Physik erweiterst.
Als erste Annäherung kann man Röntgenabbildungen als Abbildungen von Glaskörpern mit unterschiedlicher Durchlässigkeit verstehen, und mit Farbmasken und Gamma-Tricks recht weit kommen. Das hat dann allerdings bis auf die Ähnlichkeit der Abbildungen wenig mit realer Physik zu tun.
Ein Problem könnte noch STL werden, da es eigentlich nur Oberflächen beschreibt, Röntgen aber ein Durchleuchtungsverfahren ist, wo es auf das "stoffliche" Durchstrahlungsverhalten ankommt (volumenabhängig). Keine Ahnung, ob man das mit STL hinreichend beschreiben kann, oder Du das Format erweitern müsstest.
Kann man sowas in Python umsetzen? Welche Bibliotheken sind hilfreich? Gibt es hierfür hilfreiche Ansätze?
Ja das geht, allerdings wirst Du sehr schnell an Performance-Grenzen von Python stoßen, wenn Du das nicht speziell optimierst (schau Dich mal bei numpy, scipy und opencv um). Für akzeptable Performance wirst Du früher oder später nicht um eine GPU-Bibliothek herumkommen (ist allerdings für einen Raytracer alles andere als trivial umzusetzen).
Antworten