0. 我噗浪的帳號: YKLee
如果期末 WebCam 程式寫不出來, 這邊可以找到我...
1. 如何去除監視畫面中的雜訊影響?
當我們建立好背景影像, 如果沒有物件闖入監視畫面中, 在最理想的狀況下, 監視畫面應該是全黑的才對。可是由於光線變化及雜訊的影響下, 總會有一些像素點與原來背景的色彩值差距過大, 因此產生上圖中的小白點。
我們該如何去除這些雜訊點的影響呢?
如果我們將畫面分成一個一個的 8*8 區塊, 在區塊中的亮點總數如果沒有超過一半(32), 那我們就將整個區塊設成全黑區塊, 從上圖的實驗我們可以發現, 右下角的圖片已經全黑了。
如果區塊中的亮點總數如果超過一半了, 那我們就將整個區塊設成全白區塊, 從上圖的實驗我們可以發現, 右下角的圖片只有手部的部分被設成全白區塊。
SampleProgram16.txt
2. 如何與畫面中的虛擬物件互動呢?
換句話說, 就是伸手將畫面中的 WebCam 拍掉!
SampleProgram17.txt
星期四, 5月 28, 2009
星期二, 5月 26, 2009
Week 15: 如何在視訊視窗添加圖片?
直接將視訊擷取視窗中, (20, 20) 至 (50, 50) 的方塊, 塗成綠色:
SampleProgram13.txt
讀入一張 BMP 影像, 並將其色彩值存到 ucMarkR[][], ucMarkG[][], ucMarkB[][] 之中:
SampleProgram14.txt
將 ucMarkR[][], ucMarkG[][], ucMarkB[][] 中的影像, 顯示在視訊擷取視窗中:
SampleProgram15.txt
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
假設在沒有雜訊的情況下,
第 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 分。
白: 與背景圖出現過大的色彩差距
黑: 與背景圖色彩相近
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
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 部落格中。
我們今天就是要針對這個問題討論, 希望同學可以了解不同的攝影機, 傳送視訊資料進電腦的方式也是可以不同的, 一個好的程式設計師應該有能力可以處理不同廠牌的 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 部落格中。
訂閱:
文章 (Atom)