ich bin gerade dabei einen einfachen RANSAC-Alg zu implementieren. Dabei sollen in einem Binärbild Linen erkannt werden. Die Funktionsweise meines Alg. sollte folgender masen sein:
1.finde alle pixel mit dem wert 1 (also alle weißen pixel)
2.wähle 2 zufallspunkte aus und berechne diese gerade.
3.berechne die distanz aller pixel zu dieser geraden
4.zähle wieviele punkte eine bestimmte distanz R (consensus set) zur geraden haben und speichere diesen wert und die beiden punkte der geraden
5. wiederhole schritt 2-4 ca.1000 mal
6. aus der Ergebnis tabelle, wähle die gerade die die meisten punkte mit einer bestimmten distanz hat als gesuchte linie.
Jetzt habe ich diese Funktion implementiert aber bekomm nicht so die gewünschten ergebnisse. Kann mir vlt jemand helfen? oder sieht ihr den fehler ?
%alle weißen Punkte aus dem Bild
xp=Ones(:,2);
yp=Ones(:,1);
%Distanz aller punkte zur geraden
d= (A*xp+B*yp+C)/abs((sqrt(A^2+B^2))) ;
%zähle wieviele punkte eine bestimmte distanz haben
Schwellwert = 1 ;
%habe ich gerade geändert aber das zusammen zählen funktioniert nicht so wie es sein sollte dieser Teil ist wohl falsch???
T=sum(-Schwellwert <= d <= Schwellwert);
Werte=[x1 y1 x2 y2 T];
Erg = cat(1,Erg,Werte);
end;
%finde das maximum an T, und diese gerade ist die gesuchte gerade
Maxi= max(Erg);
index = (Erg(:,5) == Maxi(:,5));
x1=Erg(index,1);
y1=Erg(index,2);
x2=Erg(index,3);
y2=Erg(index,4);
Result=[x1 y1 x2 y2 Erg(index,5)];
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.