Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 30. März 2013 21:03

czarnowski
kennt CMS/ms
Registriert: 18. Oktober 2012
Beiträge: 457

Gesichtsdetektierung

Ich habe mich immer wieder mal gefragt wie Anbieter Facebook oder Stayfriends die Gesichter aus Uploadfotos erkennen können um daraus z.B. Profilbilder zu generieren.

Nun habe ich es für mich klären können

OpenCV  und das PHP Ergänzungsmodul facedetect  (http://www.xarg.org/project/php-facedetect/)  machen es möglich.

Und es funktioniert hervorragend.

Erkennt tatsächlich sehr sicher die Bereiche in einem Image in denen Gesichter enthalten sind.
Die kann man dann sehr leicht extrahieren.

Stayfriends und ähnliche Anbieter erkennen damit z.B. Bescheissversuche, wenn jemand  statt seines Gesichtes z.B. eine  Mailadresse postet um Gebühren zu umgehen - die Technik ist also für einen solchen Anbieter eine Existenzsicherung.

Andere Anbieter nutzen es um statt eines nicht jugendfreien Ganzkörperbildes nur das Gesicht anzuzeigen.

Ob das nun auch geeignet ist den Osterhasen auf der Schneewiese erkennen zu können habe ich noch nicht probiert.

Offline

#2 30. März 2013 21:26

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: Gesichtsdetektierung

czarnowski schrieb:

statt eines nicht jugendfreien Ganzkörperbildes nur das Gesicht anzuzeigen.

Wenn das funktioniert

czarnowski schrieb:

Ob das nun auch geeignet ist den Osterhasen auf der Schneewiese erkennen

sollte das ein Kinderspiel sein  tongue ...

Offline

#3 31. März 2013 19:28

czarnowski
kennt CMS/ms
Registriert: 18. Oktober 2012
Beiträge: 457

Re: Gesichtsdetektierung

Neben der klar aufwendigeren aber besseren Lösung wie beschrieben gibt es auch eine reine PHP Lösung.

Script gibt es bei felixkoch.de

Mein Testscript dazu:

[== php ==]
<?php

include("FaceDetector.php");
$image = "images1.jpg";
$detector = new FaceDetector();
$detector->scan($image);
$faces = $detector->getFaces();
if (count($faces) > 0) 
{    
    $i=0;
  foreach ($faces as $face)  
  {    
     $i++;
    $img = imagecreatefromjpeg($image);
    $im = @ImageCreate($face['width'], $face['height']);

    $ok = ImageCopy($im, $img, 0, 0, $face['x'], $face['y'], $face['width'], $face['height']);
    
    Imagejpeg($im,$i.'.jpg');
    chmod($i.'.jpg',0777);
    unset($img);
    unset($im);
    echo "$i.jpg erstellt <br />";
  }  
}
else
     echo 'Kein Bild erstellt';
unset($detector);
?>

Diese Softwarelösung arbeitet am besten mit kontrastreichen Images.

Ergebnisse sehen z.B. so aus:

1.jpg

entstanden aus

php

Alle Rechte an den Bildern liegen bei http://www.czarnowski.com/

Offline

#4 01. April 2013 10:56

nicmare
Server-Pate
Registriert: 15. Dezember 2010
Beiträge: 1.314
Webseite

Re: Gesichtsdetektierung

sehr cool. danke für das beispiel

Offline

#5 01. April 2013 19:11

dc2
kennt CMS/ms
Registriert: 26. November 2010
Beiträge: 140
Webseite

Re: Gesichtsdetektierung

Ich arbeite im Studium auch gerade sehr viel mit OpenCV (zwar via Python, aber das ändert ja nichts an der Funktionalität^^) und bin immer wieder begeistert, was die Bibliothek alles bietet und vor allem wie performant das ganze ist!

Offline

#6 01. April 2013 19:28

czarnowski
kennt CMS/ms
Registriert: 18. Oktober 2012
Beiträge: 457

Re: Gesichtsdetektierung

OpenCV ist Klasse.
Nachteil - es ist auf den wenigsten Servern für PHP brauchbar installiert.

Vorteil - enorme Leistungsfähigkeit.

Es gibt aber auch andere Methoden diesbezüglich zu arbeiten - hier das Ergebnis eines anderes Test's:

fb.jpg

Damit hat man kaum Probleme diverse Gesichter aus einem Bild zu extrahieren wenn sie denn einigermaßen Portraitähnlich aufgenommen wurden.

Diese Methode ist schnell hat aber den Nachteil das man mit sw Fotos nichts wird (irgendwo muss man ja einschränken wenn es um Speed geht - die Detektion hier hat gerade mal etwa 0,2 Sekunden gekostet und ist somit brauchbar.

Offline

#7 01. April 2013 21:20

czarnowski
kennt CMS/ms
Registriert: 18. Oktober 2012
Beiträge: 457

Re: Gesichtsdetektierung

DC schrieb:

Python,

Unter Python  benötigt man nur 3..4 Zeilen und das war's.
Setze Python für ganz bestimmte Dinge ein da erheblich flexibler und schneller als PHP.
Hier mal ein Fremdbeispiel:

http://www.youtube.com/watch?feature=pl … ZCgAZv2oFw

oder hier

http://www.youtube.com/watch?v=HTk_UwAYzVk

Beitrag geändert von czarnowski (01. April 2013 21:23)

Offline

#8 04. April 2013 17:06

czarnowski
kennt CMS/ms
Registriert: 18. Oktober 2012
Beiträge: 457

Re: Gesichtsdetektierung

Es gibt auch mal lustige Ergebnisse
face02.jpg

Natürlich dürfte klar sein das der Einsatz von Gesichtdetektierung in dieser Form nur für relativ wenige Anwendungen gut ist.

Tatsächlich stammen die Beispiele aus einer Recherche von mir - das eigentliche Ziel ist etwas komplexer und nicht in PHP realisiert - da geht es darum über die Detektierung folgende Identifizierung der Personen zu ermitteln ob  Personen an den Orten überhaupt etwas zu suchen haben.
Sprich - alle Personen die für die betreffenden Räumlichkeiten und Zeitraum keine Zugangsgewährung haben lösen eine Meldung aus.
Das Bildmaterial  wird von Videokameras geliefert die Schnelligkeit ist einem Livebetrieb entsprechend.

Der Bierbauch hier würde also eine Fehlmeldung  auslösen.

Offline