6

JavaScriptとHTML5を使用して2D画像で目の検出を実行するためのアイデア、手順、またはアルゴリズムを誰かが持っていますか?

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 色空間に変換するための私のコードです。

より高速な実行のためにコードを改善するのも手伝ってください。

4

6 に答える 6

7

同じ問題を解決しようとして最近行ったことは次のとおりです。

  1. 適切なパフォーマンスを達成するために、処理された画像を縮小します (すべてを 320px 幅に縮小しました)

  2. Core Computer Vision Library を使用して画像内の顔を検出する - https://github.com/liuliu/ccv

  3. 検出された顔の四角形の情報に基づいて、HAAR オブジェクト検出器を使用して目を検出します (目のみを検出するためのカスケードがあります - https://github.com/inspirit/jsfeat

ステップ 2 では、JSFEAT ライブラリの「grayscale」と「equalize_histogram」も使用しました。

また、ステップ 3 が失敗した場合は、目の位置を推測することもできます (どの程度の精度を求めるかによって異なります)。

このワークフローにより、満足のいく結果とパフォーマンスが得られました。デスクトップ (iMac で最大 500 ミリ秒) とモバイル デバイス (Web カメラからの画像を使用して iPhone 4 で最大 3000 ミリ秒) の両方でテストしました。残念ながら、現時点では実際の例へのリンクを投稿することはできませんが、何かができたら github へのリンクを投稿します。

于 2013-09-25T16:54:43.020 に答える
4

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);
        }
    }
});

上記のコードは、ライブラリ内の例の 1 つからのものです。あなたを助けることを願っています

于 2013-09-08T06:24:31.360 に答える
3

特別なものが目の検出のみに実装されているかどうかはよくわかりませんが、顔検出の場合は、github でホストされている Core Computer Vision Library という名前のライブラリを確認する必要があります: https://github.com/liuliu/ccv .

もう 1 つの可能性はhttps://github.com/inspirit/jsfeatで、ルーカス・カナデ オプティカル フローや HAAR オブジェクト検出器などのさまざまなアルゴリズムを使用して、顔とピクセルのエッジ検出が実装されます。

さらなるテクニックについては、この投稿をお読みください:顔検出 javascript/html5/flash

于 2013-01-03T08:14:03.757 に答える
1

HAAR.jsライブラリを使用した純粋な javascript/html5 での目の検出 (カスタム eye haar openCV カスケードを使用) の例があります (ps 私は著者です)。

プロジェクトは停止され、新しい機能は追加されませんが、記載されていることは実行されます。

于 2014-12-30T15:11:03.030 に答える
1

目/顔の位置を検出するには輝度だけで十分だと思います.CbCrの計算を滴下するだけでコードを高速化できます. 通常、ハールカスケードを使用して年/顔を探します。

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

于 2013-01-03T07:57:28.090 に答える