Pages

2010年5月31日 星期一

自動膚色偵測

  之前介紹過幾篇與膚色模型相關的文章,這次,我打算即時地去找符合當下的膚色分佈,為了因應在不同外在環境對膚色造成的影響,例如:白光、黃光等。

  採取的手段是分析手部區域的直方圖分佈,這個想法源自於:背景(人工)的分佈會比較均勻(狹長);而手掌(自然)的分佈會比較廣泛(常態)。例如下圖所示:這是在辦公室、日光燈光線充足的環境下,而手的分佈就落在右半邊。

  
  至於選擇的 color space 是 YCbCr 的 Cr channel,因為膚色比較偏。下圖是整個演算法的流程圖,當中做了以下幾件事情:
  1. Histogram Statistics & Smooth。
  2. Find Global Maximum。
  3. Find Local Maximum。
  4. Find Valley (Local Minimum)。
  5. Set-up Threshold & Create Skin Model。

  以上所提的五個項目,當中參數的設置、做法,已經寫在投影片,在此不一一贅述,不過,由於測試的樣本數太少,會不會白光、黃光的分佈都這麼一致,還是個問號;另外「Set-up Threshold」的公式目前是:
  
  比較合理應該是除以 225 取平均,只是,我為了將指尖(比較亮、比較黃、數量比較少)也拉進來,才除上 1000,這是有待商榷的。最後,補上兩張測試結果:(因為是統計像素,所以最好是框得剛剛好的)

黃光(光線充足)

白光(光線充足)

程式碼與投影片下載

相關閱讀

2010年5月18日 星期二

不同手勢的 Fourier Descriptor

  繼之前觀察矩形在不同維度的傅立葉描述子之變化後,這次拿不同手勢來做實驗,一共有0、1、5三種手勢。從以下的影片可以發現,當手指頭越多,一團一團的包也會越多;另外,當維度越接近起始維度時,這些包就會比較像長條狀。##ReadMore##



  傅立葉描述子在頻率域擷取特徵,以描述物體的形狀。至於後續還可以研究(or改善)的部份有三個:
  1. 利用主成分分析,找出主要維度的特徵,以減少特徵比對所需的時間。
  2. 對特徵的各分量做正規化,例如:全部同除以第一個分量。如此可避免同種手形、不同大小(遠近)所造成的誤判。
  3. 觀察不同手形的傅立描述子的強度(spectrum),看看哪幾個分量比較大。這或許和 PCA 有異曲同工之妙(?)。

程式碼下載

相關連結

2010年5月17日 星期一

Nvidia 3D Vision

Nvidia 的 3D 顯示技術採用「Shutter Class」的方式,透過 IR-Emitter,讓眼鏡與 120Hz LCD,以每 1/120 秒的速度,更新左右眼看到的畫面。

  
至於把影像丟給顯示卡做繪圖的部分,是透過 DirextX 的 Direct3D APIs,所以,有了 Nvidia 的硬體配備,想要寫一個 3D 的應用程式,還得先把 Direct3D 入門一下。我有提供簡單的範例(ex: create image、camera preview)和投影片介紹,有興趣可以參考一下。

回到 Nvidia 3D Vision 的議題,他所提供的 solution 是:不管 3D 的來源為何,網路攝影機、3D video、3D game 等等,只要把左右眼的影像「side by side」放在 Direct3D 所提供的 surface 物件中,並透過指定的介面送給顯示卡,它就會做後續呈現的動作了。我把整個架構圖歸納如下:


另外,為了驗證來源是否合法,需要在 surface 下加入 signature,這也是許多人不知道的事情,若沒有加入此簽章,就會變成同時顯示兩張被延展的影像,也就是沒效果的意思。至於如何設定,看範例吧!


目前 Nvidia 釋出的驅動程式版本,在處理 3D 顯示,有全螢幕播放的限制,或許之後的版本就可以 window mode 播放了,如果真能實現,還可以結合 MSN、Skype 做 3D 視訊的應用。


程式碼與投影片下載


相關連結
 
Blogger Templates