• Keine Ergebnisse gefunden

4. Implementierung

4.2 Implementierung des Vorbereitungsvorgangs für die PSF-Berechnung

4.2.1 Erstellung des idealen Bildes

Einer der Aforderungen ist die Erzeugung eines idealen Bildes aus dem gemessenen. Das Bild steht stellvertretend für das Sternrasterobjekt in der Bildaufnahmekette des Röntgensys-tems. Das Sternrasterobjekt wurde im Kapitel 2.3 beschrieben. Der Ablauf des Erzeugungs-vorgangs ist im Aktivitätsdiagramm dargestellt und wir mit dem Klassendiagramm in der Ab-bildung 4.2 verdeutlicht.

Abbildung 4.2: Klassendiagram zur Erstellung des idealen Bildes

Die Klasse zur Erstellung des Sternmusters CreateStarPattern wurde von Prof. Dr. Robert Heß erstellt. Ein Sternmuster wird erzeugt, indem die Dreiecke mit einer gemeinsamen Spitze und jeweils einem gleichgroßen Winkel zu einander gezeichnet werden. Die Grenzlinien der

schwarzweißen Bereiche werden interpoliert dargestellt, d.h. die Helligkeit des Pixels wird prozentuell zur bedeckten Fläche dem „realen“ Verlauf der Linie im Bild berechnet.

Die Methode createIdealImage(… , double x_center, double y_center, double phase, dou-ble ri) der Klasse ViewerDoc initialisiert die Zeichnung des Musters. Als einige der Ein-gangsparameter für die Zeichnung des Sternrasters werden die Koordinaten des Kreiszent-rums (𝑥𝑐, 𝑦𝑐), der innere Radius 𝑅𝑖𝑛 und die Phasenlage 𝜑 zwischen der Lamellen-Mittellinie und der x-Achse erwartet.

Bestimmung der Sternrasterparameter: Position der Kreismitte, innerer Radius und die Phase sind in der Abbildung 4.3 graphisch dargestellt und gehören zu den Parametern des Sternrasters. Sie werden automatisch aus dem gemessenen Bild mit der Methode getStar-PatternParameter() der Klasse StarPatternParameter extrahiert.

Abbildung 4.3: Parameter des Sternrastermusters

Der Vorgang wurde in die zwei Schritte „Bildverarbeitung“ und „die tatsächliche Berechnung der Parameter aus dem transformierten Bild“ unterteilt.

Bildverarbeitung: Ziel der Bildverarbeitung ist, ein radontransformiertes Bild aus dem ge-messenen Röntgenbild zu bekommen, um die Position der enthaltenen Geraden zu berech-nen und den Radius des Kreises zu bestimmen.

Um die Maxima der Radontransformierten hervorzuheben, ist es empfehlenswert, den Mit-telwert aus dem gemessen Bild zu eliminieren und die Kantengeraden im Röntgenbild klar zu definieren. Diese beiden Empfehlungen werden durch die Erzeugung eines Kantenbildes mit Hilfe des Canny-Kantenoperators erfühlt.

Canny-Kantenoperator: Zum Erzeugen des Kantenbildes wurde der im Kapitel 2.4.2 beschriebene Canny-Algorithmus implementiert. Der Sobel-Filter wurde als Differenzfilter eingebaut, um den Richtungsgradient zu bestimmen. Zuerst wird das Bild in die x-Richtung

𝑅𝑖𝑛 360°

𝑦𝑐

𝑥𝑐 𝑥

𝑦

𝜑

mit der Sobel-Maske 𝑆𝑥 gefaltet und danach der Faltungsvorgang für das entstandene Bild in die y-Richtung mit der Sobel Maske 𝑆𝑦 wiederholt.

𝐺𝑥 = [

1 0 −1 2 0 −2 1 0 −1

] 𝐺𝑦 = [

−1 −2 −1 0 0 0 1 2 1

] 4.1

Der Algorithmus wird in der Methode processImage(… , float sigma, double lowThreshold, double highTreshold) der Klasse CannyEdgeDetector durchgeführt. Die Eingangsparameter für diese Methode sind die Standartverteilung 𝜎 für den Gaußfilter, sowie die obere und die untere Grenze des Pixelwerts für die Kantenverfolgung oder Hysterese.

Die Threshold-Werte wurden durch das mehrfache Testen gewählt. Als Kriterium für die pas-sende Wahl der Werte wurde die Auffindung des inneren Radius des Sternrasters durch den Canny-Algorithmus gewählt.

Radontransformation: Die Berechnung der Radontransformation wurde in die Klasse Radon ausgelagert und wird durch die Methode radonnormal() initialisiert.

Die Radontransformierte des Kantenbildes wurde durch die implementierte Normalform der Radontransformation berechnet. Die Mathematik für die Implementierung wurde aus der Doktorarbeit von Peter Toft „The Radon Transform. Theory and Implementation“ [Toft] ent-nommen.

Da zwischen der linearen und der normalen Form der Radon Transformation ein Zusammen-hang besteht, wird folgende Beziehung zu Realisierung der normalen Form benutzt:

𝑓̂(𝜌, 𝜃) = 1

|𝑠𝑖𝑛𝜃| ∫ 𝑓 (𝑥, 𝜌

𝑠𝑖𝑛𝜃− 𝑥𝑐𝑜𝑡𝜃) 𝑑𝑥 = 1

|𝑠𝑖𝑛𝜃|𝑓̂ (𝑝 = −𝑐𝑜𝑡𝜃, 𝜏 = 𝜌 𝑠𝑖𝑛𝜃)

−∞ 4.2

Um die Transformation auf ein digitales Bild anzuwenden, wurde das Verfahren zu der Be-rechnung der Radontransformierten diskretisiert. Das bringt das Problem der Geradenappro-ximation im Kantenbild mit sich, welches mit der Methode der Nächsten-Nachbarn-Interpo-lation gelöst wird. Die Teilung durch Null, wenn 𝜃 = 0 und 𝑠𝑖𝑛𝜃 = 0 ist, wird unter der Ver-wendung der Beziehung aus Formel 2.9 und 2.11 vermieden.

Der diskrete Vorgang der Radontransformation wird wie folgt bestimmt:

sinθ > 1

√2: f̂(ρ, θ) = 1

|sinθ|f̂ (p = −cotθ, τ = ρ sinθ)

4.3

≈ ∆𝑥

|sinθ|∑ 𝑔(𝑚, [𝛼𝑚 + 𝛽]

𝑀−1

𝑚=0

)

𝛼 = −cotθ; 𝛽 = ρ − 𝑥𝑚𝑖𝑛(cosθ + sinθ)

∆𝑥 ∗ sinθ

sinθ ≤ 1

√2: f̂(ρ, θ) = 1

|cosθ|f̂ (𝑟 = −tanθ, η = ρ cosθ)

≈ ∆𝑥

|cosθ|∑ 𝑔([𝛼𝑛 + 𝛽], 𝑛)

𝑀−1

𝑛=0

𝛼 = −tanθ; 𝛽 = ρ − 𝑥𝑚𝑖𝑛(cosθ + sinθ)

∆𝑥 ∗ 𝑐𝑜𝑠θ

4.4

mit: 𝑀 = Breite des quadratischen Bildes in Pixel, 𝑥𝑚𝑖𝑛 = Minimaler Wert auf der x-Achse,

∆𝑥 = Der Abstand zwischen 2 Pixel.

Alle Parameter der Transformation wurden als lineardiskret angenommen. Sie liegen in ei-nem symmetrischen Intervall um den Nullpunkt.

𝑥𝑚𝑖𝑛= −𝑥𝑚𝑎𝑥 = −(𝑀 − 1)

2 ∙ ∆𝑥, ∆𝑥 = 1 𝑦𝑚𝑖𝑛 = 𝑥𝑚𝑖𝑛= −𝑦𝑚𝑎𝑥 = −(𝑀 − 1)

2 ∙ ∆𝑦, ∆𝑦 = 1 𝜌𝑚𝑖𝑛 = −𝜌𝑚𝑎𝑥 = −((2𝑀 − 1) − 1)

2 ∙ ∆𝜌, ∆𝜌 = 1

√2

4.5

Um die Symmetrieeigenschaften der normalen Radontransformation voll auszunutzen, wurde das Kantenbild als quasiquadratisch angenommen. Die kleinste der Seiten des Bildes wurde als die Seite des Quadrates gewählt. Diese Annahme verursacht die Verschiebung der

„gedachten“ Bildmitte im transformierten Kantenbild um 2∆ auf der x- oder y- Achse, wie in der Abbildung 4.6. dargestellt. Diese Änderung wird bei den späteren Berechnungen berück-sichtigt.

Berechnung der Parameter des Sternrasters: Aus der Radontransformierten wurden die ge-suchten Parameter aus der im Bild erhaltenen Information berechnet. Dies geschieht mit der Methode calculateParameter() der Klasse StarPatternParameter.

Der innere Radius: Das Sternraster Testobjekt besteht aus drei Kreisen mit dem ge-meinsamen Mittelpunkt, wie in der Abbildung 4.4 schematisch dargestellt wird. Da die abso-lute Größe der Kreise in dem gemessenen Bild linear von dem variierbaren Abstand des Brennflecks zu dem Messtisch abhängt, wurden die relativen Größen der Radien bestimmt.

Dafür wurden die absoluten Werte der Kreisradien in MATALAB in der 2D-Darstellung der imshow() Funktion mit der Verwendung des Data Cursors abgelesen.

Abbildung 4.4: Radien des Sternrasterobjekts

𝑅2

𝑅1 = 0,823 𝑢𝑛𝑑 𝑅𝑖𝑛

𝑅1 = 0,043 4.6

Der äußere Radius 𝑅1 wurde aus einer beliebigen Spalte des radontransformierten Bildes, z.B. wie in der Abbildung 4.5, bestimmt.

Abbildung 4.5: Einzelne Spalte der Radontransformierten

𝑅𝑖𝑛

𝑅2 𝑅1

2 ∙ 𝑅1

𝜌1 𝜌2

Koordinaten des Kreiszentrums (𝒙𝒄, 𝒚𝒄): Für die Bestimmung der Koordinaten des Kreiszentrums wurde der Schnittpunk zweier Kantengeraden im Sternrastermuster be-stimmt. Im radontransformierten Bild wurde dafür zwei Maxima und die dazugehörigen Pa-rameter 𝜌 und θ für die Geradengleichung gefunden. Diese PaPa-rameter wurden für die Hauptform der Geradengleichung als Steigung und y-Achsenabschnitt umgerechnet. Die Ko-ordinaten des Schnittpunkts 𝑆(𝑥, 𝑦) in kartesischen Koordinatensystem sind gegeben durch:

Die Koordinaten 𝑥 und 𝑦 liegen im Koordinatensystem des radontransformierten Bildes. Die Richtungen der x- und y-Achsen werden in der Abbildung 4.6 gezeigt. Um die Koordinaten der Geradenkreuzung im Röntgenbild zu berechnen, wurde die Korrektur der Bildmitte durchgeführt. Diese ist notwendig, da die Radontransformation auf ein quadratisches Bild angewendet wurde. Die Koordinaten 𝑥𝑐 und 𝑦𝑐 wurden berechnet mit:

mit: ∆ = Die Hälfte der Seitendifferenz des Röntgenbildes.

𝑥= 𝜏2− 𝜏1 𝑝1− 𝑝2 𝑦= 𝑝1∙ 𝑥+ 𝜏1

4.7

𝑥𝑐 = 𝑥𝑚𝑖𝑡𝑡𝑒 − 𝑥 𝑦𝑐 = 𝑦𝑚𝑖𝑡𝑡𝑒− (𝑦+ ∆)

4.8

Abbildung 4.6: Bestimmung des Mittelpunkts des Kreises

Phasenlage 𝝋 zwischen der Lamellen-Mittellinie und der x-Achse: Die Phasenlage wurde durch die Winkelgeometrie berechnet und ist in der Abbildung 4.7 dargestellt. Der Win-kel α ist durch die Anzahl der Lamellen bestimmt und entspricht der 360-Phasengrade. Der Winkel 𝛽 wurde als Winkel zwischen der Gerade und der x-Achse bestimmt. Somit wurde be-rechnet, wie oft 𝛼 in 𝛽 passt. Durch das Proportionalitätsprinzip wurden die Nachkommastel-len in Phasengrad umgerechnet.

mit: 𝑛 = Anzahl der Lamellen

𝛼 =360°

2 ∙ 𝑛 4.9

𝑥 − 𝐴𝑐ℎ𝑠𝑒, bei Rekonstruierung aus dem Radonbild

𝑦

0 𝑥

𝑥 − 𝐴𝑐ℎ𝑠𝑒, Kantenbild

𝑦

𝑦1 = 𝑝1𝑥 + 𝜏1

𝑦2 = 𝑝2𝑥 + 𝜏2

2∆ Kantenbild

Kantenbild, quadratisch

Abbildung 4.7: Berechnung der Phasenlage

mit: 𝑛 =𝛽

𝛼 - Divisionsergebnis als reelle Zahl.

𝑛 =𝛽

𝛼 - Divisionsergebnis als ganze Zahl 𝜑= 90 – Korrekturwinkel, Phasengrad

Die Zuordnung einer Geraden zu der unteren oder oberen Lamellengeraden wurde durch ei-nen Stichtest realisiert. Je nachdem, ob die Gerade sich oben oder unten befindet, wird ein Korrekturwinkel 𝜑 zu der Endphase addiert oder subtrahiert wie in dem gepunkteten Bild-bereich der Abbildung 4.7 gezeigt wird.