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

Plot im falschen Fenster

 

captaincaos
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.12.16
Wohnort: ---
Version: 2016a, 2016b, 2018a
     Beitrag Verfasst am: 14.12.2016, 08:30     Titel: Plot im falschen Fenster
  Antworten mit Zitat      
Hallo liebe Community,

ich versuche derzeit in einer for-Schleife mehrere Bilder hintereinander zu zeigen und in diese einen errechneten Graphen zu plotten. Das funktioniert auch soweit nur kommt Matlab beim schnellen durchlaufen der Schleife auch mal durcheinander, so dass der Graph hin und wieder nicht in das zugehörige Bild geplottet wird.
Stattdessen wird der Graph dann in das vorherige oder nachfolgende Bild geplottet, in diesem befinden sich dann zwei Graphen.

Mein Code sieht derzeit folgendermaßen aus:
Code:
for ...

% hier werden die Bilder nacheinander automatisch eingelesen,
% dann werden die Bilder bearbeitet und der Graph berechnet

figure;
imshow(img);
hold on
plot(...);
hold off

end


Gibt es z. B. eine Möglichkeit Matlab zu sagen, dass langsamer gerechnet werden soll aber dafür alles korrekt geplottet wird?

Allerdings wäre mir eine Lösung ohne Performanceverlust am liebsten, da das mit dem Plotten so schon etwas dauert Wink .

Gruß
captaincaos
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 14.12.2016, 09:28     Titel:
  Antworten mit Zitat      
Man kann
Code:
geeignet einfügen.

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.12.2016, 10:16     Titel:
  Antworten mit Zitat      
Hallo,

am sichersten dürfte sein, explizit das Koordinatensystem anzugeben, z.B.

Code:
f = figure;
ax = axes('Parent', f);
imshow(img, 'Parent', ax);
hold(ax, 'on')
...


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
captaincaos
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.12.16
Wohnort: ---
Version: 2016a, 2016b, 2018a
     Beitrag Verfasst am: 14.12.2016, 10:18     Titel:
  Antworten mit Zitat      
Danke Andreas,

es hat funktioniert.

Musste es aber an mehreren Stellen einfügen, wodurch das ganze deutlich langsamer wurde. Also falls jemand noch eine Lösung hat die nicht zu einem Performanceverlust führt wäre ich dafür auch dankbar.
Ansonsten genügt die Lösung von Andreas fürs erste.

Gruß
captaincaos
Private Nachricht senden Benutzer-Profile anzeigen
 
captaincaos
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.12.16
Wohnort: ---
Version: 2016a, 2016b, 2018a
     Beitrag Verfasst am: 14.12.2016, 10:26     Titel:
  Antworten mit Zitat      
Hallo Harald,

dein Vorschlag hat, nur schnell mal abgeschrieben, nicht funktioniert.
Damit habe ich das gleiche Problem wie vorher. Müsste ich dort noch evtl. etwas anpassen?

Gruß
captaincaos
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.12.2016, 11:33     Titel:
  Antworten mit Zitat      
Hallo,

dann bitte ein konkretes, reproduzierbares Beispiel. Ich kann mir fast nicht vorstellen, dass ein Plot in der falschen Figure landet, wenn das Koordinatensystem explizit angegeben wurde.

Grüße,
Harald
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: 14.12.2016, 12:06     Titel:
  Antworten mit Zitat      
Hallo captaincaos,

Den Parent eines Plots anzugeben kann kaum zu einem Performance-Einbruch führen, denn es ist nicht weniger Arbeit den aktuellen Parent automatisch zu bestimmen (was ja in Deinem Fall nicht läuft). Wenn die Objekte immer noch nicht im richtigen Fenster platziert werden, hast Du offenbar einen Befehl noch nicht angepasst.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.12.16
Wohnort: ---
Version: 2016a, 2016b, 2018a
     Beitrag Verfasst am: 14.12.2016, 12:27     Titel:
  Antworten mit Zitat      
Hallo,

ich habe mal eine Bildserie als Beispielen angehängt.
Ein konkretes Code-Beispiel sähe so aus:
Code:
% Verzeichnis wählen und Bilder einlesen

img_path = ('...');
filenames = dir(img_path);
filenames = {filenames.name};


% Beginn der for-Schleife

for k=3:numel(filenames)
% Bei jedem Durchgang wird ein neues Bild eingelesen
    data = fullfile(img_path,filenames{3});
    img = imread(data);

% Größe des Bildes bestimmen
    image_size = size(img);

% hier wird dann das Bild gefiltert und binärisiert, z.B. so:
    img = rgb2hsv(img);
    img(:,:,2) = histeq(img(:,:,2),16;

    for m=1:image_size(1)
        for n=1:image_size(2)
            if img(m,n,2)<0.95
                img(m,n,:) = 0;
            end
            if img(m,n,3)<0.5
                img(m,n,:) = 0;
            end
        end
    end

    img = hsv2rgb(img);
    img = rgb2gray(img);
    img = imbinarize(img);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%% Hier kommt der Teil um den es geht %%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% z.B. Kreise finden und plotten

    [centers,radii] = imfindcircles(img,[5 200]);
    f = figure;
    ax = ('Parent', f);
    imshow(img, 'Parent', ax);
    hold (ax, on)
    viscircles(centers, radii);
    hold off

end


image20160410-15-49-48.zip
 Beschreibung:

Download
 Dateiname:  image20160410-15-49-48.zip
 Dateigröße:  7.55 MB
 Heruntergeladen:  350 mal
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: 14.12.2016, 13:25     Titel:
  Antworten mit Zitat      
Hallo captaincaos,

Gut. Und was läuft jetzt anders als gewünscht?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.12.16
Wohnort: ---
Version: 2016a, 2016b, 2018a
     Beitrag Verfasst am: 14.12.2016, 13:43     Titel:
  Antworten mit Zitat      
Hallo,

bei mir werden zum Teil die Plots (in diesem Beispiel die Kreise) in die falschen Bilder geplottet.

Gruß
captaincaos
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.12.2016, 14:47     Titel:
  Antworten mit Zitat      
Hallo,

dann gib doch bitte bei dem Aufruf, der die Kreise plottet (viscircles?) das Koordinatensystem an.
Code:
viscircles(ax, centers, radii);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
captaincaos
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 07.12.16
Wohnort: ---
Version: 2016a, 2016b, 2018a
     Beitrag Verfasst am: 14.12.2016, 15:00     Titel:
  Antworten mit Zitat      
Jetzt funktioniert es wie es soll. Es hat wirklich nur das ax in viscircles(ax,centers,radii); gefehlt.

Danke an alle!!

Gruß
captaincaos
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.