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

Problem bei ID-zuordnung durch Differenzbildung

 

---c---
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 26.11.09
Wohnort: ---
Version: 2008b
     Beitrag Verfasst am: 24.12.2009, 00:28     Titel: Problem bei ID-zuordnung durch Differenzbildung
  Antworten mit Zitat      
hallo

ich habe folgendes Problem:
ich suche in einem Bild über eine Funktion die Mittelpunkte und Radien von 4 Kugeln. Dadurch bekomme ich eine 4x3 Matrix (daten) zurück. 1.Zeile enthält x-Koordiante, y-Koordiante, Radius. 2. Zeile x-Koordinate usw...
Um nun über mehrere Bilder die Kugeln zu identifizieren, möchte ich ihnen IDs geben. Die Idee ist, den Unterschied zu den Koordinaten im vorangegangenen Bild zu berechnen und dann die ID den Daten zuzuordnen, die am nähesten dranliegen.
Ich habe etwas geschreiben, aber es funktioniert nicht und ich weiß absolut nicht woran es liegen könnte. Die IDs ändern sich dauernd, genauso wie wenn ich das Skript nicht verwende und die Kreise nach ihrem Auftreten ausgeben lasse.


Code:
%% ID suchen
    %% Wenn alt leer ist, dann auffüllen mit aktuellen Werten
    if isempty(alt)
        alt(:,1:2)=[daten(:,1), daten(:,2)];
    %% Werte von ID in alt speichern für die nächste Berechnung
    else
        alt(:,1:2)=[ID1(:,1), ID1(:,2)];
    end

    %% Für jeden Mittelpunkt
    for q=1:4
    %% Differenz von aktuellem Mittelpunkt(q) zu allen anderen
        differenz = zeros(1,4);
        for k=1:4
            differenz(k)=sqrt(((daten(q,1)-alt(k,1))^2)+((daten(q,2)-alt(k,2))^2));
        end
        %% Minimum der Differenz ist wahrscheinlich der Mittelpunkt des
        %% vorherigen Bildes
        gefunden=find(differenz==min(differenz));
       
        %% Am Anfang ID mit den ersten Mittelpunkten füllen  
        if isempty(ID1)
            ID1(q,1:3)=[q, daten(q,1), daten(q,2)];
        else
            %% Wenn es mehr als eine Übereinstimmung gab, wird der letzte
            %% übernommen
            if (length(gefunden)>1)
                for v=1:length(gefunden)
                    if (ID1(q,1)==gefunden(v))
                        ID1(q,1:3)=[q, daten(gefunden(v),1), daten(gefunden(v),2)];
                    end
                end
            %% ID mit den Daten der Stelle der gefundenen Übereinstimmung
            %% füllen
            else
                ID1(q,1:3)=[q, daten(gefunden,1), daten(gefunden,2)];
            end
        end
    end



wenn noch etwas am Problem an sich unklar ist, dann fragen.

Ich bin für jede Hilfe dankebar
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.