Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Quelltextoptimierung

 

jo
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2008, 01:28     Titel: Quelltextoptimierung
  Antworten mit Zitat      
Hallo zusammen.

Ich bin gerade dabei ein Matlab Programm zu schreiben, welches die längste Linie (max. Entfernung von 2 Punkten) in einer Umrisskontur eines Objektes berechnet (sieht in etwa so aus, als würde man den 'edge' Befehl benutzen).

Soweit läuft das Programm mit 2 for Schleifen. Das Problem ist nur, dass es jetzt - mit einem Testbild - schon langsam läuft. Später soll dieses Programm auf vielleicht 10 bis 50 mal so große Bilder angewendet werden. Es wäre also extrem hilfreich, wenn mir jemand einen Tipp geben könnte, wie man dieses Programm effizienter gestalten könnte.
Ich hab es mittels Vektorisierung versucht, hab es aber leider nicht hinbekommen.

Code:

max_len2 = 0;

[y_Points x_Points] = find(BW2 == 1);
k1 = 1:length(x_Points);
xy = [y_Points(k1) x_Points(k1)];

for k1 = 1:length(x_Points)
    for k2 = 1:length(y_Points)

        len = sqrt((xy(k1,1) - xy(k2,1))^2 + (xy(k1,2) - xy(k2,2))^2);

        if (len > max_len2)
            max_len2 = len;
            xy_long_1 = [xy(k1,1) xy(k1,2)];
            xy_long_2 = [xy(k2,1) xy(k2,2)];
        end
    end
end
 


Noch eine kurze Programmerklärung hinterher:

- BW2 ist die Kontur eines 2D - Objektes (schwarzes Bild mit weißer Konturlinie)
- Die weißen Punkte in der Matrix BW2 werden mittels find gesucht und in xy gespeichert
- Vergleich jedes einzelnen Pixels mit einander, um die längste Ausdehnung der Kontur zu berechen (gerade Linie)


Grüße

Jo

Edit: Hatte ich fast vergessen: Die Form ist unregelmäßig, d.h. man kann z.B. den hough Befehl nicht anwenden.
Private Nachricht senden Benutzer-Profile anzeigen


jo
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.01.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.02.2008, 00:23     Titel:
  Antworten mit Zitat      
Hat keiner eine Idee?
Komm einfach nicht weiter damit... Und bei der jetzigen "Schnelligkeit" wird das ganz am Ende echt ewig dauert. Ihr würdet mir sehr helfen, wenn ihr mir einen Tipp geben könntet, wie ich schneller machen könnte.

Grüße

Jo
Private Nachricht senden Benutzer-Profile anzeigen
 
tompie
Forum-Guru

Forum-Guru


Beiträge: 260
Anmeldedatum: 19.09.07
Wohnort: München
Version: immer alles
     Beitrag Verfasst am: 27.02.2008, 14:49     Titel:
  Antworten mit Zitat      
Hallo,

ein klassisches Problem: Berechnung der Paarverteilungsfunktion. Schau Dir doch mal folgendes File an:

http://www.mathworks.com/matlabcent.....18937&objectType=file

Das ist genau das, was Du brauchst.

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


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2019 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.