Обнаружение глаз с использованием JavaScript и HTML5

У кого-нибудь есть идеи, шаги или алгоритмы для обнаружения глаз на 2d изображениях с использованием javascript и HTML5?

Я уже сделал преобразование цветового пространства RGB в YCbCr

Теперь мне нужна помощь по удалению глаз

function hellow(e)
{
    var r,g,b,a,gray;
    var imageData = ctxBg.createImageData(gameWidth,gameHeight);
    var das =imageData.data;

    for(var i=0;i<=800;i++)
    {
        for(var j=0;j<=640;j++)
        {
            var d = (j*imageData.width+i)*4;
            var helow = ctxBg.getImageData(i,j,1,1);
            r=helow.data[0];
            g=helow.data[1];
            b=helow.data[2];
            a=helow.data[3];
            das[d]=Math.round((0.299 *r) - (0.168935*g) + (0.499813*b));
            das[d+1]=Math.round((0.587 *r) - (0.331665*g) + (0.418531*b));
            das[d+2]=Math.round((0.114 *r) - (0.50059*g) + (0.081282*b));
            das[d+3]=a;
            console.log(das[d]+":"+das[d+1]+":"+das[d+2]);
        }
    }
    ctxBg.putImageData(imageData,0,0);
    //console.log('c');
    e.preventDefault(); 
}

Это мой код для преобразования цветового пространства rgb в YCbCr.

Пожалуйста, помогите мне также улучшить код для более быстрого выполнения.

5 ответов

Решение

В последнее время я пытался решить ту же проблему:

  1. Уменьшите обработанное изображение для достижения достойной производительности (я уменьшил все до ширины 320 пикселей)

  2. Обнаружение лица на изображении с помощью библиотеки Core Computer Vision - https://github.com/liuliu/ccv

  3. На основании обнаруженной информации о прямоугольнике лица определяют глаза с помощью детектора объектов HAAR (он имеет каскад для обнаружения только глаз - https://github.com/inspirit/jsfeat

Для шага 2 я также использовал "оттенки серого" и "equize_histogram" из библиотеки JSFEAT.

Также, если шаг 3 не пройден, вы можете попытаться угадать положение глаз (зависит от того, насколько высокой точности вы собираетесь достичь).

Этот рабочий процесс дал мне удовлетворительные результаты и производительность. Он тестировал его как на настольном компьютере (~500 мс на iMac), так и на мобильных устройствах (~3000 мс на iphone 4 с использованием изображения с веб-камеры). К сожалению, на данный момент я не могу опубликовать ссылку на рабочий пример, но я опубликую ссылку на github, как только у меня там что-то будет.

Вы можете использовать tracking.js для обнаружения глаз, используя различные приемы из реальной сцены, снятой камерой.

После того, как вы импортируете скрипт с библиотекой и добавляете холст в HTML, вы можете сделать что-то вроде:

var videoCamera = new tracking.VideoCamera().hide().render().renderVideoCanvas(),
    ctx = videoCamera.canvas.context;

videoCamera.track({
    type: 'human',
    data: 'eye',
    onFound: function(track) {
        for (var i = 0, len = track.length; i < len; i++) {
            var rect = track[i];
            ctx.strokeStyle = "rgb(0,255,0)";
            ctx.strokeRect(rect.x, rect.y, rect.size, rect.size);
        }
    }
});

Код выше взят из одного из примеров в библиотеке. Надеюсь, что это поможет вам

Я на самом деле не знаю, реализовано ли что-то конкретное только для обнаружения глаз, но для обнаружения лица вы должны искать библиотеку с именем Core Computer Vision Library, которая размещена на github: https://github.com/liuliu/ccv,

Другой возможностью будет https://github.com/inspirit/jsfeat, где обнаружение лица и края пикселя будет реализовано с использованием различных алгоритмов, таких как оптический поток Лукаса-Канаде и детектор объекта HAAR.

Пожалуйста, прочитайте этот пост для дальнейших методов: Обнаружение лица javascript/html5/flash

Я осмелюсь сказать, что только яркости может быть достаточно для определения положения глаз / лица - так что вы можете сделать свой код быстрее, просто вычисляя CbCr. Обычно ищут лица / лица, используя каскад Хаара:

http://en.wikipedia.org/wiki/Haar_wavelet

Существует пример обнаружения глаз (с пользовательскими каскадами openCV для глаза) в чистом javascript/html5 с использованием библиотеки HAAR.js (ps я автор).

Проект остановлен, новые функции не добавлены, но он делает то, что заявляет.

Для обнаружения глаз используйте OpenCV.js, проверьте это обнаружение человеческого глаза с помощью Javascript и OpenCV

let faceCascadeFile = 'haarcascade_frontalface_default.xml';

let eyeCascadeFile = 'haarcascade_eye.xml';

utils.createFileFromUrl(faceCascadeFile, faceCascadeFile, () => {

    utils.createFileFromUrl(eyeCascadeFile, eyeCascadeFile, () => {

    console.log('eye cascade ready');

    })
})

пример

Другие вопросы по тегам