wenn du dein Bild in eine binäre Darstellung wandelst (um Grautöne auszuschließen), kannst du die Anzahl der schwarzen Pixel mit dem "find-Befehl" ermitteln. Daraus ergibt sich dann eine Fläche.
Hi skyforce: habe mir die befehle angeschaut, aber leider nicht ganz verstanden was es bedeutet oder wie es klappen soll.
Hallo Hubertus: Sie sind in Binär umgewandelt, also ich habe wo es weise ist die 0 und wo es schwarze ist die 255. Aber er müsste mir dann bei dem Kreis die Umkreisung zeichnen. Und ich weiss es nicht wie es gemacht wird.
Hier etwas ausführlicher zu meinem Projekt:
Meine Aufgabe ist, das ich über eine Kamera ein Kreis erkennen muss, das klappt über die Bildverarbeitung im Matlab. Mein Kreis ist ein schwarz/weiss bild. Das Program muss denn Kreis erkennen und mir sagen welchen durchmesser es hat und es muss mir die Umkreisung zeichnen. Bei den Kreisen handelt es sich um verschiedene Größen, es ist keine einheitliche Größe.
@ Hubertus, es ist vieleicht eine blöde frage, aber könntets du mir sagen wie ich es eventuell in mein Programm einbinden kann? Muss ich es Kopieren und einfügen oder über die function aufrufen? Kann ich es auch so wie es hier ist verwenden?
Im ZIP befindet sich nur 1 Funktion: unter: %Implementation (im File erklärt): findest du die Zeilen zum Aufrufen der Funktion. Du tauscht einfach das Bild coins.png gegen dein Bild aus. Coins.png ist ein SW-Bild.
Hi Hubertus, erstmal vielen herzlichen dank für die vielen Informationen, ich bin sehr gut weitergekommen, aber habe da noch ein zwei schwierigkeiten.
Meine Bild ist ein RGB Bild, sprich ich muss es erstmal umwandeln, hat aber nicht so ganz geklappt, weiss nicht ob es richtig ist wie ich es mache, aber ich habe einfach die Funktionen genommen und in mein Program eingefügt, wollte aber nicht ganz funktionieren, hat das bild geladen, aber sonst waren da keine funktionen vorhanden. Hier die Seite welche Befehle ich verwendet habe.
dein Problem ist mir nicht ganz klar. Dein 1. Beispiel zur Umrechnung von RGB > SW ist der "normale Fall" und richtig. Es gibt noch weitere Umrechnungsverfahren. So kann es z.B. bei Bildanalysen sinnvoll sein, sich die Farbauszüge als SW-Bild ausgeben zu lassen, da sie sehr oft einen anderen Inhalt zeigen. Man kann auch einzelne Farbbereiche in der Umrechnung anders gewichten.
"Sonst waren da keine Funktionen...". Was meinst du damit? Ob deine Konvertierung zu SW richtig ist, zeigt die Variable im Workspace. Dort wird angezeigt ob: m*n oder m*n*3!
Neben RGB-Bildern gibt es auch noch indizierte Bilder, die über X,map geladen werden. Bleibt "map" leer, ist es ein "normales" RGB-Bild. Sonst wird map erst wieder gebraucht, wenn du das Bild mit indizierten Werten speichern willst. Wenn du ein Bild mit Farbtabelle (X,map) hast und das in ein Binärbild umwandeln willst, ist dein letztes Beispiel korrekt. Es passt aber nicht in den Zusammenhang mit deinem 1. Beispiel.
nach einigen Experimenten und Versuchen habe ich es endlich geschafft. Mein Programm liest das Bild ein, wandelt Sie in ein Binäres Bild um und anschließend umkreist mir auch den Kreis.
Aber eine sache fehlt mir noch leider, was muss ich machen damit er mir den Durchmesser oder Radius des Kreises ausgibt??? Wäre super wenn ich da auch eine gute Idea bekommen würde
Eine andere Lösung in raus gekramten Unterlagen hat einen Fehler, den ich im Moment nicht finde. Das Einfachste wäre, den inneren Kreis ebenfalls auf 255 zu setzten. Dann hast du eine Kreisfläche mit den von dir gesuchten Daten. Du brauchst dann nur noch die weißen Pixel zählen.
Iende zeigt die innere Kreisfläche. Wenn du den äußeren Kreis benötigst, musst du nur die schwarzen Pixel vom Original dazu zählen. Da du ein Binärbild hast, können auch keine Graustufen am Kreis das Zählen beeinträchtigen.
Es gibt bestimmt noch eine elegantere Lösung, aber vielleicht hilft das schon mal weiter.
hey,
ich hab mal ein ähnliches Problem gehabt.
auf die lösung bin ich durch die Matlab-Hilfe gekommen.
check mal die Matlab-Hilfe nach "Measuring the Radius of a Roll of Tape". Es gibt ne Version mit 3 und mit 5 Schritten. Die längere hat mir dann gute dienste erwiesen.
du musst warscheinlich nur etwas mit dem Parametern rumspielen, hat bei mir auch etwas gedauert.
Hallo Hubertus,
danke nochmals für den Lösungsansatz, ich habe es jetzt einigermasen hinbekommen, mit der roll-of-tape in der Matlab Hilfe muss da wie auch KingHegi schrieb einige Parameter ändern. Komme so langsam zum Ziel
Danke KingHegi, nach einigen Änderungen hat es gut gekklappt
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.