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

binäres bild in cell array übertragen

 

norwood
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 12.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.06.2012, 12:27     Titel: binäres bild in cell array übertragen
  Antworten mit Zitat      
ich bin hier langsam am verzweifeln.

aufgabe ist, weiße bereiche in einem rgb-bild zu finden und in ein binäres bild zu übertragen. das hat soweit auch geklappt:

Code:
rgbImage = imread('IMAGE005.Tif');
[rows columns numberOfColorBands] = size(rgbImage);
redChannel = rgbImage(:, :, 1);
greenChannel = rgbImage(:, :, 2);
blueChannel = rgbImage(:, :, 3);
spots = blueChannel == 255 & greenChannel == 255 & redChannel == 255;
spots = imclearborder(spots);
spots = imfill(spots, 'holes');


die weißen bereiche sollen dann als zusammenhängende einheiten erkannt und gespeichert werden.
mit der image-toolbox und befehlen wie bwlabel ist das ja alles kein problem.
unsere aufgabe ist aber, das ganze mit find und cell array zu machen.

die weißen flecken (also die einsen im binären bild) sollen im ersten schritt mithilfe des find-befehls lokalisiert werden und zusammenhängenden bereiche (also linear fortschreitenden indizes) zusammengefasst und in cell arrays abgespeichert werden. diese sollen dann später miteinander verglichen werden um zusammenhängende bereiche auch in den cell arrays zusammenzufassen.

ich muss leider zugeben dass das mein erster kontakt mit programmierung überhaupt ist.

ich kann mir den erste schritt in worten formulieren aber an der umsetzung hapert es.
so wie ich es mir erklären kann, bräuchte ich eine schleife, die die vom find befehl ausgegebenen indizes der einsen durchläuft und vergleicht. also beim ersten wert beginnt und ihn mit dem zweiten vergleicht. sollte der zweite um eins größer sein als der erste, müssen sie zusammen in eine cell gespeichert werden, dann der dritte mit dem zweiten verglichen und falls er die bedingung weiter erfüllt ins selbe array wie die ersten beiden usw.
sollte die bedingung nicht erfüllt werden müsste das programm an diesem punkt beginnen, einen neuen array zu befüllen.

kann mir da jemand einen stoß in die richtige richtung geben?
Private Nachricht senden Benutzer-Profile anzeigen


norwood
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 12.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2012, 10:44     Titel:
  Antworten mit Zitat      
habe mir zum test mal eine kleine binäre matrix gebaut um eine schleife zu testen:

Code:
bild = [1 0 1 0; 1 0 1 0; 1 0 0 0; 0 0 1 1]
[zeilen spalten] = size(bild);
b = find(bild==1)
ende = length(b)


i = 2
for i = 2:ende
    if b(i) == b(i-1)+1
        cell(i-1) = {[b(i-1), b(i)]}
    else cell(i-1) = {[b(i)]}
    end
end


die zuordung ist allerdings noch nicht 100%ig. die schleife erkennt, dass 1 und 2 zusammengehören und speichert sie in eine cell ab, in der nächsten stehen dann aber 2 und 3 zusammen.
eigentlich sollten aber 1,2 und 3 zusammen in der ersten cell stehen.

wo liegt mein denkfehler?
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.