Verfasst am: 24.12.2009, 00:28
Titel: Problem bei ID-zuordnung durch Differenzbildung
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 ifisempty(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 ifisempty(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
Einstellungen und Berechtigungen
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
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.