2013-01-03 51 views
4

有沒有人有任何想法或步驟或算法使用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色彩空間的一些幫助。

請幫我改進代碼以加快執行速度。

+1

你在告訴我代碼是否會提取眼睛?這是令人難以置信的 –

+1

沒有hes告訴這段代碼是否RGB到YCbCr轉換 – C5H8NNaO4

+0

我不建議做這樣的任務客戶端。客戶端腳本非常適合使界面更加可用,而不是沉重的圖像操作。 – MaxArt

回答

6

什麼我最近試圖解決同樣的問題:

  1. 比例縮小處理後的圖像,實現不俗的表現(我縮小的一切320px的寬度)

  2. 人臉檢測使用核心計算機視覺庫 - https://github.com/liuliu/ccv

  3. 基於使用HAAR對象檢測器檢測到的面部矩形信息檢測眼睛(它具有級聯的眼裏只有檢測 - https://github.com/inspirit/jsfeat

對於第2步我也用「灰度」和「equalize_histogram」從JSFEAT庫。

此外,如果第3步失敗,您可以嘗試猜測眼睛的位置(取決於您的準確度有多高)。

此工作流程給了我滿意的結果和性能。它在桌面(iMac上約500ms)和移動設備(使用攝像頭圖像的iphone 4上〜約3000ms)進行了測試。 不幸的是我現在無法發佈一個鏈接到工作示例,但我會發佈一個鏈接到github,一旦我有東西在那裏。

1

我敢說,亮度只能夠檢測眼睛/臉部位置 - 所以你可以通過滴下CbCr的計算來讓你的代碼更快。人們通常會尋找贊成票/面孔用哈爾級聯:

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

+0

請給我一個關於如何正確地做的解釋 –

3

我真的不知道,如果事情的特異性目的只爲眼部檢測來實現,但對於人臉檢測,你應該命名爲核心的電腦庫照顧視覺庫,在github上託管:https://github.com/liuliu/ccv

另一種可能性是https://github.com/inspirit/jsfeat,其中人臉和像素邊緣檢測是使用不同的算法實現的,如Lucas-Kanade光流和HAAR物體檢測器。

請閱讀這篇文章進行進一步的技術:Face detection javascript/html5/flash

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

上面的代碼來自庫中的一個例子。 希望能夠幫助您

+0

這個圖書館是非常好的,但相當資源飢餓。你知道任何其他只是爲了眼睛和臉部追蹤的目的嗎?它可以提供更好的性能? –

+0

不是Tanel對不起:( –

+2

查看我剛剛更新的https://github.com/mtschirs/js-objectdetect#performance性能比較快速眼*檢測*庫。對於純眼*跟蹤*,儘管或跟蹤track.js或調整https://github.com/auduno/headtrackr中的camshift算法。 –

1

有一個使用HAAR.js庫(ps我是作者)在純javascript/html5中進行眼睛檢測(使用自定義眼睛haar openCV級聯)的示例。

項目停止,沒有添加任何新功能,但它的功能如此。