Снимка и разпознаване на лица

dakata__92

Super Moderator
Здравейте! На какъв принцип се засичат лица на снимка. Имам код който го прави но се ползват някакви сериализирани масиви с числа и се чудя какво точно съдържат. Примерно растояние между очите и носът с устните ли какво точно? Ето за какво говоря:
unserialize - така изглежда масивът като има още много стойности а това е част от него .
Код:
array (
  0 => 
  array (
    0 => 
    array (
      0 => 
      array (
        0 => 
        array (
          0 => 
          array (
            0 => 0.0043272299999999996,
            1 => 0.038381899999999997,
            2 => -1,
            3 => -1,
            4 => 1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 2,
              1 => 7,
              2 => 16,
              3 => 4,
              4 => -1,
            ),
            1 => 
            array (
              0 => 2,
              1 => 9,
              2 => 16,
              3 => 2,
              4 => 2,
            ),
          ),
        ),
        1 => 
        array (
          0 => 
          array (
            0 => 0.0130762,
            1 => 0.89652600000000005,
            2 => 0.26293100000000003,
            3 => -1,
            4 => -1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 8,
              1 => 4,
              2 => 3,
              3 => 14,
              4 => -1,
            ),
            1 => 
            array (
              0 => 8,
              1 => 11,
              2 => 3,
              3 => 7,
              4 => 2,
            ),
          ),
        ),
      ),
      1 => 
      array (
        0 => 
        array (
          0 => 
          array (
            0 => 0.00052434599999999997,
            1 => 0.10216600000000001,
            2 => -1,
            3 => -1,
            4 => 1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 13,
              1 => 6,
              2 => 1,
              3 => 6,
              4 => -1,
            ),
            1 => 
            array (
              0 => 13,
              1 => 9,
              2 => 1,
              3 => 3,
              4 => 2,
            ),
          ),
        ),
        1 => 
        array (
          0 => 
          array (
            0 => 0.0044573,
            1 => 0.12384000000000001,
            2 => 0.69103800000000004,
            3 => -1,
            4 => -1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 4,
              1 => 2,
              2 => 12,
              3 => 8,
              4 => -1,
            ),
            1 => 
            array (
              0 => 8,
              1 => 2,
              2 => 4,
              3 => 8,
              4 => 3,
            ),
          ),
        ),
      ),
      2 => 
      array (
        0 => 
        array (
          0 => 
          array (
            0 => -0.00092708299999999999,
            1 => -1,
            2 => 0.19536999999999999,
            3 => 1,
            4 => -1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 6,
              1 => 3,
              2 => 1,
              3 => 9,
              4 => -1,
            ),
            1 => 
            array (
              0 => 6,
              1 => 6,
              2 => 1,
              3 => 3,
              4 => 3,
            ),
          ),
        ),
        1 => 
        array (
          0 => 
          array (
            0 => 0.00033989099999999999,
            1 => 0.210144,
            2 => 0.82586700000000002,
            3 => -1,
            4 => -1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 3,
              1 => 7,
              2 => 14,
              3 => 9,
              4 => -1,
            ),
            1 => 
            array (
              0 => 3,
              1 => 10,
              2 => 14,
              3 => 3,
              4 => 3,
            ),
          ),
        ),
      ),
    ),
    1 => 0.35059200000000001,
  ),
  1 => 
  array (
    0 => 
    array (
      0 => 
      array (
        0 => 
        array (
          0 => 
          array (
            0 => 0.0023025699999999999,
            1 => 0.101838,
            2 => -1,
            3 => -1,
            4 => 1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 4,
              1 => 7,
              2 => 4,
              3 => 4,
              4 => -1,
            ),
            1 => 
            array (
              0 => 4,
              1 => 9,
              2 => 4,
              3 => 2,
              4 => 2,
            ),
          ),
        ),
        1 => 
        array (
          0 => 
          array (
            0 => 0.00441743,
            1 => 0.82190600000000003,
            2 => 0.195655,
            3 => -1,
            4 => -1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 9,
              1 => 4,
              2 => 2,
              3 => 16,
              4 => -1,
            ),
            1 => 
            array (
              0 => 9,
              1 => 12,
              2 => 2,
              3 => 8,
              4 => 2,
            ),
          ),
        ),
      ),
      1 => 
      array (
        0 => 
        array (
          0 => 
          array (
            0 => 0.022203199999999999,
            1 => 0.22054099999999999,
            2 => -1,
            3 => -1,
            4 => 1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 1,
              1 => 1,
              2 => 18,
              3 => 5,
              4 => -1,
            ),
            1 => 
            array (
              0 => 7,
              1 => 1,
              2 => 6,
              3 => 5,
              4 => 3,
            ),
          ),
        ),
        1 => 
        array (
          0 => 
          array (
            0 => -0.000172831,
            1 => 0.073263300000000003,
            2 => 0.59314800000000001,
            3 => -1,
            4 => -1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 4,
              1 => 5,
              2 => 13,
              3 => 8,
              4 => -1,
            ),
            1 => 
            array (
              0 => 4,
              1 => 9,
              2 => 13,
              3 => 4,
              4 => 2,
            ),
          ),
        ),
      ),
      2 => 
      array (
        0 => 
        array (
          0 => 
          array (
            0 => 0.0043567299999999996,
            1 => 0.18441099999999999,
            2 => -1,
            3 => -1,
            4 => 1,
          ),
          1 => 
          array (
            0 => 
            array (
              0 => 1,
              1 => 7,
              2 => 16,
              3 => 9,
              4 => -1,
            ),
... и още много
 
http://davidwalsh.name/face-detection-jquery

http://www.codediesel.com/algorithms/face-detection-in-images-using-php/

http://qnimate.com/facebook-style-face-detection-and-tagging-with-javsscript/

http://stackoverflow.com/questions/1210672/facial-recognition-detection-php-or-software-for-photo-and-video-galleries

http://corpocrat.com/2009/08/18/automatic-face-detection-with-php-in-linux/

Намерих няколко такива скрипта, виждам че всички връщат x,y, width, hight и нещо друго, мисля че това са твоите кординати ;) Прегледай и тези, които ти дадох, ако още не си и виж и други. Надявам се да съм помогнал.

:?:
 
Да, благодаря ти за информацията. Интересува ме как PHP засича лицето? Смисъл по пикселите ли как? Просто какво с какво сравнява за да засече лице? Гледам повечето системи и някакви цифри все ползват и прочие, които незнайно от къде са взети и не е обяснено какви са и за какво служат.

Малко в страни от темата. Как да оптимизирам ето тази проверка:

PHP:
if (isSet($this->matrix[$y-1][$x],
							$this->matrix[$y+1][$x],
							$this->matrix[$y][$x-1],
							$this->matrix[$y][$x+1]
					)) {
						if ($this->matrix[$y-1][$x] == $this->replacement AND
							$this->matrix[$y+1][$x] == $this->replacement AND
							$this->matrix[$y][$x-1] == $this->replacement AND
							$this->matrix[$y][$x+1] == $this->replacement
						) {
							$this->matrix[$y][$x] = $this->replacement;
						}
					}
 
Здравей,
многото цифрички са теглата на връзките на невронна мрежа.
https://bg.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B2%D1%80%D0%BE%D0%BD%D0%BD%D0%B0_%D0%BC%D1%80%D0%B5%D0%B6%D0%B0
В никакъв случай не искам да кажа, че разбирам от невронни мрежи, просто на времето ми беше любопитно как се прави OCR. Предполагам разпознаването на лица е на същият принцип.
 
imagination каза:
Здравей,
многото цифрички са теглата на връзките на невронна мрежа.
https://bg.wikipedia.org/wiki/%D0%9D%D0%B5%D0%B2%D1%80%D0%BE%D0%BD%D0%BD%D0%B0_%D0%BC%D1%80%D0%B5%D0%B6%D0%B0
В никакъв случай не искам да кажа, че разбирам от невронни мрежи, просто на времето ми беше любопитно как се прави OCR. Предполагам разпознаването на лица е на същият принцип.

Аз също съм се интересувал доста от OCR. Преди време използвах шеснайсетично визуализиране на пикселите посредством цветовият код. Посредством прости изчисления изчиствам шума в пикселите дори при строго избрани цветове.
 

Back
Горе