AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bilderkennung

Offene Frage von "bernhard_LA"
Ein Thema von zobien123 · begonnen am 3. Apr 2018 · letzter Beitrag vom 20. Apr 2018
Antwort Antwort
Seite 1 von 3  1 23      
zobien123

Registriert seit: 3. Mär 2017
Ort: Öhringen
94 Beiträge
 
Delphi 10.3 Rio
 
#1

Bilderkennung

  Alt 3. Apr 2018, 13:28
Hallo Zusammen,

ich versuche mich gerade an der Bilderkennung. Das Ziel ist es, Kreise in einem Bild zu zählen. Dabei muss man noch von anderen Formen unterscheiden, welche im Bild sind (siehe Bsp Bild).

Jedoch hakt es bereits wie ich in einem Bild überhaupt mal einen Kreis erkenne. Ich habe leider im Internet keinen anstoß gefunden, welcher mich weiter bringt oder wo ich mich einlesen kann.


Schonmal vor ab, vielen Dank für jede Hilfe!

Edit: Das ist eine Übungsaufgabe aus dem Internet. https://0xf.at/play/35?pw= Wer es selbst mal versuchen möchte
Miniaturansicht angehängter Grafiken
106f9b9c9f021a0769221441d4486047.png  
Jörn
Linux wird nie das meistinstallierte Betriebssystem sein, wenn man bedenkt, wie oft man Windows neu installieren muss!

Geändert von zobien123 ( 3. Apr 2018 um 13:39 Uhr)
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.052 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Bilderkennung

  Alt 3. Apr 2018, 13:40
Eigentlich nicht schwer, da kann man von der Zeilenzahl einstellig bleiben.
Code:
FUNKTION Kreiserkennung(VARIABLE Ergebnis: Integer);
  GEHE Bild VON oben NACH unten DURCH
    GEHE Bild VON links NACH rechts DURCH
      WENN Farbe NICHT weiß DANN
        WENN Farbe ein Pixel links unten NICHT weiß DANN // ggf. Abfrage für ganz links bzw. oben
          ERHÖHE Ergebnis;
        FÜLLE BEREICH an aktueller Position MIT weiß;
Delphi-Referenz durchsuchenVCL.Graphics.TCanvas
Code:
Irgendwas := 0;
Kreiserkennung(Irgendwas);
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#3

AW: Bilderkennung

  Alt 3. Apr 2018, 13:49
@Redeemer: Damit zählst du auch die Rechtecke, obwohl er nur die Kreise haben will.
* Außenkannte des gefundenen Bereichs suchen und schauen welche Form er hat

Da fehlt dann noch die Bei Google suchenDelphi Mustererkennung.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Headbucket

Registriert seit: 12. Dez 2013
Ort: Dresden
172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Bilderkennung

  Alt 3. Apr 2018, 13:59
Ein kurzer vllt etwas naiver Denkanstoß, wie ich an die Sache rangehen würde:

Ich würde alle Pixel von Links oben der Reihe nach durchgehen.
Wenn ich farbiges Pixel finde, dann würde ich zunächst die Höhe des Objektes herausfinden, indem ich Pixel nach unten gehe, bis kein farbiges Pixel mehr auftaucht. Dann würde nach folgendem "Konstrukt" suchen:


Reihe X: Anzahl der farbigen Pixel in aktueller Reihe
Reihe X+1: Anzahl der farbigen Pixel in vorheriger Reihe + Bestimmten Faktor
Reihe X+2: Anzahl der farbigen Pixel in vorheriger Reihe + Bestimmten Faktor
...
Reihe X+y: Maximale Anzahl farbiger Pixel
...
Reihe X+n-2: Anzahl der farbigen Pixel in dritter Reihe
Reihe X+n-1: Anzahl der farbigen Pixel in zweiter Reihe
Reihe X+n: Anzahl der farbigen Pixel in erster Reihe


Da man einen Kreis leicht unterschiedlich zeichen kann, sollte die Auswertung der Pixelbreite etwas flexibel bleiben. Gerade flexibel genug, um einen Kreis von einer Ellipse zu unterschieden

Wie gesagt - nur mein erster Gedanke. Vllt bringt dich das auf neue Gedanken.

Grüße
Headbucket
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
167 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Bilderkennung

  Alt 3. Apr 2018, 15:08
Hallo Zusammen,
Jedoch hakt es bereits wie ich in einem Bild überhaupt mal einen Kreis erkenne. Ich habe leider im Internet keinen anstoß gefunden, welcher mich weiter bringt oder wo ich mich einlesen kann.
Kreise mit unterschiedlichen Radien lassen sich am besten mit Hilfe der sog. Hough-Transform(ation) erkennen. Einfach mal "Hough Transform Circle" mit oder ohne Delphi in eine Suchmaschine Deiner Wahl eingeben.

cu Ha-Joe
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#6

AW: Bilderkennung

  Alt 3. Apr 2018, 15:26
Wenn nur Kreis oder Rechteckt, dann "einfach" auf Rechteck prüfen, also wenn überall gleich hoch und/oder breit, dann ist es ein Rechteck.

Oder auf "ich bin kein Kreis" und das Pixel bei (x-1, y+1) ist weiß. (der gefundene Anfangspunkt ist eine Ecke)
Oder auf "ich bin eventuell ein Kreis" und das Pixel bei (x-1, y+1) ist nicht weiß. (der gefundene Anfangspunkt ist rechteckig)
> Bei for y :=0 to ... do for x := 0 to ... ... wenn Schleifen/Suchmuster andersrum, dann bei (x+1, y+1).
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Apr 2018 um 15:28 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#7

AW: Bilderkennung

  Alt 3. Apr 2018, 20:24
Ich hab mich noch nie damit beschäftigt, aber könnte man nicht ein paar benachbarte Pixel auswerten (ala Kreissegment) und den Mittelpunkt zu dem Stück finden?
Je unendlicher es entfernt ist, desto mehr ist es eine Gerade statt eines Kreises. Sind Kreise größer als das Bild (oder unvollständige) überhaupt gefragt?
Aber vielleicht ist das schon viel zu aufwändig.
Gruß, Jo
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.052 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Bilderkennung

  Alt 3. Apr 2018, 21:00
@Redeemer: Damit zählst du auch die Rechtecke, obwohl er nur die Kreise haben will.
Nö, tue ich nicht. Da steht doch, dass ich unten links unter dem aktuellen Pixel gucke, ob es weiß ist. Ist es da weiß, handelt es sich um ein Rechteck.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Bilderkennung

  Alt 3. Apr 2018, 23:38
Wenn es von dem Ablauf her Erlaubt wäre eine "Hintergrund" Farbe zu bestimmen um die Objekte rauszufiltern (oder basierend darauf ein Raster erstellen?) würde das Vorhaben die übriggebliebenen Objekte einer Form zuzuorden weitaus einfacher machen.
Vielleicht könntest Du auch diese Komponente umbiegen das Sie nach Kreisen und Rechtecken sucht?
Gruß vom KodeZwerg

Geändert von KodeZwerg ( 3. Apr 2018 um 23:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Bilderkennung

  Alt 4. Apr 2018, 09:07
@Redeemer: Damit zählst du auch die Rechtecke, obwohl er nur die Kreise haben will.
Nö, tue ich nicht. Da steht doch, dass ich unten links unter dem aktuellen Pixel gucke, ob es weiß ist. Ist es da weiß, handelt es sich um ein Rechteck.
Ich meine in dem Vorschaubild da sollte das sogar funktionieren aber falls andere Bilder da einen Hauch anders/komplexer sind dann klappt das nicht mehr.
Delphi-Quellcode:
// Wie viele Kreise sind (laut deinem Algorithmus) in diesem Bild?
# # # # # # #
 # # # # # # #
# # # # # # #
Antwort: Zu viele
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz