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

Segmentierung der obersten Retinaschicht

 

Numi
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 22.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2012, 23:14     Titel: Segmentierung der obersten Retinaschicht
  Antworten mit Zitat      
Hallo Leute,
ich muss im Rahmen einer Projektarbeit die oberste Schicht der Retina(auf einem Oct Bild dargestellt) segmentieren. Nach einigen Schleifen/Filter hab ich das Bild bzw. Matrix (496x768) in folgender Form vorliegen:
0 0 0
0 0 0 0
0 0 1 1
0 1 0 0
1 1 0 0
0 1 0 0
0 0 0 0

Ich muss nun eine Schleife erstellen, die jede Spalte abläuft und die erste 1 markiert und die Werte dann in einem Vektor speichert. Weiß jetzt aber nicht wie die Schleifen aussehen bzw wie ich den Vektor in die Schleifen einbauen soll...

Ich hoffe es kann mir jemand weiterhelfen Smile
Private Nachricht senden Benutzer-Profile anzeigen


haxenmaxen
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2012, 11:05     Titel:
  Antworten mit Zitat      
Musst du denn eine for-Schleife bauen - das dauert ziemlich lange. Aber so in etwa würde es auch gehen:

%% Beispiel
a = [0 0 0 0;0 0 0 0;0 0 1 1;0 1 0 0;1 1 0 0;0 1 0 0;0 0 0 0];

%% 1'en in einen Vektor packen
[indexX indexY] = find(a);

%% erste 1 markieren
ersteEins = [indexX(1) indexY(1)];

%% oder auch so erste Eins finden
[ersteEinsX ersteEinsY] = find(a,1,'first');


PS: find läuft spaltenweise durch dein bild - also es ist auch wirklich die erste Eins erst nach Spalten gesucht
Private Nachricht senden Benutzer-Profile anzeigen
 
Numi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 22.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2012, 16:13     Titel:
  Antworten mit Zitat      
zunächst einmal danke , dass du dir die zeit genommen hast Smile nur ich versteh das noch nicht so ganz: also hab versucht meine Werte einzusetzen und es kam nichts brauchbares heruas:S

%%1'en in einen Vektor packen ---> hab ich so verstanden, dass ein Vektor der Größe 1 x768 (--> mein Bild(imgFilter) 496x768 groß ) erstellt werden soll
[indexX indexY] = find(size(imgFilter,2));

%% erste 1 markieren
ersteEins = [indexX(1) indexY(1)];

%% oder auch so erste Eins finden --> ist das eine andere möglichkeit? wenn ichs eingeb spuckts mir den ersten xWert aus, der eine eins enthält nämlich 184...aber es sollten mehrere Werte sein...also es läuft nicht über alle spalten Sad
[ersteEinsX ersteEinsY] = find(imgFilter,1,'first');

könntest du das vll etwas genauer erklären ??
Private Nachricht senden Benutzer-Profile anzeigen
 
haxenmaxen
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2012, 17:22     Titel:
  Antworten mit Zitat      
achso jetzt habe ich verstanden was du machen musst Wink

ok dann hier wäre ein bsp dafür (jetzt doch mit for-Schleife Wink)

a = [0 0 0 0;0 0 0 0;0 0 1 1;0 1 0 0;1 1 0 0;0 1 0 0;0 0 0 0];

%% 1'en in einen Vektor packen
alleEinsen = []; %leerer Vektor in den die Indizes der 'Einsen' hineinkommen
for i=1:size(a,2) % von 1 bis Anzahl der Spalten
[ersteEinsX] = find(a(:,i),1,'first'); % die erste Eins in der Spalte
alleEinsen = [alleEinsen; i ersteEinsX]; % Indizees in einen Vektor packen
end

%% Ausgabe
% Zeile der ersten Eins in erste Spalte
disp(alleEinsen(1,2))
% Zeile der ersten Eins in zweiter Spalte
disp(alleEinsen(2,2))
Private Nachricht senden Benutzer-Profile anzeigen
 
Numi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 22.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2012, 18:13     Titel:
  Antworten mit Zitat      
hey ich hab schon die richtigen Werte danke Smile nur ein kleines problemchen die Größe vom vektor stimmt nicht so ganz.Es sollte 1x768(=Anzahl der Spalten) sein, bekomm aber 1x757 raus....hab folgendes eingegeben:

alleEinsen = []; %leerer Vektor in den die Indizes der 'Einsen' hineinkommen
for i= 1:size(imgFilter,2) % von 1 bis Anzahl der Spalten
[ersteEinsX] = find(imgFilter(:,i),1 ,'first'); % die erste Eins in der Spalte
alleEinsen = [alleEinsen, ersteEinsX]; % Indizees in einen Vektor packen
end

[alleEinsen; i ersteEinsX]; --> kam bei mir leider error raus

danke nochmals für deine antworten Smile)
Private Nachricht senden Benutzer-Profile anzeigen
 
haxenmaxen
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 22.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.01.2012, 11:51     Titel:
  Antworten mit Zitat      
eigentlich müsste es korrekt sein.

bei mir wird alles korrekt ausgegben mit dem testvektor a

kann dir leider nicht sagen woran das liegt Smile
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 - 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.