Die Aufgabenstellungen für das direkte
und das inverse Problem erfordern beide zunächst die Berechnung
der folgenden Größen:
- der Index der getroffenen Pixel, das heißt ihre Position
im Phantom,
- die Länge der durchlaufenen Strecke in jedem Pixel.
Der Algorithmus zur Berechnung wurde im Programm »spunkt.m«
(vgl. A.1) umgesetzt und soll im Folgenden beschrieben werden.
Für die weiteren Betrachtungen werden zunächst die Schnittpunkte
der Strahlen mit dem Gitternetz benötigt. Hierzu wird für
jeden Strahl, der durch und
a gegeben ist, eine Punkt-Richtungs-Gleichung aufgestellt:

Wobei xP und
yP die Koordinaten
eines durchlaufenen Punktes und m der Anstieg der Geraden ist. Diese
Steigung m ergibt sich aus m
= tan( +
).
Nach dem Umstellen von (3) erhält man für y:

Und für x:

Nach dem Einsetzen von y = -n, ..., n
in (5) ergeben sich die jeweiligen Schnittpunkte mit den vertikalen
Achsenparallelen.
Diese Schnittpunkte werden in der Matrix X_S
abgelegt. Die Spalten in der Matrix enthalten die x-Koordinate des
Schnittpunktes eines Strahls. Um die Längen effizient berechnen
zu können, ist eine aufsteigende Sortierung nach den x-Werten
(X_S) und eine entsprechende Ermittlung
der zugehörigen y-Werte(Y_S) nötig.
Dazu werden die x-Koordinaten in eine weitere Matrix P_X
übertragen und die Werte x = -n, ..., n
ergänzt. Anschließend kann P_X
aufsteigend in die Matrix S_X sortiert
werden. Durch Einsetzen dieser Werte in (4) erhält man in der
Matrix S_Y die entsprechenden y-Koordinaten.
Matlab macht es möglich die Schnittpunktsberechnungen simultan
für das gesamte Strahlenbündel durchzuführen, weshalb
die Spaltenanzahl der Matrizen S_X und
S_Y mit der Anzahl der Strahlen im Bündel
übereinstimmt.
Die Indizes durchlaufener Pixel, das heißt die Positionen
im Phantom, sind wichtig um später auf die richtigen Schwächungskoeffizienten
zugreifen zu können. Zuerst werden für die getroffenen
Pixel ,,Phantomkoordinaten'' ausgerechnet. Dieses gedachte Koordinatensystem
beginnt in der linken unteren Ecke mit dem Pixel (1,1); siehe dazu
Abbildung 6. Um die Koordinaten zu erhalten wird der Mittelwert
von zwei aufeinanderfolgenden Schnittpunkten der jeweiligen x- bzw.
y-Werte gebildet, n addiert und anschließend auf die nächstgrößere
ganze Zahl gerundet. Daraus kann nun der Index mit der Formel i
= (x + y ·2 ·n)-2 ·n berechnet werden.
Allerdings ist es möglich, daß Pixel auch außerhalb
des Phantoms liegen, nämlich dann wenn x
< 1 oder x > 2 ·n
ist (analoges gilt für y). Dieser
Effekt entsteht durch das Schneiden von -n
bis n. Sinnvollerweise werden diese Pixel
bei den weiteren Betrachtungen ignoriert. Daher speichern wir die
Koordinaten der entsprechenden Pixel und setzen die jeweiligen Indizes
auf einen "harmlosen" Wert, wie zum Beispiel 1.

Abbildung 6: Schema zur Indexberechnung
Eine Strecke zwischen zwei Punkten A und B läßt sich
mit Hilfe des Satzes des Pythagoras errechnen, es gilt: .
Nach Einsetzen der Schnittpunktskoordinaten in die obige Formel
und Aussortieren außenliegender Pixel durch Nullsetzen der
Länge, liegen die durchlaufenen Strecken in den einzelnen Pixeln
des Phantoms von links nach rechts vor.
|