|
|
Faser-Orientierung mit atan2() |
|
Olivier |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.03.2012, 12:42
Titel: Faser-Orientierung mit atan2()
|
|
Hallo,
Ich muss Informationen über Faserwinkel aus Mikroskopie-Bildern entziehen. Dazu unterteile ich meine Bilder mit der blocproc function in Teilbereiche und berechnen für jeden Bereich die Orientierung der Fasern aus dem Strukturtensor.
Dies ergibt auch gute Resultate, jedoch scheint es ein Problem bei 45°, also für arctan(..)=90° zu geben. Hier bekomm ich einen Peak, welcher nicht dort sein dürfte (zB wenn ich das Bild um 90° drehe, habe ich noch immer einen Peak bei 45°, also ist es ein Berechnungsproblem). Die Berechnungsformel müsste soweit stimmen, es gibt auch sinnvolle Resultate für alle Winkel mit Ausnahme von 45°.
Kann es sich um ein numerisches Berechnungsproblem handeln (eventuell ein Problem von Genauigkeit, oder der function atan2)? (Immerhin ist tan für 90° undefiniert).
|
|
|
|
|
Olivier |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.03.2012, 08:49
Titel:
|
|
Alternativ könnte ich mir auch noch vorstellen dass das Problem vielleicht mit Randeffekten zusammenhängt. Weiss jemand ob solche Probleme mit blockproc bekannt sind?
|
|
|
aj.geissler |
Forum-Guru
|
|
Beiträge: 251
|
|
|
|
Anmeldedatum: 26.11.07
|
|
|
|
Wohnort: Seeheim-Jugenheim
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.03.2012, 12:05
Titel:
|
|
Hi,
mach doch einmal eine Fehlerrechnung.
Anhand der Ableitungen - aber auch schon an der Originalgleichung - erkennt man, daß es im Bereich (0,0) eine Singularität gibt.
Kleine numerische Streuungen für die Komponenten Ixx und Iyy, die durch die Ortsdiskretisierung digitalisierter Bild selbstverständlich sind, führen so zu eklatanten Fehlern bei der Winkelberechnung.
Viele Grüße
Andi
|
|
|
Olivier |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.03.2012, 23:16
Titel:
|
|
Hoi,
vielen Dank für die Antwort, das macht eigentlich Sinn.
Gibt es eine Möglichkeit die fehlerhaften Rechnungen rauszufiltern? Im Moment habe ich eine "Notlösung" gewählt, indem ich die Werte bei 45° rausnehme und durch die Nachbar-werte ersetze:
[b][y,x]= hist (angles,180);
for i=1:length(x)
if x(i)>44 && x(i)<45
y(i)=.5*(y(i-1)+y(i+2));
elseif x(i)>45 && x(i)<46
y(i)=.5*(y(i-2)+y(i+1));
end
end[b]
Das funktioniert eigentlich auch, ist aber keine "schöne" Lösung.
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
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.
|
|