WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Kreissektor

 

marzl
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2010, 16:31     Titel: Kreissektor
  Antworten mit Zitat      
Tagchen alle zusammen,

ich habe ein Kreis als Objekt der als Pixelwerte SNR Werte hat. Um diese auszuwerten habe ich mir zwei Arten ausgedacht. Einmal der SNR Verlauf über den Radius, das hab ich auch geschaft. Nun möchte ich aber auch den SNR in Abhängigkeit vom Winkel grafisch darstellen. Habe mir gedacht, dass ich das Kreis quasi wie eine Uhr einteile...bei 12uhr gehts los,also Null Grad...bei 3Uhr wären 90grad usw. nur in viel kleineren Winkeln. Meine Idee war, dass alles nutzen kann was ich für die darstellung SNR in Abhängigkeit vom Radius gemacht habe. Wollte es vielleicht über die Fläche eines Kreissektors lösen:

A=Alpha/360grad * pi *r²
r² =(x-xm)²+(y-ym)² (das hab ich schon)

aber ich weiß nicht wie ich die Fläche des Kreissektors mit meinem Objekt in Verbindung bringen kann, dass ich eine Maske erhalte und somit nur die SNR werte des Kreissektors habe.

Vielleicht ist meine Idee auch total falsch und einer von euch hat eine bessere?!

adieu


PS: Hier mal mein Code für den SNR verlauf über den Radius, falls das helfen sollte oder wen es interessiert


Code:

for ri=1:1:10 %Anzahl der Abschnitte des Radiuses
    for i=1:1:length(DCMContent)
        disp(i);
        L=bwlabel(SNR(:,:,i));
        s=regionprops(L,'all');
        if isempty(s);continue;end
        si=size(s);
        ar=[];
        for u=1:1:si(1)
            ar(u)=s(u,1).Area;
        end
        [mx,my]=max(ar);
        if mx<=7000;disp(mx);continue;end %fläche kleiner als 7000 Pixel, dann gehts zur nächsten Schicht
        ce=s(my,1).Centroid;
        Is=size(s(my,1).Image);
        [X,Y]=meshgrid(1:256,1:256);
        rq=(X-ce(1)).^2+(Y-ce(2)).^2;
        ct(:,:,i)=(rq<=ri*((Is(1)/20)^2))&(rq>((ri-1)*(Is(1)/20)^2))&c(:,:,i);
    end
    mt(ri)=mean(SNR(ct));
    St(ri)=std(SNR(ct),1);
    disp(ri);
end
save([PathName,'\','Tiefenwerte.mat'],'mt','St');
 

_________________

der marzl
Private Nachricht senden Benutzer-Profile anzeigen


marzl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2010, 14:00     Titel:
  Antworten mit Zitat      
hat keiner eine idee oder hab ichs einfach blöd beschrieben,dass ihr nicht wisst was ich will!?

ahoi
_________________

der marzl
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.10.2010, 23:51     Titel:
  Antworten mit Zitat      
Hallo Marzl,

ich habe nicht verstanden, was Du meinst.
Kannst Du das Problem so weit umformulieren, dass Du eine konkrete Fragen stellen kannst?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
marzl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2010, 10:23     Titel:
  Antworten mit Zitat      
Hallo Jan

hab mal ne kleine skizze angehangen:

der Kreis ist mein Objekt! Nun möchte ich diesen in "küchenstückchen" unterteilen, im beispiel sind es eben 8, aber mehr wär besser. Nunmöchte ich von jedem "Kuchenstück", also Kreissektor, den Mittelwert aller Pixel berechnen. Also wär es am besten, wenn ich irgendwie eine Maske bekommen würde....oder vielleocht hast du eine andere Idee?

Grüße aus HD nach HD -,-

kreissektor.pdf
 Beschreibung:

Download
 Dateiname:  kreissektor.pdf
 Dateigröße:  12.26 KB
 Heruntergeladen:  446 mal

_________________

der marzl
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.10.2010, 11:25     Titel:
  Antworten mit Zitat      
Hallo Marzl,

es wird ein wenig klarer. Nächste Frage:

Zitat:
Nunmöchte ich von jedem "Kuchenstück", also Kreissektor, den Mittelwert aller Pixel berechnen.

Welche Pixel?
In welcher Form liegen denn Deine Messwerte oder simulierten Werte oder was sonst denn vor? Hast Du sie als Pixel-Bild? Es wäre viel einfacher und deutlich genauer, wenn Du die Koordinaten der Punkte zur Verfügung hättest. In Polar-Koorinaten umgerechnet (CART2POL) ist eine Einteilung in Segmente ziemlich einfach:
1 + FLOOR(AnzahlDerSegmente * Rotations-Winkel / 2 * pi)
Das wäre schon der Index des Segments, zu dem jedes Pixel gehört.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
marzl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2010, 11:49     Titel:
  Antworten mit Zitat      
Mahlzeit,

im anhang findest du eine Datei mit der ich arbeite! Da ist eine Matrix mit dem Namen "SNR". Es ist eine 3D Matrix, vobei die x-y ein Bild mit 256x256 ist und z die anzahl der bilder (bsp.31)! Jedes Pixel ist ein SNR-wert! Ich möchte nun zum besipiel bilde SNR(:,:,1) so wie in der skizze einteilen und dann alle Pixelwerte, also SNR-Werte die in einem "Kuchenstück" sind zu mean zusammenrechnen! letztlich möchte ich einen Grafenverlauf vom SNR in Abhängigkeit des Winkels haben!

Da ich auch erst neu hier bin, hab ich wohl paar probleme alles wichtige und genaue hier zu erläutern, damit mir jemand helfen kann...bitte das zu entschuldigen...hoffe aber,dass es jetzt klarer ist!?

LG

ergebnisse.rar
 Beschreibung:

Download
 Dateiname:  ergebnisse.rar
 Dateigröße:  8.16 MB
 Heruntergeladen:  522 mal

_________________

der marzl
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.10.2010, 12:13     Titel:
  Antworten mit Zitat      
Hallo marzl,

ich kann Dein MAT-File leider nicht öffnen, weil ich auf meinem Internetrechner kein Matlab installiert habe.
Soweit ich das verstanden habe, könnten Deine Daten folgende Form haben:
Code:
Data = rand(256, 256, 31);

Welche Werte befinden sich darin? Ist ein "Pixel" eine 1 und ein "Nicht-Pixel" eine 0?

Dummy-Testdaten per RAND sind im Forum besser. MAT-Files sind nur zu speziellen Matlab-Versionen kompatibel und können Matlab auch schon mal crashen lassen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
marzl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2010, 12:46     Titel:
  Antworten mit Zitat      
Mein Objekt hat als Pixelwerte SNR-Werte und alles was nicht Objekt ist, hat als Pixelwert 0! siehe screenshot im anhang!

PS: in dem mat-file sind nur Matrizen usw. denkemal das kann jede Matlab version normal öffnen!

screenshot.JPG
 Beschreibung:

Download
 Dateiname:  screenshot.JPG
 Dateigröße:  367.45 KB
 Heruntergeladen:  640 mal

_________________

der marzl
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.10.2010, 14:28     Titel:
  Antworten mit Zitat      
Hallo Marzl!

Im Screenshot sehe ich eine große Tabelle. Was die nun mit Deinem [256x256x31] Array zu tun hat, weiß ich nicht.

Ich denke auch, dass Dein MAT-File harmlos ist und vielleicht hast Du es ja auch mit "save -v6" erstellt, so dass ich es auch mit meinem Matlab 6.5 lesen kann.
Ich könnte aber auch ein MAT-File posten, das Dir den Rechner abschießt. Deshalb öffne ich fremde MAT-Files nur, wenn es notwendig ist.

Zurück zum Problem:
Nehmen wir also eine [256x256] Matrix aus Deinen Daten. Dann hast Du zu jedem Pixel die Koordinaten (nämlich die Indices) und einen Wert.
1. Kannst Du nun diese Cartesischen Koordinaten in Polar-Koordinaten umrechnen? Da hatte ich schon etwas drüber sgeschrieben.
2. Kannst Du nun anhand des Winkels die Pixel den einzelnen Kreissegmenten zuordnen?
3. Kannst Du dann noch die gewünschten Berechnungen mit diesen Pixels durchführen?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
marzl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2010, 14:50     Titel:
  Antworten mit Zitat      
der screenshot zeigt einen ausschnitt aus einem meiner "bilder", also bsp. SNR(:,:,1)!

Aber jetzt versteh ich was du meinst mit den Polarkoordinaten!

DANKE Smile

Dann ist mir dein 2. und 3.Punkt logisch!

ABER: der Mittelpunkt des 256x256 Matrix, ist nicht der gleiche Mittelpunkt von meinem Objekt, was ja sehr wichtig ist für die genauigkeit. Hast du eine Idee?
Und kann ich festlegen, wo meine 0Grad sind?also nicht das 3Uhr auf 0/360grad liegt sondern 12uhr!?

Dann werd ich mal versuchen deine Idee umzusetzten, werd dann berichten von meinem erfolg/misserfolg

LG
_________________

der marzl
Private Nachricht senden Benutzer-Profile anzeigen
 
marzl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2010, 16:35     Titel:
  Antworten mit Zitat      
Ich mal wieder,

ist alles nicht so einfach für mit, da ich erst seit 3monaten mit Matlab arbeite.

Mit "[X,Y]=meshgrid(1:256,1:256)" erstelle ich meine Indices und über "[THETA,RHO] = cart2pol(X,Y)" kann ich für jedes Pixel die Polarkoordinaten bestimmen. Über "regionprops" und "centroid" berechne ich den mittelpunkt des objektes. Nun ist die Frage, wie ich den Koordinatenursprung zu dem punkt "centroid" bekomme?

tschö und danke schonmal
_________________

der marzl
Private Nachricht senden Benutzer-Profile anzeigen
 
marzl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2010, 14:47     Titel:
  Antworten mit Zitat      
Tagchen,

ich bins mal wieder!

Hab folgendes Problem mit meinem Code

Code:


for a=0:10:350
     [X,Y]=meshgrid(1:256,1:256);
    for i=length(DCMContent):-1:1
        X=X-ce(1);
        Y=Y-ce(2);
        [THETA,RHO] = cart2pol(X,Y);
        THETA=THETA.*(180/pi);
        cth(:,:,i)=(a)<=THETA<(a+10);
        cr(:,:,i)=RHO<=(Is(1)/2);
    end
    ma(a)=mean(SNR(cth)& SNR(cr));
    sa(a)=std(SNR(cth)& SNR(cr),1);
end
 

So hab ich mir das gedacht!
Will den kreis in 10Grad schritten durchgehen, daher die erste schleife! Die 2.schleife ist für meine n verschiedenen Bilder die ich auch einzeln durchgehe. Um den Koordinaten ursprung zu dem Mittelpunkt,Variable ce, zubekommen das X-ce(1) usw.!bsp: ce= (128 132)!
SNR ist eine 256x256xn Matrix!
1.Problem: die Winkel! erste quadrant hat negativen winkel...also anstatt wie es in der Hilfe bei "cart2pol" mit positiven winkeln los geht, ist es bei mir negativ! quadrant 3 und 4 sind wieder positiv
2.Problem: es geht nicht über 180grad...sondern er geht dann eben in die andere richtung, sodass ich keine 270grad haben sondern eben +90grad zw. quadrant 3 und 4!
3.problem: ich glaube meine mean berechnung geht so nicht.. oder doch?

dann freu ich mich schon auf eure verbesserungsvorschläge und danke auch schonmal wie verrückt!! Smile

adieu
_________________

der marzl

Zuletzt bearbeitet von marzl am 26.10.2010, 15:20, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2010, 14:53     Titel:
  Antworten mit Zitat      
Nur so.
Du willst den ganzen Kreis durchgehen?
Warum geht dann die Schleife nur bis 350?
 
marzl
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 05.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.10.2010, 15:03     Titel:
  Antworten mit Zitat      
Hey,

ich brauch dann immer den Bereich zw. 0grad und 10grad, dann weiter zw. 10 und 20grad usw.!

hab ja dann bei der Abfrage stehen:
cth(:,:,i)=(a)<=THETA<(a+10);

verstehst dus jetzt?
also ich find es für mich logisch...aber vielleicht hab ich auch ein denkfehler?!

LG
_________________

der marzl
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 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.