AGB  ·  Datenschutz  ·  Impressum  







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

Bild im Internet Explorer finden?

Ein Thema von gee21 · begonnen am 21. Mai 2013 · letzter Beitrag vom 29. Mai 2013
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

AW: Bild im Internet Explorer finden?

  Alt 21. Mai 2013, 15:16
Formuliere dein Frage anders, dann wird es dir selber klarer, was du tun musst. Wenn du einen Screenshot gemacht hast, dann hast du ja nur noch ein Bild bestehen aus Pixeln. Die Bilder von den Männchen sind ja jetzt auch nur noch ein Pixelmuster in dem Screenshot. Du musst also nicht nach einem Bild im Bild suchen (Das gibt es ja gar nicht mehr.), sondern nach einem Pixelmuster, welches dem ursprünglichen Bild des Männchens entspricht. Deine Frage lautet also: Wie finde ich ein bestimmtes Pixelmuster in einer Grafik/Bild?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Bild im Internet Explorer finden?

  Alt 21. Mai 2013, 15:18
Hi Luckie

Du hast absolut Recht! So meinte ich das eigentlich auch.

Wie finde ich ein bestimmtes Pixelmuster in einer Grafik/Bild?

Wie sucht man den nach einem Pixelmuster?
Robert
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: Bild im Internet Explorer finden?

  Alt 21. Mai 2013, 15:32
Im Prinzip ganz einfach: Man geht das Bild Pixel für Pixel durch und guckt, ob die Pixelfarbe der gesuchten Pixelfarbe entspricht. Wenn man so ein Pixel gefunden hat, betrachtet man die Pixel drum herum und guckt, ob auch sie einer gewünschten Pixelfarbe entsprechen. Das Problem ist, dass die die gesuchte Pixelfarbe natürlich seltenst der Vorlage entspricht. Man muss also eine gewisse "Unschärfe" einbauen. Hinzukommt, dass auch das Muster nicht unbedingt immer genau die gesuchte Form hat. Strichwort wäre hier auch Schrifterkennungssoftware.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#4

AW: Bild im Internet Explorer finden?

  Alt 21. Mai 2013, 15:35
Ein (relativ) einfacher Ansatz (wenn auch nicht sehr performant) wäre die Hough-Transformation.
Das funktioniert vor allem dann, wenn das Männchen ein starres Bild (Sprite), d.h. wenn es nicht z.B. animiert ist.

Ein etwas anderer Ansatz ist eine zweidimensionale, diskrete Kreuzkorrelation, d.h. das Produkt des isolierten Männchens mit allen Teilflächen an potentiellen Positionen des Männchens auf dem Screenshot. Da wo das Produkt maximal ist, ist die Chance am größten, dass sich das Männchen befindet.

Bei beiden Ansätzen müssen die Farbkanäle einzeln verarbeitet werden, da die Algorithmen einen eindimensionalen Funktionswert erwarten.

lg Caps

ps. Eine gewisse Art, Toleranz ("Unschärfe") beim Suchen anzuwenden, stellt in den beiden Verfahren der Funktionswert der Transformierten bzw. der Korrelationsfunktion dar - je höher desto besser ist der Treffer. Wenn mal ein Pixelchen fehlt, klappt die Erkennung meist trotzdem.

Edit:
Für die Hough-Transformation sollte das Männchen parameterisiert sein (Vektorgrafik), sonst geht's nicht, sorry.
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."

Geändert von Caps (21. Mai 2013 um 15:42 Uhr) Grund: Einsicht
  Mit Zitat antworten Zitat
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Bild im Internet Explorer finden?

  Alt 21. Mai 2013, 15:45
Huui

Danke euch für eure schnellen Antworten. Bin immer wieder positiv überrascht was ihr alles wisst

Also das gesuchte Männlein (oder das gesuchte Symbol) ist nur 1 Bild (nicht animiert).
So könnte ich vermutlich die Hough-Transformation benutzen.

Also die Theorie habe ich nun verstanden . Hat vielleicht jemand ein Beispiel oder Tutorial dazu?
Robert
  Mit Zitat antworten Zitat
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Bild im Internet Explorer finden?

  Alt 21. Mai 2013, 15:50
Zitat:
Edit:
Für die Hough-Transformation sollte das Männchen parameterisiert sein (Vektorgrafik), sonst geht's nicht, sorry.
Oh gar nicht gesehen. Ich denke ich kann keinen Screenshot als Vektorgrafik erstellen. Oder doch?

Ich denke es gibt ein normales Bmp oder Jpg wenn ich einen "normalen" Screenshot mache.
Robert
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#7

AW: Bild im Internet Explorer finden?

  Alt 21. Mai 2013, 15:51
Das Problem bei der Hough-Transformation ist, dass Du das Männchen in Parametern beschreiben müsstest, so wie eine Vektorgrafik. Es gibt die generalisierte Hough-Transformation, die funktioniert mit jeder Art Muster.

Ich denke die Kreuzkorrelation würde besser funktionieren bzw. leichter umzusetzen sein. Es handelt sich ja eigentlich nur um zwei verschachtelte for-Schleifen mit etwas Beilage und Dressing.
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
gee21

Registriert seit: 3. Jan 2013
199 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Bild im Internet Explorer finden?

  Alt 21. Mai 2013, 16:15
Habe gerade mal etwas im Forum rumgeschaut und das einzige was ICH gefunden habe und evt für mich hilfreich SEIN KÖNNTE?
Bin eben noch ziemmlicher Anfänger und daher sind auch einfache Sachen für mich immer noch Schwierig zu realisieren.


Könnte man evt mit diesem Code etwas anfangen? (Ist von diesem Beitrag: http://www.delphipraxis.net/144655-b...tion-zncc.html)

Delphi-Quellcode:
function TForm1.CompareImages(Image1,Image2:TBitmap):Int64;
 var x,y:integer;
    P1,P2:PRGBTripleArray;
    summe1,summe2:integer;
 begin
   result := 0;
   summe1 := 0;
   summe2 := 0;
   for y := 0 to Image1.Height -1 do
    begin
      P1 := Image1.ScanLine[y];
      P2 := Image2.ScanLine[y];
        if not CompareMem(p1,p2,Image1.Width*SizeOf(TRGBTriple)) then
          begin
            for x := 0 to Image1.Width-1 do
              begin
                inc(summe1,RGB(P1[x].rgbtRed,P1[x].rgbtGreen,P1[x].rgbtBlue));
                inc(summe2,RGB(P2[x].rgbtRed,P2[x].rgbtGreen,P2[x].rgbtBlue));
                if summe1 <> summe2 then
                  begin
                    summe1 := 0;
                    summe2 := 0;
                    inc(result);
                  end;
              end;
          end;
    end;
   Application.ProcessMessages;
 end;

In diesem Beispiel wird zwar der % Satz der Differenz der Pixel gesucht (Wenn ich es richtig verstanden habe )
Aber es wäre doch ein ähnliches Prinzip oder so?
Robert
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Bild im Internet Explorer finden?

  Alt 21. Mai 2013, 19:27
Habe gerade mal etwas im Forum rumgeschaut und das einzige was ICH gefunden habe und evt für mich hilfreich SEIN KÖNNTE?
Bin eben noch ziemmlicher Anfänger und daher sind auch einfache Sachen für mich immer noch Schwierig zu realisieren.
Dazu möchte ich dir etwas sagen:

Es ist nicht empfehlenswert, als Anfänger gleich derart schwierige Unterfangen zu starten. Wenn du die oben beschriebene Aufgabe lösen möchtest, mußt du auch verstehen, wie der Code, den du dazu einzusetzen gedenkst, funktioniert. Daher stellt kopierter Kode, den du offensichtlich nicht verstehst, keine brauchbare Vorgehensweise dar. Auch bei Komponenten, die ja oft massenweise Code enthalten, der nicht immer auf Anhieb zu verstehen ist, mußt du zumindest wissen, wie die Komponente arbeitet, um sie sinnvoll einsetzen zu können. Einfach mal was kopieren und dann im Forum fragen, ob man das mit diesem Code machen könnte, stößt bei den meisten fortgeschrittenen Programmierern auf impulsive Ablehnung, weil du nämlich den Eindruck erweckst, du seist nur an einer Irgendwie-Lösung des Problems interessiert und nicht, wie man diese Lösung selbst entwickelt.

Die Hinweise mit dem Pixelmuster müßten eigentlich genügen, um diese Aufgabe lösen zu können. Weitere Hinweise wären ScanLine und die Überlegung, daß mit der jeweiligen Position des Männleins im IE ja vielleicht auch ein anderer Hintergrund-Ausschnitt verbunden ist. Ergo müßtest du den Hintergrund des Männleins erst einmal korrekt entfernen und dann im Bild danach suchen, wo sich das Männlein-Muster befinden könnte. Du mußt dazu einfach via Scanline die einzelnen Zeilen auf die Männlein-Farben testen. Findest du die erste Farbe sagen wir mal von der linken oberen Ecke des Männleins, dann prüfst du, ob die nächste Farbe mit dem zweiten Pixel des Männleins übereinstimmt usw. Studieren der Hilfe zu Scanline wird dich sicher weiterbringen, wenn du das möchtest.

Eine schnelle Erledigung der Aufgabe wirst du als "ziemlicher Anfänger" wohl nicht auf die Reihe bekommen, daher sind Geduld und Ausdauer angesagt. Das Resultat nennt man Fortschritt.
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz