|
|
Linienerkennung und Vermessung beliebiger Vielecke |
|
weissdaniel |
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 05.05.14
|
|
|
|
Wohnort: Sulzfeld
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.05.2014, 08:21
Titel: Linienerkennung und Vermessung beliebiger Vielecke
|
|
|
|
|
Hallo,
ich habe ein ähnliches Problem wie in diesem Thread und könnte Eure Hilfe brauchen.
Mein Programm soll die Kanten in einem über imread bereitgestellten Bild automatisch erkennen. Dabei handelt es sich um die Kontur (2D) einer abgelichteten Figur.
Die Kanten dieser Figur sollen automatisch erkannte werden und durch Linen dargestellt werden. Beim Abgleich mit der erneut eingelesenen Datei sollen später Differenzen zwischen den Linien bestimmt werden.
Meine Idee war, die Eckpunkte der Figur zu bestimmen und diese dann durch linien verbinden zu lassen. Nur müsste die voll automatisch passieren.
Jemand eine IDEE???
EDIT BY DENNY, wurde aus dem Betragt gesplittet:
http://www.gomatlab.de/linien-auf-dem-bild-zeichnen-t19283.html
Danke schonmal für Eure Hilfe...
Beschreibung: |
mögliche Ausgangskontur, hier Graustufenbild, könnte aber auch RGB Farbraum sein. |
|
Download |
Dateiname: |
Bild1.jpg |
Dateigröße: |
10.47 KB |
Heruntergeladen: |
608 mal |
|
|
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.05.2014, 09:55
Titel:
|
|
Moin,
das hängt sehr stark vom Bildinhalt ab. Du kannst mal folgendes versuchen:
Grüße - Hubertus
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 23.05.2014, 10:04
Titel: Re: erkennen der Eckpunkte in Bild und verbinden mit Linie
|
|
|
|
|
weissdaniel hat Folgendes geschrieben: |
Hallo MATLAB-Forum,
ich bin neu hier und auch neu in der MATLAB Programmierung.
Momentan stehe ich vor folgender Aufgabe:
Zum Vergleich beliebiger Konturen soll ich eine Ausgangskontur über ein Bild einlesen und eine mögliche Abweichung der selben Kontur, in einem zweiten Bild, berechnen.
Anbei habe ich mal ein Bild einer möglichen Kontur gehängt.
Mein erster Ansatz war über bwtraceboundary eine Kontur über beide Bilder zu legen. Aufgrund der Pixelverläufe haben diese Außenkanten dann jedoch mehrere Schnittpunkte und die Linien lassen sich nicht bestimmen.
Zur weiteren Berechnung von evtl Drehwinkel und/oder Verschiebung in x oder y wäre eine Bestimmung und Darstellung der Linien auf den Konuren hilfreich.
Habt Ihr hierzu vielleicht eine elegante Möglichkeit zur Umsetzung oder hat vielleicht schon einmal jemand ein solches Problem gehabt?
|
Bitte keine Doppelpostings und keine Hijackings. Wenn du etwas hilfreiches gefunden hast,was dein Problem zu helfen lösen kann, dann poste dies immer in deinem Thread mit der Verlinkung darauf. Ansonsten führen Doppelpostings nur zur Verwirrung bei der Antworten.
Danke!
Der andere Thread wird entfernt, das Bild darauf habe ich hier in deinem Oberen Post beigefügt
Zuletzt bearbeitet von denny am 23.05.2014, 10:19, insgesamt einmal bearbeitet
|
|
|
Gesplittet: 23.05.2014, 10:06 Uhr von denny Von Beitrag Linien auf dem Bild zeichnen aus dem Forum Grafiken und Plots |
weissdaniel |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 05.05.14
|
|
|
|
Wohnort: Sulzfeld
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.05.2014, 10:18
Titel:
|
|
Hubertus hat Folgendes geschrieben: |
Moin,
das hängt sehr stark vom Bildinhalt ab. Du kannst mal folgendes versuchen:
Grüße - Hubertus |
Hallo Hubertus,
danke, das zeigt mir aber nur die Umrandung meiner Figur, siehe das Bild oben.
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 23.05.2014, 10:26
Titel:
|
|
Hallo weissdaniel
Da die Doppelpostings gegen der Forumregel verstoßen, wurde dein anderer Beitrag entfernt. Das Bild habe hier in deinem oberen Post beigefügt, die ursprüngliche Frage siehe in meinem Post von 11:04 hier.
|
|
|
Verschoben: 23.05.2014, 10:29 Uhr von denny Von Grafiken und Plots nach Bildverarbeitung |
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.05.2014, 10:50
Titel:
|
|
Ja, das war die Antwort auf die Frage:
Zitat: |
Die Kanten dieser Figur sollen automatisch erkannte werden und durch Linen dargestellt werden |
Die Eckdaten bekommst du über den Befehl "corner". Beginnend mit Winkel "0" und dann gegen den Uhrzeigersinn.
|
|
|
weissdaniel |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 05.05.14
|
|
|
|
Wohnort: Sulzfeld
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.05.2014, 14:58
Titel:
|
|
Danke Hubertus, corner hilft mir schon weiter.
Mal sehen wie weit ich jetzt komme
|
|
|
weissdaniel |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 05.05.14
|
|
|
|
Wohnort: Sulzfeld
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.05.2014, 13:48
Titel:
|
|
Die Eckenerkennung klappt, die Parameter müssen zwar etwas ausbalanciert werden damit auch stumpfe Winkel gut erkannt werden, aber es geht.
Die erkannten Eckpunkte werden durch
d= corner (Bild, ...)
in ein Array gepackt.
Jetzt ist nur das Problem, dass er beim verbinden der Eckpunkte durch Linien:
plot(d(:,1), d(:,2), ...)
nicht nach der korrekten Reihenfolge vorgeht.
Bei einem Rechteck bspw. verbindet er die Punkte durch ein liegendes Z...
Sortieren habe ich versucht, evtl falsch??
Jemand nochmal eine Idee?
|
|
|
weissdaniel |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 05.05.14
|
|
|
|
Wohnort: Sulzfeld
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 01.06.2014, 19:55
Titel: korrekte Reihenfolge beim Plotten der Punktverbindungen
|
|
Hallo,
vielleicht kann mir nochmal jemand einen Tipp geben:
Wie in meinem vorherigen Post beschriben, werden beim Plotten einer Verbindung zwischen den Punkten aus "Corner" die Linien in einer falschen Reihenfolge dargestellt.
Die Eckpunkte eines Rechtecks, bilden beim Plot der Verbindung zwischen den Eckpunkten also kein Umriss des Rechecks, sondern ein liegendes "Z".
Wie kann ich hier die Reihenfolge der Plotausgabe steuern???
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.06.2014, 07:29
Titel:
|
|
Hallo weissdaniel,
ich habe diese Woche kein Matlab zur Verfügung. Daher eine theoretische Betrachtung. Ich denke es liegt daran, dass du Koordinaten an plot übergeben musst. Folgendes Beispiel:
plot setzt dann einen Rahmen um das Rechteck
Viel Erfolg - Hubertus
|
|
|
weissdaniel |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 05.05.14
|
|
|
|
Wohnort: Sulzfeld
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.06.2014, 08:04
Titel:
|
|
Morgen Hubertus,
danke für die schnelle Antwort!
Die "ginput" Variante habe ich schon getestet, funktioniert damit auch sehr gut, nur sollten diese Koordinaten automatisch generiert werden.
Die Koordianten aus Deinem Beispiel in X und Y enstprechen auch exakt denen die ich aus dem Corner Befehl habe.
nur werden diese wie gesagt in einer falschen Reihenfolge miteinander verbunden...
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.06.2014, 08:08
Titel:
|
|
Meine Idee war, mal zu sehen, wie ginput die Koordinaten ablegt und dann zu fragen, ob man die Koordinaten von corner umsortieren kann.
|
|
|
weissdaniel |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 05.05.14
|
|
|
|
Wohnort: Sulzfeld
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.06.2014, 08:37
Titel:
|
|
die Punkte aus corner zu sortieren habe ich auch schon versucht.
Inhalt corner:
4x2 double
[84 60]
[84 472]
[1040 60]
[1040 472]
nach s=sortrows(d, [-2 1]);
ist der inhalt von s:
4x2 double
[84 472]
[1040 472]
[84 60]
[1040 60]
Das Plot Ergebnis bleibt aber logischerweise das Gleiche
Was mache ich beim Sortieren falsch?
|
|
|
Hubertus |
Forum-Meister
|
|
Beiträge: 1.034
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.06.2014, 08:56
Titel:
|
|
Entscheidend ist die Reihenfolge von ginput! Denn in dieser Reihenfolge wird das Rechteck korrekt geplottet. Notfalls hart codieren. Es bleibt ja immer die gleiche Differenz zwischen ginput und corner. Gilt also auch für andere Beispiele.
Bei dieser Gelegenheit sollt man auch mal erwähnen, dass die Reihenfolge, denn das gilt auch für andere Befehle in der Bildverarbeitung, in Matlab nicht gleich geordnet ist. Auch wenn da irgendwelcher Sinn hinter stecken soll, bleibt es nervig. Das hätte man im Algo. auch umsortieren können.
|
|
|
weissdaniel |
Themenstarter
Forum-Newbie
|
|
Beiträge: 9
|
|
|
|
Anmeldedatum: 05.05.14
|
|
|
|
Wohnort: Sulzfeld
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.06.2014, 13:26
Titel:
|
|
Danke für die Info, Hubertus.
Jedoch ist ginput nicht zweckmäßig bei einer automatischen Konturerkennung.
Die Eckpunkte werden mit corner gut erkannt.
die Option mit ginput funktioniert ganz gut, auch das Plotten der Linienverbindung zwischen den erkannten Punkten.
Jedoch sollen die Punkte automatisch erkannt und ebenso die Linienverbindung automatisch geplottet und so die Kontur neu konstruiert werden.
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|