星期六, 6月 27, 2009

CAM Game Show 2009 大獎

最佳音效獎:

 林炳海: 趕羚羊 14 票
 林崇基: 忍者追殺大逃亡 7 票

最佳美工獎:

 陳佳筠: 雙手萬能 19 票


陳佳筠發表 最佳美工獎 得獎感言!

 李慧娟: 心靈之蛋 7 票

最佳人氣獎:

 劉昌杰: 恐怖的鱷魚牙齒大冒險 8 票
 黃國維: Virtual Joystick 7 票

創意大獎:

 許達易: 串丸子 3 票
 嚴仕佳: 雷射筆射氣球 2 票
 劉育成: 照片瀏覽器 1 票


劉育成創意受肯定, 發表感言!

 劉國昱: 躲避球 1 票
 邱巾倫: 雨天的祈禱 1 票
 黃劭龍: 教室野球 1 票
 黃國維: Virtual Joystick 1 票

最佳遊戲大獎:

 黃國維: Virtual Joystick 12 票


黃國維發表 最佳遊戲大獎 得獎感言!

 黃劭龍: 教室野球 4 票


黃劭龍發表 最佳遊戲大獎第二名 感言!

 劉昌杰: 恐怖的鱷魚牙齒大冒險 4 票
 鄭佳訓: 誰來接招 3 票
 葉秀斌: 踢足球 2 票


葉秀斌作品受肯定, 發表感言!

 方泓智: 跑跑跑 2 票
 

Week 19: 視訊程式夏令營第五天

成果展 上半場 11:00~12:00 展出順序:

 1. 吳坤璋: 太鼓達人之傻傻摸不到
 2. 劉育成: 照片瀏覽器
 3. 劉昌杰: 恐怖的鱷魚牙齒大冒險
 4. 陳志芳: 小兔子吃蘿蔔
 5. 許智凱: 調色盤
 6. 嚴仕佳: 雷射筆射氣球
 7. 劉國昱: 躲避球
 8. 林炳海: 趕羚羊
 9. 何宗儒: 躲避球
 

 

 
下半場 13:00 ~ 15:00 展出順序:

 10. 葉秀斌: 踢足球
 11. 黃文凱: 隕石大爆破
 12. 方泓智: 跑跑跑
 13. 李慧娟: 心靈之蛋
 14. 方佑平: 打地鼠之敘情版
 15. 鄭佳訓: 誰來接招
 16. 曾鈞鈺: 打磚塊
 17. 陳佳筠: 雙手萬能
 18. 吳仕閔: 拳心拳力
 19. 黃雅綉: 打磚塊之頂著紅盤子的紅人
 20. 黃鈺雯: 敲企鵝
 21. 張智銓: 電流急急棒之太胖很難走到終點
 22. 許夢涵: 打桌球
 23. 邱巾倫: 雨天的祈禱
 24. 林崇基: 忍者追殺大逃亡
 25. 許達易: 串丸子
 26. 馮國棟: 守護
 27. 黃劭龍: 教室野球
 28. 李茂平: 滂沱大雨
 29. 謝獻其: 棒球打擊遊戲
 30. 黃國維: Virtual Joystick

 成績 已經上傳, 感謝大家的努力!
 

星期四, 6月 25, 2009

Week 19: 視訊程式夏令營第四天

昨天原本很沉悶的電腦教室, 今天同學們為自己的遊戲加上配樂之後, 頓時歡樂起來,...



星期三, 6月 24, 2009

Week 19: 視訊程式夏令營第三天





成果展的環境已經設定完成, 可以開放測試了, 請大家一定要實地做過測試, 才能真正排除各種問題, 圓滿達成任務, 不要讓辛苦一個星期的努力成為白功!
 

星期二, 6月 23, 2009

Debug: 找 Max, Min 時, 記得要給初始值!

同學在執行範例程式 12 SampleProgram12.txt 時,
請千萬記得幫 ucMax[][][] 陣列設定初始值為 0,
幫 ucMin[][][] 陣列設定初始值為 255,
這樣才可以正確地找到每個像素點的極大值與極小值喔!
 

Week 19: 視訊程式夏令營第二天



我可以

詞曲:大支 編曲/j wu

小朋友你長大想當什麼
乘著夢想翅膀 你可以盡情飛翔
夢想我小時候連怎麼寫也不知道
所以你也會像我一樣 實現一天總會來到

你會是下一個陳詩欣 下一個李昌鈺
你是下一個周杰輪 你是下一個王永慶
小朋友 你絕對可當最好的那些
離你不遙遠一瞬間 人人都會有功練

出發吧 遠足去大好前途
你的一小步 也都是你的一大步
小朋友每一步都是阿姆司壯登上月球 加油
快把樂高疊成摩天大樓 你的夢 會像風箏高高飛在天空
你的夢會像蠟筆畫的紅色蘋果
你的夢作在起床以後 不是夢 小朋友 大朋友

讓我們一起說 !

我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵
我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵

小朋友夢是如此美好 但如果你還一直不起床那就不好
聰明的小孩努力成長像小大人 讓美夢成真看他們眼神多認真
可能 你已經等不急轉大人 搖頭跟在幫派混 這不是你要的人生
小妹妹逃出家門 援交能出賣靈魂 幾千塊保險套就不怕愛滋病男人
好的不好學 壞的都不用學 給自己點時間長大分辨
來張開手掌命運線成功線點點點 ok
握起來一切都在自己手裡 give me five
把刀放下來 把毒品放下來 把衣服穿起來 把課本撿起來
彩虹還是會有色彩 你也不會只是黑白 迷失的小孩跟我們一起唱來

我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵
我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵

小朋友你多久沒做夢了
睡不著
爸爸喝醉大吵大鬧
媽媽打牌遲到
沒載你到學校
放牛吃草 B 段班怎麼像大樹一樣高
老師叫壞學生滾出去 就好比醫院不收你原因是因為你生病
這哪是教育 打開電視胡鬧的大人們
怪力亂神烏煙瘴氣的新聞
小朋友看著我們 我們看著你們
小朋友學習的人 不只是模範生

小孩子像張白紙 成長會寫下彩色的字
握筆的人 我們都是
有什麼園丁 便有什麼花園不是嗎?
一起努力撒下希望的種子吧!

讓夢想開花 快快長大 好好長大 要比哥哥爸爸還要偉大

未來棟樑快點茁壯 因為我們很快就需要更多力量
更多知識讓子彈上膛 更多戰士讓明天打勝仗

不論你是哪來的小孩 都可成就更好的未來!
新的一代快快站起來 我們會改變這個時代!

我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵!!
我知道我可以 我一定沒問題 只要我肯努力 我就天下無敵!!
  

星期一, 6月 22, 2009

Week 19: 視訊程式夏令營第一天



今天同學們的表現都很不錯, 藉由這樣撰寫程式的經驗, 我相信同學自己也會產生一些親自撰寫程式才會有的感受, 這些都是成為程式設計師必經的歷程! 加油!
 

星期一, 6月 08, 2009

Week 17: 來收集龍珠吧!



我花了很多時間在網路上找龍珠的圖片, 最後終於在 伊莉討論區 的這張圖中找到:



然後用 Photoshop 把龍珠擷取出來...

範例程式變數說明:
用 (iObjectX1, iObjectY1) 來代表龍珠圖片出現的左上角座標,
龍珠圖片的寬與高分別用 iMarkWidth, iMarkHeight 這兩個變數儲存,
因此, 龍珠圖片的右下角座標 (iObjectX2, iObjectY2) 的計算公式為:
iObjectX2 = iObjectX1 + iMarkWidth;
iObjectY2 = iObjectY1 + iMarkHeight;
因此, 當我們在 callback function 中處理完所有的事情後, 必須給龍珠設定一個新的座標。假設新舊座標的位移量為 ( iDeltaX, iDeltaY ), 新的座標則為
( iObjectX1 + iDeltaX , iObjectY1 + iDeltaY)
當 iDeltaX > 0 時, 表示龍珠是向右移動的, 反之, 當 iDeltaX < 0 時, 表示龍珠是向左移動的; 同理, iDeltaY 則是控制龍珠上下移動方向。

if (iObjectX2 > 320)
iDeltaX = -10;
if (iObjectX1 < 0)
iDeltaX = 10;

if (iObjectY2 > 240)
iDeltaY = -10;
if (iObjectY1 < 0)
iDeltaY = 10;

最後, 龍珠就可以跑來跑去了!



星期四, 6月 04, 2009

Note: 期末考後天天加課!

為了使本學期之作品成果展順利進行, 本課程將於期末考後一週 6/22-26 9:00~16:00 天天在 S513-1 教室加開課程, 成果展 CAM Game Show 2009 訂於 6/26 早上 10:00 在 S513-1 教室舉行。

星期四, 5月 28, 2009

Week 16: 如何去除監視畫面中的雜訊影響?

0. 我噗浪的帳號: YKLee
 如果期末 WebCam 程式寫不出來, 這邊可以找到我...

1. 如何去除監視畫面中的雜訊影響?
 
當我們建立好背景影像, 如果沒有物件闖入監視畫面中, 在最理想的狀況下, 監視畫面應該是全黑的才對。可是由於光線變化及雜訊的影響下, 總會有一些像素點與原來背景的色彩值差距過大, 因此產生上圖中的小白點。
 
 
 
我們該如何去除這些雜訊點的影響呢?
 
 

如果我們將畫面分成一個一個的 8*8 區塊, 在區塊中的亮點總數如果沒有超過一半(32), 那我們就將整個區塊設成全黑區塊, 從上圖的實驗我們可以發現, 右下角的圖片已經全黑了。
 
 
 
如果區塊中的亮點總數如果超過一半了, 那我們就將整個區塊設成全白區塊, 從上圖的實驗我們可以發現, 右下角的圖片只有手部的部分被設成全白區塊。

 SampleProgram16.txt
 
2. 如何與畫面中的虛擬物件互動呢?



換句話說, 就是伸手將畫面中的 WebCam 拍掉!



SampleProgram17.txt
 

星期二, 5月 26, 2009

Week 15: 如何在視訊視窗添加圖片?

直接將視訊擷取視窗中, (20, 20) 至 (50, 50) 的方塊, 塗成綠色:
SampleProgram13.txt

讀入一張 BMP 影像, 並將其色彩值存到 ucMarkR[][], ucMarkG[][], ucMarkB[][] 之中:
SampleProgram14.txt

將 ucMarkR[][], ucMarkG[][], ucMarkB[][] 中的影像, 顯示在視訊擷取視窗中:
SampleProgram15.txt

星期二, 5月 19, 2009

Week 14: 背景圖相關之理論與實作

今天一上課, 我們先補充關於如何取背景圖的理論。在攝影機不動的情況下拍攝靜物, 照理說, 連續兩個畫面(frame)應該是完全一樣的; 然而, 寫程式分析, 卻發現兩張畫面看起來一樣, 實際上卻有稍稍不同, 色彩值因為光線變化 (也許是因為光源閃爍, 或是空氣中的灰塵影響!), 讓不同畫面中, 相同位置的色彩值產生細微的不同。

假設在沒有雜訊的情況下,
第 k 個畫面的位置 (i,j) 的色彩值為 f k (i,j), 雜訊的函數為 X k(i,j),

假設我們所擷取到的色彩值為 F k (i,j),
因此,

 F k (i,j) = f k (i,j) + X k(i,j)

如果我們取連續 30 個畫面色彩值之總和

如何計算色彩距離的臨界值(Threshold) 的範例程式:
SampleProgram12.txt
 

星期二, 5月 12, 2009

Week 13: 背景圖與臨界值的建立

1. 將監視是否有物件的輸出畫面改成黑白畫面
 白: 與背景圖出現過大的色彩差距
 黑: 與背景圖色彩相近
 SampleProgram9.txt

2. 如何建立一張背景圖?
 取連續多張背景影像的平均。
 可以設計另外一個 Callback Function, 專門負責連續取 30 個畫面,
 將其平均後, 當作背景影像。
 SampleProgram10.txt
 SampleProgram11.txt

3. 如何計算色彩距離的臨界值 (Threshold)?
 當我們取得一張背景圖後, 我們如何判斷某個像素點是屬於背景?
 還是有物件進入到我們的畫面中呢?

Note: 下週上課以前務必繳交期末專案構想到 Homework Show @ VCGC,
   缺交的同學期末成績扣 5 分。

 

Maximal Connected Component

1. What's maximal connected component?
 a. Maximal Connected Component (Graph Theory)
 b. Connected Component Labeling

星期二, 5月 05, 2009

Week 13: Viedo Format

上星期期中考第三階段, 有不少同學發現明明同一個程式, 借用別人的 WebCam 來考試, 程式就可以順利執行, 用自己買的 WebCam 來 DEMO 程式, 偏偏就執行不出來。

我們今天就是要針對這個問題討論, 希望同學可以了解不同的攝影機, 傳送視訊資料進電腦的方式也是可以不同的, 一個好的程式設計師應該有能力可以處理不同廠牌的 WebCam, 一樣可以寫出一個好的程式來控制它的。



上面這個 Viedo Format 對話視窗是使用 capDlgVideoFormat(hwndVideo) 這個函式開啟的, 由視訊裝置的硬體商所提供的, 當你灌好驅動程式時, 就可以用 capDlgVideoFormat 這個指令將其呼叫出來, 請同學自己寫程式試試看, 看看自己的 WebCam 提供了哪些視訊格式。

視窗的左邊是選擇 解析度, 也就是攝影機取像的畫面的大小; 中間的 圖素深度(位元)及壓縮 可以選擇用不同的格式來傳送每一個圖素 (pixel) 的色彩值, 及需不需要壓縮; 最右邊的大小(位元組) 會依照前面兩項的選擇, 自動計算出所需要的緩衝記憶體的大小。因此, 解析度越高, 最右邊的位元組大小當然也會跟著提高。

另外, 不同的圖像深度所需要的記憶體大小也會跟著不同。同學可以參考下列網頁, 以便了解不同的格式之間的差異為何。
 
1. http://www.fourcc.org/yuv.php

2. Wikipedia: YUV

今天課堂上第二個討論主軸是介紹去年修課同學的期末作品 Cam Game Show 2008 

( Note )
本週作業, 請同學將自己的期末作業的初步構想貼到 Homework Show of VCGC 部落格中。
 

星期二, 4月 28, 2009

Week 11: 期中考試第三階段

本週進行期中考第三階段: 程式實測。

同學必須完成所有範例程式的執行。

星期五, 4月 24, 2009

News: 福山與台北植物園 已建置二維條碼導覽

〔中央社記者楊淑閔台北24日電〕原始新聞連結

農委會林業試驗所今天表示,「農業數位生態館計畫」已在所方所轄的台北植物園及福山植物園內完成數位化建置,提供民眾透過二維條碼解碼設備查詢相關解說資訊的服務。

林業試驗所指出,「農業數位生態館」是行政院農業委員會為創新農業數位內容價值,改善傳統文字解說牌無法詳述動植物特性,以及內容無法快速更新等缺點,藉由行動設備傳輸二維條碼技術,讓使用者可即時線上透過行動設備搜尋,讀取豐富植物解說與導覽資訊的服務。

林試所表示,依「農業數位生態館計畫」,已在所方所轄的台北植物園及福山植物園內完成數位化建置。

林試所並說,今年完成新增二維條碼的福山植物園,擁有豐富的植物與動物資源,不但可以欣賞原生植物之美,還有機會看到山羌、野豬、鴛鴦等野生動物,是台灣生態的寶庫,遊客可在此園經驗到與一般植物園或森林遊樂區完全不同的生態景致。

林試所補充,所方所轄的山仔頂植物園、埤子頭植物園、四湖海岸植物園、恆春熱帶植物園及扇平森林生態科學園等,也將陸續完成二維條碼解說牌建置。

星期二, 4月 14, 2009

Week 9: 期中考第二階段

本週進行期中考第二階段: 口試。

缺席名單:
94363063 林郁勛
95360361 葉 廷
96363043 楊倍權
 

星期四, 4月 09, 2009

Week 8: 期中考第一階段

本週進行期中考第一階段之筆試。

缺考同學名單如下:

94360912 林崇基 (已補交)
94363063 林郁勛
95360104 欒如雲
95360361 葉 廷
95361090 吳坤璋 (已補交)
96363043 楊倍權

請缺考同學於 4/13 以前補交。
 

星期二, 4月 07, 2009

Note: 期中考的進行方式

幾經思考, 本學期的期中考, 我決定分成三階段, 分別在第 8, 9, 11 週進行。

第一階段: 以筆試的方式進行, 請同學參考課程部落格, 針對 Week 1 ~ 7 的課程內容, 逐週寫下自己已經掌握哪些技術, 哪些技術則尚未弄懂。

第二階段: 以口試的方式進行, 針對同學所寫下的學習狀態進行個別討論, 找出自己的學習問題。

第三階段: 檢驗程式實作, 同學必須完成範例程式的實作。

這樣做的目的是希望幫助同學面對、了解自己的學習狀況, 希望可以透過期中考試, 協助同學:
 1. 完全理解授課內容,
 2. 充分掌握視訊擷取技術,
 3. 擁有 WebCam Programming 的實作能力。
 

星期四, 4月 02, 2009

Note: 本課程之期中考試

課程公告:
 本課程期中考試將於 Week 8 之課堂上以口試的方式進行, 考試內容將以本課程所教授之 WebCam Programming 之所有內容, 包括:

 a. 基本 C++ Builder 之基本觀念。

 b. WebCam Programming 之基本觀念與指令。

 c. 本課程在課堂上所進行之四個實驗:

  1. 靜態影像擷取之實驗

  2. Callback Function 之實驗: 在 Label 顯示擷取之 frame 總數。

  3. 直接從記憶體擷取視訊畫面。

  4. 將監視畫面與背景圖片相減所得到之差異影像隨時顯示出來。

 d. 八個範例程式中所有指令之用法。

  1. SampleProgram1.txt
  2. SampleProgram2.txt
  3. SampleProgram3.txt
  4. SampleProgram4.txt
  5. SampleProgram5.txt
  6. SampleProgram6.txt
  7. SampleProgram7.txt
  8. SampleProgram8.txt
  
  
  

Week 7: 如何從記憶體直接擷取視訊畫面?

本週要進行的討論主題是 - 如何從記憶體直接擷取視訊畫面?

我們所設定的實驗是: 透過使用 callback function 的方式, 將所擷取到的畫面顯示到另一個影像元件之中。



首先, 我們先在 MainMenu 這個元件中建立一個視訊擷取視窗 Callback function 的控制開關, 透過這個 on/off , 我們可以隨時開啟或關閉是否要對擷取視窗的畫面進行處理。

SampleProgram6.txt

透過 capSetCallbackOnFrame 這個函式設定: 當視訊擷取視窗(代碼為 hwndViedo) 取得一個 frame 後, 必須執行我們所定義的 callback function: FrameCallBack,

capSetCallbackOnFrame(hwndVideo, &FrameCallBack);

LRESULT CALLBACK FrameCallBack( HWND hwndCapture, PVIDEOHDR lpvhdr );

在我們所自行定義的 FrameCallBack callback function 中, 有兩個輸入參數, 第一個參數 HWND hwndCapture, 指明哪一個視訊擷取視窗, 即該視訊擷取視窗的 handle, 第二個參數 PVIDEOHDR lpvhdr, capSetCallbackOnFrame 這個函式會自動把視訊擷取視窗的相關資訊透過 PVIDEOHDR lpvhdr 這個結構變數, 讓 FrameCallBack callback function 來使用。

有關 PVIEDOHDR 這個結構的相關資訊, 可以在 vfw.h 中, 找到如下的結構定義:

/* video data block header */
typedef struct videohdr_tag {
LPBYTE lpData;      /* pointer to locked data buffer */
DWORD dwBufferLength;   /* Length of data buffer */
DWORD dwBytesUsed;   /* Bytes actually used */
DWORD dwTimeCaptured;  /* Milliseconds from start of stream */
DWORD_PTR dwUser;   /* for client's use */
DWORD dwFlags;      /* assorted flags (see defines) */
DWORD_PTR dwReserved[4];   /* reserved for driver */
} VIDEOHDR, NEAR *PVIDEOHDR, FAR * LPVIDEOHDR;

透過 結構 videohdr_tag 的宣告, 我們獲知擷取視窗的 data buffer 的指標可以用 lpData 這個變數來取得, 即

CaptureData = LPVIDEOHDR(lpvhdr);
ptrCapture = CaptureData->lpData;

// 全域變數宣告
LPVIDEOHDR CaptureData;
BYTE *ptrCapture, *ptrImage;

說明:
1. CaptureData 是全域結構變數, 其資料型態亦為 PVIDEOHDR。
2. *ptrCapture 與 *ptrImage 是兩個指向記憶體位址的全域指標變數。

本週的第一個實驗要做的事, 說穿了就是把某一塊記憶體(視訊擷取視窗資料暫時存放區/data buffer)複製到另一塊記憶體(影像物件存放色彩資料的記憶體)之中。因此, 我們只要弄清楚兩個記憶體的起始位址, 自然可以輕鬆完成實驗。


 
SampleProgram7.txt
 
第二個實驗則是需要針對監視畫面內容稍做計算, 畫面的下角是背景圖, 監視畫面與背景圖相減所得到的差異影像, 則會被放到右下角的圖片中。





SampleProgram8.txt
 

星期二, 3月 24, 2009

Voting Report: 關於課程進度的速度

你覺得目前課程進度進行的速度如何?

 太慢   3 票 ( 14 % )
 適中  17 票 ( 80 % )
 太快   1 票 ( 4 % )

 總投票數: 21 票
 投票日期: 2009/03/17 ~ 24
 

Week 6: Callback Function

本週課程的討論主題是關於視訊擷取視窗的 Callback Function。在課堂上, 我們要求同學必須完成如下實驗:

實驗二: 當程式開啟視訊擷取視窗後, 顯示預覽的畫面總數到 Label 上。


// 副程式的宣告部分, 請將此行放到全域變數宣告的區域中

LRESULT CALLBACK FrameCallBack( HWND hwndCapture, PVIDEOHDR lpvhdr );
int iFrameCount=0;

// 設定 Callback function 與 視訊擷取視窗之間的連結, 請將此行放到開啟視訊擷取視窗, 並開始 preview 的指令後

capSetCallbackOnFrame(hwndCapture, &FrameCallBack);

// Callback Function 的主體程式 (我們要程式自動執行的程式)

LRESULT CALLBACK FrameCallBack( HWND hwndCapture, PVIDEOHDR lpvhdr )
{
 iFrameCount++;
 Form1->lblLabel1->Caption = AnsiString(iFrameCount);
 return (0);
}
 

星期一, 3月 16, 2009

Week 5: 將影像讀入陣列之中

本週要請同學思考的問題是如何將存於影像物件之中的色彩值, 讀入到陣列變數之中, 以供程式處理之用。

目前, 大部分同學已經會從顯示在螢幕上的視訊, 擷取一個畫面到影像物件之中, 為了提升對影像內容的分析效能, 有必要進一步影像元件中的色彩內容放到陣列中, 讓程式可以直接分析。

第一個方法是使用 Canvas 元件的 Pixels Property (TCanvas::Pixels), Pixels 的資料型態為 TColor datatype, 因此, 可以用如下的程式碼, 將色彩值讀入到陣列 tcColorMatrix 之中。

 for (i=0;i<iImageHeight;i++)
  for (j=0;j<iImageWidth;j++) 
   tcColorMatrix1[i][j] = Image1->Canvas->Pixels[j][i];
 
第二個方法是透過 Bitmap 元件的 ScanLine Property 來取得存放每一列色彩值的起始指標, 再透過該指標依序取得每一個像素的色彩值。

 Byte *ptr; // 宣告指標變數;

 for (i=0;i<iImageHeight;i++)
  {
  ptr = (BYTE *) Image1->Picture->Bitmap->ScanLine[i];
  k = 0;
  for (j=0;j<iImageWidth;j++)
   { 
   tcColorMatrix1[i][j] = (TColor) RGB(ptr[k+2],ptr[k+1],ptr[k]);
   k = k + 3;
   }
 
接下來, 同學可以將之前所寫的程式, 改寫成使用 Scanline Property 的方式, 以加快程式的執行效能。
範例程式 SampleProgram5.txt
 

星期四, 3月 12, 2009

News: 3D 棒球卡 球員栩栩如生

中時電子報 2009/03/11 諶悠文 綜合報導
原始新聞報導

一九五○年代,首屈一指的 Topps 公司賣出許多印有棒球員照片和各項比賽紀錄的棒球卡,為球賽增添生氣,如今它更打算推出 3D Live 立體棒球球員卡,要為棒球卡增添生命力。

《紐約時報》報導,九日開始,球卡收藏者只要拿著一張 Topps 3D Live 棒球卡,放在網路攝影機鏡頭前,就會在電腦螢幕上看到出現一個球員的三度空間影像。

在鏡頭前,卡友旋轉手中的球卡,螢幕上的人物也會跟著全方位旋轉。業者運用的是一種將實際與虛擬影像結合的「擴增實境」(augmented reality)互動技術。

科幻影集《星艦迷航記》有一句經典台詞:「傳送我吧,史考特!」(Beam me up, Scotty)。Topps公司主管數位科技的葛林姆斯說:「這就是『傳送我吧,史考特』版本的棒球卡,將會吸引小孩搶購。」現在棒球卡收藏者多半是男孩。

以前大家迷棒球明星,會瘋狂收藏棒球球員套卡,棒球卡風靡一時,如今收藏家可不花大錢輕鬆地從網路搜尋到各種運動相關資料,棒球卡也不再吃香。

根據「職棒大聯盟所有權」公司提供資料,曾高達十億美元的各類運動卡市場,現在每年銷售額萎縮到只剩兩億美元。二○○七年,前迪士尼公司執行長艾斯納旗下的兩家公司 Tornante 及 Madison Dearborn Partners,用三八五○萬美元收購 Topps,並構思讓運動卡與網路時代結合。

Topps 需要推陳出新,「擴增實境」技術便是其法寶之一。透過法國公司「Total Immersion」開發的「擴增實境」技術 ,擁有 3D Live 卡的卡友不只可從電腦看到球員的 3D 影像,還可利用電腦鍵盤,玩基本的傳接和打擊棒球的遊戲。這項技術已經運用在主題公園,以及一部分的汽車設計作業。

艾斯納表示,預計今年 Topps 將出貨一千萬盒的「Series 1」 (十二張卡售價兩美元),以及 Topps Attax 卡 (五張售價一美元)。他認為 Topps 做的不是運動卡買賣,而是一個具有文化、圖騰意義的體制,與迪士尼公司沒有什麼不同,它帶給民眾一種美好的情緒反應,那是普魯斯特式的感受。
 

 

星期三, 3月 11, 2009

星期二, 3月 10, 2009

Week 4: 取得視訊裝置驅動程式的資訊與效能

1. WebCam Programming

 a. 取得視訊裝置驅動程式的資訊

 b. 取得視訊裝置驅動程式的效能

2. 範例程式 SampleProgram2.txt 說明:

 a. 取得裝置內容代碼 GetDC

 在我們所設計的靜態影像擷取之實驗中, 我們在範例程式 SampleProgram2.txt 使用了以下的 GetDC 指令,

  hDC = GetDC(pnlCapture->Handle);

  這行指令的目的就是取得 顯示裝置內容 (display device context) 的代碼, 由於我們範例程式 SampleProgram1.txt 是將視訊顯示在 pnlCapture 物件中, 我們使用 GetDC 指令來獲知這個顯示裝置的代碼, 因此 pnlCapture->Handle 為 GetDC 函式的輸入參數。

3. 如何計算兩個色彩 TColor type 變數之間的差異?

  假設, 我們宣告了兩個變數, 如下:

  TColor tcColor1, tcColor2;
 
  我們該如何計算 tcColor1 與 tcColor2 之間的距離呢?

  TColor 資料型態為長度 4 個位元組的 enum (列舉) 資料型態, 除了最高位元組保留沒用之外, 接著由高至低依序為藍、綠、紅的色彩值。使用 GetBValue, GetGValue, GetRValue, 三個函數, 分別可以取出藍、綠、紅的色彩值。

  假設 tcColor1 = 0x00ff0000;
  ucB1 = GetBValue(tcColor1);
  那麼 ucB1 的值就是 0xff = 255;

  如果我們將一個色彩值視為一個 (R, G, B) 的三維向量, 那每一個色彩值就是三度空間中的一個點, 要計算兩個色彩值之間的差異, 就可以計算這兩個色彩值在三度色彩空間中的距離, 換句話說, 就是計算空間中兩點的直線距離, 也就是 歐基里德距離 ( Euclidean Distance )。  

  範例程式 SampleProgram3.txt
 

星期二, 3月 03, 2009

Week 3: 靜態影像擷取

1. 靜態影像擷取之簡單實驗

如果我們希望所開發的應用程式有能力可以理解視訊內容, 首先必須要先將視訊內容(一張一張的靜態影像)儲存到電腦的記憶體中(程式所宣告的陣列變數), 然後我們才可以開始分析視訊內容。因此, 我們設計以下的實驗, 希望同學可以完成。

實驗目的: 希望同學可以感受到當物件出現在畫面中時, 如何寫一個簡單的程式來感應此事件的發生!

 a. 在程式畫面中拉出兩個按鈕 A、B。
   按鈕 A 的功能是儲存視訊的靜態影像到影像陣列 A 中。
   按鈕 B 的功能是儲存視訊的靜態影像到影像陣列 B 中。

 b. 在程式畫面中拉出第三個按鈕 C, 功能是計算兩個陣列的平均差異值。

 實驗一: 攝影機拍攝內容不變, 連續拍攝 A 與 B, 計算其平均差異。

 實驗二: 先按 A 用攝影機拍攝一張照片儲存到陣列 A 後, 然後放置一物體到攝影機前, 再按 B 取得影像陣列 B 內容, 最後計算兩個陣列的平均差異。

範例程式下載 : SampleProgram2.txt

2. C++ Programming

 a. TColor 資料型態

 b. TCanvas

 c. 動態宣告二維陣列

 d. TCanvas::CopyRect method

 e. VFW: 靜態影像擷取

3. WebCam: Driver 下載
 網路硬碟 http://webhd.mcu.edu.tw
 分享名稱: CAM2008
 

星期日, 3月 01, 2009

bnext: Panasonic 網路攝影機 零距離監控管理

數位時代網站 Market 市場情報 2009/02/23
原始報導連結


邁入 2009 年,您還在煩惱如何提升管理績效、或是經常擔心家裡不夠安全嗎?

Panasonic 全新推出的網路攝影機,讓您在任何時間地點,都可透過網路攝影機對辦公室或家中進行遠端監控,輕鬆掌握一切狀況。

降低成本,提升效率,讓您擁有無限商機
藉由 Panasonic 網路攝影機獨一無二的遠端監視及控制功能,您能隨時掌握公司狀況,利用「雙向語音溝通」馬上就能解決即時問題,多台攝影機可同時監看多家分店,讓您用最少的人管理最多的店,錄影畫面還可用來分析來客數及了解顧客反應,以提升服務的品質,Panasonic 網路攝影機讓您在 2009 年贏得更漂亮!

居家安全不容萬一,您有權選擇真正的安全
有了 Panasonic 網路攝影機,您外出時一樣好安心,經由手機可監看屋內的任何角落,內建 LED 亮燈加強照明,即使角落不夠明亮,也能傳回清晰的影像,若畫面突然有所變動時,會即時回傳警報畫面,讓您不需無時無刻盯著螢幕看,不同於昂貴的保全系統,Panasonic 網路攝影機提供了一個經濟又安全的全面保障。

產品資訊請洽:台松電器(02)2227-6100
http://www.panasonic.com.tw
 

星期一, 2月 23, 2009

Week 2: WebCab Programming

1. Problem Solving

 同學們在用 C++ Builder 寫網路攝影機的控制程式時, 不管在研讀函式的說明, 或是在編譯所寫的程式, 一定會遭遇到許多問題。要解決自己問題的第一步就是可以正確、完整地描述自己的問題, 這樣子, 別人才有機會弄懂你的問題, 再給予協助。這是在尋求解答的過程中, 我覺得最重要的一個步驟。因此, 在本課程中, 遭遇有關 WebCam Programming 的相關問題時, 我希望同學可以將問題寫在 Homework Show of VCGC 之中, 讓所有的人一起來解決你的問題。

 目標設定: 在 Week 7 將所有 WebCam Programming 之技術學習完成。

2. WebCam Programming:
 
 a. 如何建立一個視訊擷取視窗( capCreateCaptureWindow )

 b. 連接視訊擷取視窗與視訊裝置 ( capDriverConnect )

 c. 設定顯示模式 (capPreview)
 
 範例程式下載 : SampleProgram1.txt


3. 電腦互動技術實驗課程設計與教學手冊
  下載電子檔
 

星期二, 2月 17, 2009

Week 1: 從應用開始談...

1. Applications of WebCam Programming
 a. QR Code

不知道大家有沒有發現, 最近全國加油站所印的發票, 右下角開始出現一個奇怪的方塊, 這個方塊就是所謂的 QR Code , 發票上註明本區測試中, 將來會推出什麼樣的服務, 我們可以拭目以待。

另外, 台新銀行最近也寄來一份 Oil Coupon, 憑此卷加滿 500 元可以折抵 50 元, 但比較可惜的是不能和其他優惠合併使用, 因此對我產生的吸引力並不大就是了 ...



有趣的是這張折抵卷背後也印有一個 QR Code,



因此, 2/13 這一天我特地前往全國加油站加油, 並使用了一張折抵卷。

全國加油站的收銀機電腦旁有加裝了一台 WebCam, 對準 QR Code 拍攝後, 電腦螢幕就自動出現一項 50 元優惠的選項, 列印出來的發票果然就折抵了 50 元, 相當於 9 折的優惠。

 b. 甲蟲王者恐龍王

我們常常在百貨公司或是大賣場的玩具部門看到一群小朋友在玩這兩款卡片遊戲。遊戲每次 30 元, 玩家會隨機拿到一張不同性質的甲蟲卡片、絕招卡片等等, 玩家如果收集到夠多不同的卡片, 就可以在遊戲中隨心所欲的派出不同甲蟲, 使用不同的絕招來加入遊戲之中, 增加遊戲的精彩度。

機器是透過卡片兩邊的一維條碼來辨識不同的卡片, 因此如果不想花大錢收集卡片的玩家, 去買比較便宜的仿冒卡, 一樣可以玩得很高興。



 c. TAITO: King of Jurassic



這是另一家公司的卡片遊戲 King of Jurassic, 比較特殊的是卡片角落的彩色二維條碼, 條碼上可能的顏色有紅、綠、藍、黑等四色, 透過攝影機辨識這些不同色彩的小方塊, 就可以分辨不同的卡片, 進行遊戲。

2. News: 你看廣告 廣告看你

這則廣告最主要的關鍵是透過攝影機可以辨別廣告觀眾的類別, 再撥出迎和該類觀眾的廣告, 用以提升廣告的效果。

目前關於人臉辨識的研究, 應用非常廣泛, 同學們比較有接觸到的是數位相機中的人臉自動判別, 用以調整自動對焦的參數。幾個月前曾經接到同事寄來的數位相機廣告, 令人印象深刻。







3. 互動式街頭廣告 New Interactive Window



4. Lee's C++ Builder Programming Notes

 這門課的最主要目標是希望培養同學使用 C++ Builder 整合開發環境, 撰寫攝影機控制程式, 最後, 透過互動視訊遊戲成果展來呈現同學所擁有的能力。

 有些同學之前沒有修過多媒體相關課程, 完全沒有使用 C++ Builder 的經驗, 我們希望這些同學在下週上課前, 至少可以寫一個簡單的程式, 上面只有一個按鈕, 一按就會在新視窗秀出訊息。這個入門程式, 我相信班上有許多修過多媒體相關課程的同學應該都會寫, 請不會的同學盡量在下週上課前去請教會的同學, 趕緊跟上來。
 

Semacode





麥田中的 Semacode : Hello, world!

http://hello.w0r1d.net/
 

QR-Code

星期三, 2月 04, 2009

News: 你看廣告 廣告看你

原始新聞連結
中廣新聞網 2009/02/04

很多人在街頭看廣告牌時,可能不知道,這個廣告牌也正在看你。

美聯社說,隨著科技進步,一些廣告公司在巨型廣告上畫面,或者在廣告牌週邊,安裝小型監視器,瞭解看廣告人的性別,年齡跟族群,根據獲得的情報,立即更換廣告,迎合看廣告人的喜好。

例如,如果廣告監視器發現,看廣告的是一名男性,自動更新的電子廣告辦,可能會出現男人刮鬍刀;如果看廣告的是女人,廣告可能變成化妝品廣告。

美聯社說,這種面孔觀察技術剛開始被使用,它判斷看廣告人的年齡,準確度在八成五到九成,今後越來越多商家會使用這種技術,隨時變更廣告內容,吸引民眾注意力。