跳到主要內容

Processing + OpenCV 的特徵提取(blob detection)試驗


processing

在「【跟著我的閱讀腳步】數據可視化之美」我曾經提到,Processing真的是視覺化的好幫手,語法簡單,範例與支援的函數庫多,再加上龐大的使用群,在google上隨便都能找到許多好玩的應用。現在,我要利用Processing來處理一些簡單的特徵提取(blob detection)工作。


這項工作的需求來自於我妹打算要做的研究。研究內容暫時不談,不過要看的是動作上的差異。一個方法是在畫面上打格子,然後算格子數的差異。這個我已經用Xuggler將影片解碼,在畫格上畫上格子後重新編碼的方式實現。但是算格子還是有點麻煩,所以我們更進一部,試試有沒有自動化的方式對影片中的動作做簡單的偵測。就在這個時候找到了Processing + OpenCV的應用。

Processing可以從這裡取得,而Processing的OpenCV支援則可以從這邊下載。如果你也使用Mac的話,Processing應該是抓下dmg後,將應用程式拖到Applications或你習慣的應用程式資料夾中,就可以直接用了。OpenCV則要先安裝OpenCV framework,再下載OpenCV Processing Library,放到Processing的libraries資料夾裡面後,才能夠開始使用。OPENCV Processing and Java Library中有詳細的說明。

要開始Processing只要從void setup() { }和void draw() { }下手即可。在setup()中設定初始化的設定數值,在draw()裡頭加入要進行渲染(render)的內容。

接著我開始了兩個試驗,一個是簡單的臉部偵測(face detection)。OpenCV的範例中就有直接的應用,而我在這個例子中加上了帽子和生日蛋糕,變成簡單的慶生畫面。

face_detection_2

face_detection_1

這個例子裡面,只用了detect()的個方法就搞定了。再算一下帽子和蛋糕所在位置的比例就完成了。好玩的是,用畫的笑臉也可以辨識,看來OpenCV所訓練的檔案泛用性還滿高的。

第二個則是針對影片去做特徵提取(blob detection),我找了一個有白色背景的太極拳的影片來試試。

blob_dection_1

blob_dection_2

特徵提取在OpenCV裡面也相當簡單,依循着Blob物件的範例就可以搞定大部份的事情。只要再畫上框框,偵測最左邊和最右邊的點即可。但我對結果不是很滿意,可能還得調整一下影像差異的參數才行。

在這兩個試驗之後,我也開始玩其他的例子。比方說改寫Generative Gestaltung這本書(德文的,看不懂)裡面的範例P_4_3_2_01,把蓮花改成心經版的。

lotus_text

這些例子都只要少許的努力就可以完成。只不過Processing並非沒有缺點,有些經常使用的經典libraries有點過時了。例如processing.video呼叫的是QTJava,Apple已經宣佈它過時了,而且只能使用32-bit的模式去跑。這對Snow Leopard或Lion這類64-bit的使用者來說,犧牲了不少效能。但使用Processing來呈現視覺化,節省了太多開發時間,或許這也是目前仍有許多人運用Processing的原因。好吧!對我而言確實是這樣,起碼呼叫webcam方便多了。至於其他的libraries,我也還在嘗試,應該會有些新的解決方案吧!

留言

熱門文章

OREO聖誕麋鹿 #差不多食譜

聖誕節就快到囉!今年我們用現成的材料,來做些簡單好玩的小東西。第一個登場的,就是有著紅鼻子的麋鹿。 3隻「OREO聖誕麋鹿」差不多需要這些材料: OREO餅乾 ...... 3片 蝴蝶餅 ...... 3-6片(掰斷有失敗的機會) 餅乾棒 ...... 3根(我用百力滋) 眼睛糖 ...... 6顆 紅色m&m's ...... 3顆(紅鼻子) 融化的巧克力 ...... 適量(黏著用) 「OREO聖誕麋鹿」差不多是這麼做的: Step 1. 準備好材料 計算一下自己想要做多少隻OREO聖誕麋鹿,按照材料表把需要的餅乾糖果給買回來。材料備齊之後,就把巧克力拿去用微波爐融化備用。沒有微波爐的也可以隔水加熱,想辦法把巧克力融化就可以。 Step 2. 製作麋鹿 再過來就要開始製作麋鹿了!先把OREO轉開,留下有奶油的那邊,待會方便把餅乾稍壓一下固定。 把蝴蝶餅掰斷成鹿角的樣子,沾上巧克力,擺到OREO上面。餅乾棒同樣沾上巧克力,一樣放上OREO。接著蓋上OREO,稍微壓一下。 這邊可以大膽去擺,在巧克力凝固前都可以調整。要是發現黏不太住,多沾點巧克力再試試。 Step 3. 擺出表情 接下來要用眼睛糖和紅色m&m's做出麋鹿的表情。用筷子將眼睛糖和m&m's沾上巧克力,黏到眼睛鼻子相應的位置就可以。 沒有辦法買到眼睛糖的,可以用白巧克力先畫出眼白,再用黑巧克力點出眼珠。紅鼻子也可以自己換成橘色、綠色、藍色等等不同的m&m's。 Step 4. 讓巧克力凝固 表情做好之後不要馬上移動,得要有點耐心讓巧克力凝固。要不然悲劇馬上就會發生,不是表情變扭曲,就是整支麋鹿散架。 等巧克力凝固後,就可以像棒棒糖那樣拿起來玩耍了。再來杯熱牛奶,整隻麋鹿給他泡下去也很有趣。 最後幫大家整理一下「OREO聖誕麋鹿」的做法: 巧克力用微波爐加熱融化備用。 轉開OREO。 蝴蝶餅掰成鹿角的形狀,沾巧克力後放上OREO餅乾。 餅乾棒同樣沾上巧克力,擺上OREO餅乾。 蓋上餅乾,在眼睛糖和紅色m&m’s背後沾上巧克力,黏到眼睛和鼻子相應的位置。 稍微等一下,讓巧克力凝固就好囉!

差不多食譜:手工巧克力餅乾 Chocolate Cookies

又是手工餅乾,最近一連出了兩份餅乾食譜,這個「手工巧克力餅乾」已經是第三份了。會不會有更多呢?我可以告訴大家,這是肯定的。 要怪就怪這個陰鬱的冬季雨天,哪裡都不方便去,也懶得出去。餅乾櫃空在那邊已經很久了,雖然有時候會嘴饞,但也沒有迫切去補貨的必要。反正經常開伙,平常該有的材料都會有,自己弄個成分完全透明的零食,也是個不錯的選擇。再說,用烤箱進行烘焙時,房間會變得比較乾燥,也比較溫暖。在夏天是個折磨,但到了冬天,這種感覺還滿不錯的。 話不多說,開始進行這一道「手工巧克力餅乾」的準備工作。

差不多食譜:檸檬餅乾 Lemon Biscuits

寒流來襲,氣象局持續發布低溫特報。在這冷颼颼的冬日,差不多食譜為您準備了一支有溫度的影片食譜「檸檬餅乾 Lemon Biscuits」。檸檬的酸味能夠讓您有清新的味覺,用檸檬做的餅乾則讓您解除冬日過份進補的油膩感,同時又滿足一直想吃東西的衝動。但我可沒說這種吃法的卡路里不高,對您的身材不會有影響。恐怕您還是得自己稍微節制些! 不過,說老實話,我單純是因為天氣太冷,所以把烤箱拿來當暖爐用。坐在烤箱後面等待餅乾完成,果真有暖呼呼的感覺。