Verfasst am: 28.07.2010, 15:16
Titel: Querschnitt einer Matrix unter einem Winkel
Hallo zusammen,
ich habe eine Matrix, die mit einer Reihe von Werten gefüllt ist. Nun möchte ich durch die Matrix für einen beliebigen Winkel eine Reihe von Querschnitten ziehen. Wenn ich die Matrixwerte eines Querschnitts aufsummiere und alle Werte hintereinander darstelle, ergibt es somit eine Projektion der Matrix für diesen einen Winkel.
Ich habe schon eine ganze Weile darüber nachgedacht, wie man das geschickt umsetzen kann, stoße aber bei vielen Ansätzen an Unzulänglichkeiten.
Wie macht man so etwas geschickterweise? Für 45 Grad ist die Aufgabe sehr einfach, für 0 bzw. 90 Grad sowieso (Spalten- bzw. Zeilensummen). Welche Abfolge von Matrixelementen summiert man z.B. für 22,5 Grad auf?
Ich arbeite gerade an etwas Ähnlichem.
Man muss sich dafür die Punkte auf der Matrix winkelanhängig berechnen und diese dann auslesen und aufsummieren.
Hier ist ein Teil meines Codes:
Code:
function[Tracevalsum] = trace(Bild,Koor0,Theta,Step,sensorabstand)
%%
x0mat=coor2mat(Koor0(1,:)); % x0mat=coor2mat(x0): Startwerte werden auf Bildmatrix umgerechnet
y0mat=coor2mat(Koor0(2,:));
%--------------------------------------------------------------------------
%Winkelumrechnung
% Theta=mod(Theta,360); % modulo-Operation(360)Winkel werden umgerechnet zu Winkel zw 0:360
%--------------------------------------------------------------------------
n=0:(sensorabstand-1)/step; % n:Vektor von 0 bis Breite Bildmatrix
unRx=(x0mat+n*Step*-cosd(Theta)); % Positionsberechnung über trigonometrische Funktionen
x=round(unRx); % round: Rundung|Position muss gerundet werden
unRy=(y0mat+n*Step*sind(Theta));
y=round(unRy);
%--------------------------------------------------------------------------
% Traceval: auslesen der Bildmatrix an den Positionen x,y
Traceval=(Bild(sub2ind(size(Bild),y,x)));
Tracevalsum=sum(Traceval)';
Dazu muss du dir noch Startpunkte berechnen lassen die auf sensorabstand/2 liegen und schon funktioniert es.
N. Rolf
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.07.2010, 16:07
Titel:
Danke für die Antwort.
Das Problem ist bei diesen Winkel folgendes: Während eine Spaltensumme aus der Anzahl der Zeilenelemente besteht und 45°-Winkelsummen auch aus der gleichen Anzahl von Elementen besteht, werden bei allen anderen Summen unter Umständen mehr Matrixelemente aufsummiert, da die Querschnitte über mehrere Matrixzellen geht (zwar nur teilweise, aber irgendwie muss man ja definieren, welche Zellen dazugenommen werden).
Meiner Meinung nach lassen sich die Summen für 0, 90, +45 und -45 Grad zwar miteinander vergleichen, weil sie aus der gleichen Anzahl von Matrixelementen bestehen, aber alle für alle anderen Winkel macht man einen Fehler. Lässt sich dieser umgehen?
n ist in meinem Beispiel der Abstand an dem ausgelesen wird und der ist ja immer gleich für jeden Winkel den du über die Matrix legst und somit hat man immer eine feste Anzahl von Werten die man erhält.
Gruß Achi
N. Rolf
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.07.2010, 17:11
Titel:
Zunächst muss ich mich korrigieren, denn die +-45° lassen sich nicht mit den 0 und 90° vergleichen. Bei 0 und 90° hat man für jede Spalten- oder Zeilensumme die gleiche Anzahl von Elementen. Bei +-45° hat man zunächst ein Element, in der Mitte am meisten (Anzahl Zeile/Spalte bei quadr. Matrix) und danach wieder abnehmend. Ebenso sind sie nicht vergleichbar, weil es bei +-45° mehr Querschnitt gibt, wenn man die Querlinien jedes Anzahlselements einer Zeile/Spalte verfolgt.
@ Achi: Meiner Meinung nach summierst Du für EINEN Querschnitt manche Matrixelemente MEHRFACH auf, da die Schrittweite für den Randbereich sehr klein werden kann. Streng genommen ist das (insbesondere für kleine Matrizen) auch nicht korrekt.
Wieso die Schrittweite ist immer gleich und einfach mehrfaches von 1 n=0:(sensorabstand-1) 0,1,2,3...
Klar werden die Elemente mehrfach genommen in der Mitte einer Matrix, da führt kein weg dran vorbei. In meinem Fall, da ich es zur Rekonstruktion von Bildern benutze muss das Bild z.B. mit einem Rampfilter bearbeitet werden.
Suchg mal Radontransformation im Netz.
N. Rolf
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 28.07.2010, 17:43
Titel:
Meine Anwendung ist ebenfalls die Rekonstruktion von Bildern. Um die Rekonstruktionsmethode zu bewerten, wollte ich gerade diese Querschnitte eines bekannten Bildes erzeugen.
Die Radon-Transformation werde ich nochmal weiter verfolgen. Es scheint auf der gefilterten Rückprojektion zu basieren, die mir bereits über den Weg gelaufen ist. Kannst Du zu dem Thema gute Literatur oder Webseiten empfehlen?
Bei mir leider nicht. Hab den Befehl imrotate nicht
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.