星期二, 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