AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Und ein weiteres Erkennungsthema...
Thema durchsuchen
Ansicht
Themen-Optionen

Und ein weiteres Erkennungsthema...

Ein Thema von LDericher · begonnen am 28. Jul 2009 · letzter Beitrag vom 29. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#1

Und ein weiteres Erkennungsthema...

  Alt 28. Jul 2009, 16:59
Hallo DP, mal wieder,

Weiß nicht, ob und wenn ja wie oft das Thema hier schon durchgenommen wurde...
Aber egal, SuFu war hier nicht wirklich ergiebig, also:

Ich würde gern Gesichter erkennen können! Oder vielmehr meinem Computer selbiges beibringen

Dazu hab ich mir bereits etwas sehr Nettes gebastelt, was auch schon erstaunlich gut funktioniert, doch dazu später mehr.
Jetzt arbeite ich daran, das Ganze mit meiner Webcam zu kombinieren. Mein Problem ist nun, dass ich meinen Kopf sehr genau an dieselbe Stelle halten muss, an der er "gelernt" wurde. Sprich, wenn ich ihn rechts relativ groß eingegeben habe, muss ich ihn auch wieder rechts recht nah hinhalten um ein Ergebnis zu bekommen. Wundert mich ehrlich gesagt auch nur wenig.

Also hätte ich jetzt gern das Rechteck, in dem sich mein kompletter Kopf befindet, automatisch erkannt, damit ich wirklich nur meinen Kopf dort eingebe.

Die unvermeidliche Frage sei nun gestellt: "Wie gehe ich da ran"?

Danke schonmal,

Der LDer.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Und ein weiteres Erkennungsthema...

  Alt 28. Jul 2009, 17:09
Also du hast schon was, was dein Gesicht identifizieren kann, und möchtest einen Algo, der sagt wo es sein könnte?

Für diese Groberkennung könnte es ja schon reichen, wenn du nach den schwarzen Punkten (aka Augen) suchst und guckst ob da ein heller bereich (aka Gesicht) drumherum ist. (Größe des nötigen Bereichs hängt vom Augenabstand ab) Falls das der Fall ist => Bereich ausschneiden und normieren (drehen und skalieren) und dem anderen Algo geben. Weitermachen, bis alle Gesichter gefunden sind, oder keine möglichen Positionen mehr gefunden wurden.
Beim Augenabstand solltest du noch Grenzen einbauen, nach oben und nach unten.
Dieser Algo ist nicht besonders gut (produziert viele false positives) aber dafür schnell. Und für Genauigkeit haste ja schon was, wenn ich dich richtig verstanden hab'
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Und ein weiteres Erkennungsthema...

  Alt 28. Jul 2009, 17:23
Zitat von jfheins:
guckst ob da ein heller bereich (aka Gesicht) drumherum ist
Informatikrassismus?

Nein, was macht man bei Dunkelhäutigen? Ich habe schwarze Bekannte o_O ...

mfg LDer
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Und ein weiteres Erkennungsthema...

  Alt 28. Jul 2009, 17:40
Oh ähhh ... zu kurz gedacht

Wenn die Auflösung gut genug ist, könnte man nach dem weißen im Auge suchen, ansonsten vll. die Person bitten zu lächeln wegen den hellen Zähnen

Ansonsten fällt mir nicht mehr viel ein, was universell ist
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Und ein weiteres Erkennungsthema...

  Alt 28. Jul 2009, 19:04
Irgendwelche Ansätze, Augen zu finden?

Habe mal versucht das ganze schwarz/weiß zu setzen (erstmal quick&dirty), aber es soll bei jeder Belichtung funktionieren und je nachdem wie der schwellwert ist (hier 127) ergibt sich ein vollkommen anderes Bild...
Kann man irgendwie die "Durchschnittshelligket" des Bildes berechnen, um den perfekten Schwellwert rauszukriegen?
... Langsam wächst die Aufgabe... Ich setz mich mal wieder dran x)

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  X,
  Y:integer;
  R,
  G,
  B:Byte;
begin
for Y:=0 to Image1.Picture.Height do
   for X:=0 to Image1.Picture.Width do
      begin
      R:=GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[X, Y]);
      G:=GetGValue(Image1.Picture.Bitmap.Canvas.Pixels[X, Y]);
      B:=GetBValue(Image1.Picture.Bitmap.Canvas.Pixels[X, Y]);
      if((R+G+B)div 3 > 127)
        then Image1.Picture.Bitmap.Canvas.Pixels[X, Y]:=clWhite
        else Image1.Picture.Bitmap.Canvas.Pixels[X, Y]:=clBlack;
      end;
end;
Gruß vom LDer.
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#6

Re: Und ein weiteres Erkennungsthema...

  Alt 28. Jul 2009, 19:11
vielleicht hilft das weiter:
http://opencv.willowgarage.com/wiki/
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Und ein weiteres Erkennungsthema...

  Alt 28. Jul 2009, 19:24
Hallo brechi,

Wenn ich mich einarbeiten würde, würds mir bestimmt helfen... aber ich will auch kein Haus bauen, indem ich eins kaufe/miete/runterlade...
Also ich will keine fertige Lösung haben^^

Naja, bin mittlerweile so weit mit meinen Graustufen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  X,
  Y:integer;
  R,
  G,
  B,
  Hell:Byte;
  DHell:int64;
begin
DHell:=0;
for Y:=0 to Image1.Picture.Height do
   for X:=0 to Image1.Picture.Width do
      begin
      R:=GetRValue(Image1.Picture.Bitmap.Canvas.Pixels[X, Y]);
      G:=GetGValue(Image1.Picture.Bitmap.Canvas.Pixels[X, Y]);
      B:=GetBValue(Image1.Picture.Bitmap.Canvas.Pixels[X, Y]);
      Hell:=(R+G+B)div 3;
      Image1.Picture.Bitmap.Canvas.Pixels[X, Y]:=Hell;
      DHell:=DHell+Hell;
      end;
DHell:=DHell div (Image1.Picture.Height*Image1.Picture.Width);
for Y:=0 to Image1.Picture.Height do
   for X:=0 to Image1.Picture.Width do
      begin
      R:=Image1.Picture.Bitmap.Canvas.Pixels[X, Y];
      if(R > DHell)
        then Image1.Picture.Bitmap.Canvas.Pixels[X, Y]:=clWhite
        else Image1.Picture.Bitmap.Canvas.Pixels[X, Y]:=clBlack;
      end;
end;
Nun, Fraaa~gen:
1. Wie optimiert man das? Da war mal iiirrrggeeennndddwwwaaannnnnnn was mit ScanLine oder so... ähnlich... Wie geht des nochmaaa~l? Kann ich mir nicht sowieso irgendwie eine Zeile davon sparen?
2. Schießt ein Bild von euch und lasst den Code drüberrennen... Wie würdet ihr jetzt ein Programm nach euren Augen suchen lassen? Alternativ bietet sich das Bild im Anhang an.

So, hoffe mal wieder auf Antworten!

Der LDer.
Miniaturansicht angehängter Grafiken
blah_441.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Und ein weiteres Erkennungsthema...

  Alt 28. Jul 2009, 20:01
Habe hier mal was gefunden und zurechtgeschnippselt:

Delphi-Quellcode:
procedure DoSomething(Input:TBitmap);
type
  PixArray = array [1..3] of Byte;
var
  P: ^PixArray;
  X,
  Y:integer;
  Hell:Byte;
  DHell:int64;
const
  paWhite:PixArray=(255, 255, 255);
  paBlack:PixArray=(0, 0, 0);
begin
DHell:=0;
for Y:=0 to Input.Height-1 do
   begin
   P:= Input.ScanLine[Y];
   for X:=0 to Input.Width-1 do
      begin
      Hell:=(P^[1]+P^[2]+P^[3])div 3;
      P^[1]:=Hell;
      P^[2]:=Hell;
      P^[3]:=Hell;
      DHell:=DHell+Hell;
      Inc(P);
      end;
   end;
for Y:=0 to Input.Height-1 do
   begin
   P:= Input.ScanLine[Y];
   for X:=0 to Input.Width-1 do
      begin
      if(P^[1] > DHell)
        then P^:=paWhite
        else P^:=paBlack;
      Inc(P);
      end;
   end;
end;
Es tut sich nix... warum?

LDer.

Image1.Repaint; Hilft manchmal... auch hier. Ergebnis: etwa 1000-fache Geschwindigkeit, wooohoooo!
  Mit Zitat antworten Zitat
Benutzerbild von LDericher
LDericher

Registriert seit: 29. Jan 2007
Ort: Erkelenz
224 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Und ein weiteres Erkennungsthema...

  Alt 29. Jul 2009, 11:54
Ich markiere hier mal als gelöst, mein Problem hat sich mal wieder verändert.

Neues Topic wird geöffnet: "Schwarz-Weiß-Bildanalyse"

mfg LDer.
  Mit Zitat antworten Zitat
grizzly

Registriert seit: 10. Dez 2004
150 Beiträge
 
Delphi XE4 Professional
 
#10

Re: Und ein weiteres Erkennungsthema...

  Alt 29. Jul 2009, 15:01
Ich weiß, ist gelöst.

Aber zum Erkennen der Augen habe ich vor einiger Zeit von einem interessanten Ansatz gelesen: Dort wurde auch in einem laufenden Video nach dem Gesicht und den Augen gesucht. Und um die Augen zu finden wurde einfach auf's Zwinkern gewartet. Gibt im Differenzbild zwischen zwei Video-Frames scheinbar ein schönes Signal...

Wollt' ich nur noch loswerden.

Gruß
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:50 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