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

Finde die Längste zusammenhängende Liene und Speichere die

 

Robert1991

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2023, 12:52     Titel: Finde die Längste zusammenhängende Liene und Speichere die
  Antworten mit Zitat      
Hey Leute,

ich habe eine Schwarz weise Bildmatrix die Verschiedene Figuren Darstellen. Ich möchte die Längste zusammenhängende Liene in dieser Bildmatrix finden und nur diese in eine gleich große neue Bildbratmix speichern.
Im Fall meines Bildes wäre das der umriss meines 'Blattes'. Es ist mir wichtig, das die Gesamte Länge der Liene gemessen wird, also ein mal hin und wieder zurück.

Leider fehlt mir dafür jeglicher Ansatz.

Ich bin also über Lösungsvorschläge und auch Codeschnipsel sehr dankbar.

Schnittvorlage SchwarzWeiss.png
 Beschreibung:
Zu bearbeitendes Bild

Download
 Dateiname:  Schnittvorlage SchwarzWeiss.png
 Dateigröße:  2.4 KB
 Heruntergeladen:  109 mal


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 08.03.2023, 22:46     Titel:
  Antworten mit Zitat      
Hallo,

schau dir am besten die Funktion bwconncomp (https://de.mathworks.com/help/images/ref/bwconncomp.html) an. Damit müsstest du ziemlich weit kommen. Ansonsten könnten dir evtl. die regionprops noch weiterhelfen.

Ich kann leider im Moment nichts davon test, da ich keinen Zugriff auf die Image Processing Toolbox habe, aber das Beispiel in der Dokumentation müsste sich sehr leicht auf dein Problem anpassen lassen.

Viele Grüße
Steve
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 09.03.2023, 10:20     Titel:
  Antworten mit Zitat      
Update: Dank MatlabOnline konnte ich doch ein bisschen probieren...

Code:
% Bild einlesen
BW = imread('Schnittvorlage SchwarzWeiss.png');
% nur das erste Layer weiterverwenden (binary)
BW(:,:,2:3) = [];
imshow(BW)

% Option 1: nur geschlossene Objekte betrachten
% Objekte füllen
BWfill = imfill(BW,'holes');
imshow(BWfill)
% Umriss der gefüllten Objekte erstellen
BWoutline = bwperim(BWfill);
imshow(BWoutline)
% Objekteigenschaften auslesen
CC1 = bwconncomp(BWoutline)  % hier werden 4 Objekte erkannt
% Anzahl der Pixel pro Objekt bestimmen
numPixels = cellfun(@numel,CC1.PixelIdxList);
% Maximum und zugehörige Objektnummer bestimmen
[maxLength1, idx1] = max(numPixels)
% Bild komplett schwärzen
BWoutline(:) = 0;
% nur das Objekt mit der max. Umrandung darstellen
BWoutline(CC1.PixelIdxList{idx}) = 1;
imshow(BWoutline)

% Option 2: alle zusammenhängenden Linien betrachten
CC2 = bwconncomp(BW)   % hier werden 7 Objekte erkannt (zusätzlich die Blattadern)
numPixels2 = cellfun(@numel,CC2.PixelIdxList);
[maxLength2, idx2] = max(numPixels)
BW2 = zeros(size(BW));
BW2(CC2.PixelIdxList{idx}) = 1;
imshow(BW2)


Gruß
Steve
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
rob1991

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2023, 15:59     Titel:
  Antworten mit Zitat      
Danke, das hat mir sehr geholfen
 
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.