星期二, 4月 19, 2011

Week 10: 如何消除雜訊的干擾?

 

1. Difference 黑白影像中所有的白點都是實質上所出現的物件嗎?
  a. 如果不是, 哪些是雜訊呢?
  b. 如何消除雜訊的干擾?

延續 Week 7 的討論, 我們想要忽略小白雜訊點的干擾, 只對進入畫面的大型物件互動, 最簡單的方式就是降低畫面的解析度, 那這些小雜訊點就會 "看不到" 了。

將視訊監控畫面以 8*8 大小的區塊為單位, 當區塊中的白點總數超過一半 (>31) 時, 整個區塊都輸出成白色區塊, 如下圖。

  

從 另外一種角度思考, 其實就是把整個畫面縮小成 40*30 的大小來監控, 這樣那些小雜訊就縮小到完全沒有影響了, 如下圖。

   

範例程式: W10-SP

2. 什麼是 Callback Function ?

 2.1 函數的呼叫 (call) 與 結束 (return)

 在程式的執行過程中, 當主程式呼叫一個函數 (call function) 時, 程式會跳到函數繼續執行, 當遇到 return 指令時, 就會返回主程式的呼叫點繼續執行。

 2.2 Callback Function = Call + Back + Function

 當我們執行某個應用程式時, 針對 Form 上各個物件所發生的事件, 嚴格來說可以分成兩類:

 a. 由使用者觸發, 如使用者透過滑鼠或鍵盤所觸發的事件。

  這類事件, 在 object-oriented 程式語言中, 是用 event-driven 的設計, 使用者針對個別物件, 撰寫不同事件處理程序來因應。

 b. 非由使用者觸發, 乃系統自行發生的事件。

  如程式發生錯誤情況, 或系統做了特定事件, 如從視訊裝置擷取一個畫面。此類事件, 使用者就可以設定 callback function 來因應這些事件的發生。

3. 預覽回呼函數 preview callback function 

  當視訊擷取驅動程式接收到來自視訊裝置的畫面(frame), 在 preview 模式之下, 將此畫面顯示所連結的視訊視窗之中。

 我們可以透過 capSetCallbackOnFrame 這個函數來指定當發生 frame preview 之前, 先執行一個特定的 callback function, 即預覽回呼函數。這個預覽回呼函數的名稱可以由我們自由命名, 但是傳入的參數個數與其資料型態則必須符合 VFW 的規定。

沒有留言: