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

Maske erstellen

 

Daniel_Ka

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.08.2011, 13:28     Titel: Maske erstellen
  Antworten mit Zitat      
Hallo comunity,

ich möchte über ein eingelesenes indiziertes Bild eine Maske legen.
Dazu möchte ich mit ginput(n) eine Reihe von Punkten übergeben, die die Ränder der Maske definieren. Der Bereich außerhalb der Maske soll den Wert 0 annehmen.
Leider habe ich bisher keine Lösung gefunden, bzw. nur mit der image processing toolbox, die ich leider nicht habe.
Hat jemand eine Idee, mit der ich mein Ziel ereichen könnte?
Vielen Dank.

Daniel


Hubertus
Forum-Meister

Forum-Meister


Beiträge: 1.034
Anmeldedatum: 08.01.09
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 02.08.2011, 15:52     Titel:
  Antworten mit Zitat      
Moin,

sollte mich wundern, wenn das ohne IPT geht. Es nützen Dir die ginput-Werte wenig. Du brauchst eine Funktion, die daraus eine zusammenhängende Fläche erkennt. Ein geschlossener Kreis ist so eine Fläche und das Beispiel zeigt, dass es in diesen Fällen auch ohne ITP geht:

Code:
I=double(I); % Bildmatrix
image=size(I);
[x,y] = ndgrid((1:image(1))-I(1),(1:image(2))-I(2));
mask = (x.^2 + y.^2)<I(3)^2;
figure(5); imshow(mask)
maske = I;
maske(~mask) = 0;
figure(7), imshow(maske,[])



Hubertus
Private Nachricht senden Benutzer-Profile anzeigen
 
Daniel_Ka

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2011, 13:03     Titel:
  Antworten mit Zitat      
Hallo, erstmal vielen Dank für deine Antwort Hubertus.
Klingt leider nicht so gut wie ich erhofft hatte.
Mein Gedanke, wie man eine Maske aufbauen könnte ist der Folgende:

Man übergibt mit ginput eine Reihe von Punkten und die zugehörigen x,y Koordinaten. Beginnend vom ersten Punkt zu zweiten Punkt, danach vom zweiten zum dritten Punkt usw. wird eine Funktion abschnittsweise definiert über die Geradengleichung.

Zum Beispiel:

übergebene Punkte: x1=10 y1=20 x2=100 y2=120

Dann könnte man eine Funktion im Bereich zwischen x=10 und x=100 definieren gemäß f(x) = (120-20)*x/(20-10)=10x

Im folgenden Bereich wird die Funktion dann durch die Geradengleichung zwischen dem zweiten und driten Punkt beschrieben. Am Ende dann logisherweise durch die Geradengleichung zwischen erstem und letztem Punkt.

Ich würde diese Taktik natürlich selbst auprobieren, aber ich arbeite zur Zeit an einem relativ langen Programm und die Zeit rennt mir davon, sodass ich hier einfach mal fragen würde, ob jemand Erfahrung damit hat, oder von vornherein sagen kann, dass meine Überlegung nicht zielführend ist, was mir eine Menge Zeit mit Ausprobieren sparen würde.

Daniel
 
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.