Ballerkennung aus einer Bilddatei

  • Themenstarter Themenstarter Gast2
  • Beginndatum Beginndatum
G

Gast2

Gast
Hallo an alle!

Bin zum ersten Mal auf so einer Forumseite und entschuldige mich gleich im vorhinein wenn ich Fehler mache.

In meinem Projekt geht es darum eine Torlinie eines Fussballtores zu überwachen. Wenn also ein Ball über die Torlinie geschossen oder gerollt wird, möchte ich das die Kamera ein Bild gemacht und gespeichert wird. Dieser Teil des Projekts Funktioniert schon.
Nun zu jenem Teil welcher nicht funktioniert.
Aus diesem Bild sollte das Java Programm den Baall erkennen, somit kann ich dann erkennen ob der sBall im Tor ist oder nicht ?

Gibt es dazu eine Klasse bzw. Methode um das zu realisieren ?

Hoffe auf positive und baldige Antwort

Lg Michi
 
Nein, weil das einfach nicht alltäglich ist. Kannst du mal ein Fotobeispiel posten?
edit: Wie funktioniert die Erkennung, dass die Kamera ein Foto schiessen muss?
 
Hast du auf das Spiel Einfluss? Kannst ja einfach einen Ball nehmen, der eine unübliche Farbe hat
(mit unüblich meine ich eine Farbe, die nicht im Hintergrund vorkommen kann)
 
Im anhang befindet sich ein Bild wie es ungefähr aussehen sollte . Es ist jenes Bild welches die Kamera macht wenn ein Ball vorbeifliegt.

@Runtime: Ich hab ein Programm wo die Kamera sobald eine Bewegung vor ihr passiert ein foto macht.

@Xhelp: Ja ich hab Einfluss drauf, ich werde es auch so machen, dass der Hintergrund Weiss ist und der Ball eine gewisse Farbe.

Doch ich habe ein Problem mit Java da ich diesen Ball inn diesem Bild gerne mit Java erkennen möchte ?
Habt Ihr eine Idee ?

Lg
 

Anhänge

  • ball.jpg
    ball.jpg
    6,4 KB · Aufrufe: 50
Wenn der Ball eine bestimmte, leicht zu erkennende Farbe hat, kann man
- das Bild als BufferedImage laden
- in dem Bild mit image.getRGB(x,y) die Farben der einzelnen Pixel auslesen
- Sich alle Pixel merken, die die Farbe des Balles haben
- Von diesen Pixeln den Mittelpunkt bestimmen.
 
Jo, hab ich. Wenn der Hintergrund sich nicht verändert, dann kannst du ein Bild schiessen ohne Ball und dann wenn du ein Bild mit Ball hast, kannst du so den Ball hinauslösen (siehe im Bild).
Aus dem ersten Bild kannst du dann noch die schwarze Torlinie heraussuchen und überprüfen, ob und wie stark sich Ball überschneidet. Falls nicht, prüfst du noch, ob der Ball links oder rechts ist. Mit Java geht das recht langsam, ist aber mit JOGL/JOCL möglich.
Edit: Ein wenig zu spät, hat aber trotzdem noch nützliches dabei.
@XHelp
Wenn es eine Lichtschranke ist, kann man eine 2. hinmontieren, dann muss man nur noch prüfen, welche Lichtschranke zuletzt berührt wurde
 

Anhänge

  • Ballerkennung.png
    Ballerkennung.png
    34,3 KB · Aufrufe: 48
Zuletzt bearbeitet:
Hab nicht gewusst, wie man einen 2. Anhang hinzufügt, 😀 da ist noch das Bild für die Lichtschranken.
Edit: Im Bild sollte es nicht Ballbreite, sondern Balldurchmesser heissen.
 

Anhänge

  • Ballerkennung2.png
    Ballerkennung2.png
    9,2 KB · Aufrufe: 42
Und was hat das mit überqueren der Torlinie zu tun? Bau dir einfach eine Lichtschranke.

Der Teil mit der Lichtschranke ist im Gesammmtprojekt inbehalten, doch i habe eine vertiefende Aufgabenstellung und diese muss ich mit Kamera bewältigen. Die Torlinie sollte die Torlinie in einem Tischfussballtisch darstellen.

Der Hintergrund bleibt immer gleich und ja so hab ich mir das vorgestellt mit den Bildern.
Funktioniert es mit Java langsam oder garnicht ?
Hast du Java - COde für mich ?

@Marco : ich kann mir das schon sehr gut vorstellen aber habe leider keinen plan wie ich es in Java umsetzten könnte

Lg
 
Naja, aber wieviele Bilder schießt denn deine Kamera? Denn so ein Kickerball ist nicht unbedingt langsam, du musst ja dann natürlich auch den richtigen Zeitpunkt abwarten, wenn sich der Ball bereits HINTER der Linie befindet.
Außerdem:
wo die Kamera sobald eine Bewegung vor ihr passiert ein foto macht
Vor dem Tor sollte sich öfters was bewegen, nämlich der Torwart.
 
Mit meiner Methode kann man überprüfen, ob der Torwart oder der Ball auf dem Bild ist, aber wenn beide darauf sind wirds schwierig...
 
Naja, aber wieviele Bilder schießt denn deine Kamera? Denn so ein Kickerball ist nicht unbedingt langsam, du musst ja dann natürlich auch den richtigen Zeitpunkt abwarten, wenn sich der Ball bereits HINTER der Linie befindet.
Außerdem:

Vor dem Tor sollte sich öfters was bewegen, nämlich der Torwart.

Die Kamera zeigt nur auf die Linie und sieht den Torwart nicht.
Sobald eine Bewegung ( sprich der Ball fliegt vorbei) passiert wird von der KAmera ein Foto gemacht.

Derzeitiger Stand des Java Programms:
Ich lese die gespeicherten Bilder ein und Zeige sie in einem Panel an. Das geht bereits. Doch ich kann den Ball nicht erkennen also ich weiss nicht wie man soetwas macht ?

Lg
 
Naja, aber wieviele Bilder schießt denn deine Kamera? Denn so ein Kickerball ist nicht unbedingt langsam

mach dir erstmal darüber Gedanken. Wenn das wirklich sich auf einen Kickertisch bezieht, wäre ich mir nicht sicher, ob deine Kamera es schafft, das komplett zu überwachen. Und falls doch, wird er u.U. sehr verschwommen sein.

Ich würde die Bilder auf Änderungen vergleichen (vor/nachher) das ganze in Prozent umwandeln und ab einem bestimmten Prozentsatz sagen: jz kam ein Ball vorbei.

Und wäre es nicht einfacher, die Kamera den Bereich hinter der linie prüfen zu lassen?
 
Zuletzt bearbeitet von einem Moderator:
Auch ohne großartige Programmiererfahrung kann man es schaffen, aber nicht ohne Eigeninitiative.

Dir wurde ja schon der Ansatz über BufferedImage genannt. Versuch ihn umzusetzen.
 
mach dir erstmal darüber Gedanken. Wenn das wirklich sich auf einen Kickertisch bezieht, wäre ich mir nicht sicher, ob deine Kamera es schafft, das komplett zu überwachen. Und falls doch, wird er u.U. sehr verschwommen sein.

Ich würde die Bilder auf Änderungen vergleichen (vor/nachher) das ganze in Prozent umwandeln und ab einem bestimmten Prozentsatz sagen: jz kam ein Ball vorbei.

Und wäre es nicht einfacher, die Kamera den Bereich hinter der linie prüfen zu lassen?

Die Kamera bezieht sich auf den Torraum hinter der Torlinie.
Die Änderung der Bilder ist auch eine gute Idee, wie könnte man mit dem Beginnen? also Code ?

Wie lange programmierst du schon Java? Wenn du nicht min 1.5 - 2 Jahre programmiert hast, dann schaffst du das nicht.

Ich habe in der Schule schon 2 Jahre Informatikunterricht gehabt jedoch haben wir so sochen nie durchgenommen ?
 
Die Kamera bezieht sich auf den Torraum hinter der Torlinie.
Die Änderung der Bilder ist auch eine gute Idee, wie könnte man mit dem Beginnen? also Code ?

Codemäßig habe ich keinen fertigen Ansatz ... ich habe nichtmal einen Ansatz. Nimm ein ausgangs BufferedImage und vergleiche es mit dem Aufgenommen. Du kannst dir ein Raster ausgeben lassen, indem du alle Pixel einzeln checken kannst. Diese setzt du in relation und hast die Änderung.
Ich würde vllt schwarz-weis-bilder machen, da in (meiner) Therorie es am einfachsten ist, notfalls Helligkeits-differenzen zu erkennen.
 
Ok, hab noch meine Meinung geändert, Java SE alleine sollte schon schnell genug sein, aus mir haben die armseligen Grafikmöglichkeiten von Java gesprochen.
 
Codemäßig habe ich keinen fertigen Ansatz ... ich habe nichtmal einen Ansatz. Nimm ein ausgangs BufferedImage und vergleiche es mit dem Aufgenommen. Du kannst dir ein Raster ausgeben lassen, indem du alle Pixel einzeln checken kannst. Diese setzt du in relation und hast die Änderung.
Ich würde vllt schwarz-weis-bilder machen, da in (meiner) Therorie es am einfachsten ist, notfalls Helligkeits-differenzen zu erkennen.

Ich danke dir für deine Ideen und probier es umzusetzten!

So Sachen wie mitdenken, googlen und api lesen?

Auch dir möchte ich für deine Einfälle danken.
 

Zurück
Oben