一種攝像頭條件下獲取遠程手勢軌跡的方法
【技術領域】
[0001] 本發明屬于計算機人機交互界面領域,具體涉及一種攝像頭條件下獲取遠程手勢 軌跡的方法。
【背景技術】
[0002] 在像平面上,每幀手勢有一個重心位置,當手運動時,各幀手勢重心位置形成一個 軌跡,該軌跡就是手勢軌跡。目前獲取手勢軌跡主要方法是采用卡爾曼濾波器或粒子濾波 器等跟蹤器跟蹤每幀手勢重心位置,進而得到手勢軌跡。該方法存在的主要問題是:它們需 要逐幀處理,所以速度慢,延遲嚴重,影響手勢軌跡的實用性。因此,人手在運動過程中,連 續的手勢質心點形成手勢運動軌跡曲線。現有算法主要是利用跟蹤器逐幀跟蹤手勢質心得 到手勢運動軌跡,算法速度慢,時間延遲。
【發明內容】
[0003] 本發明的目的在于解決上述現有技術中存在的難題,提供一種攝像頭條件下獲取 遠程手勢軌跡的方法,利用攝像頭捕獲人手運動圖像,獲得平滑的手勢運動軌跡曲線。
[0004] 本發明是通過以下技術方案實現的:
[0005] 一種攝像頭條件下獲取遠程手勢軌跡的方法,包括:
[0006] (1).通過攝像頭獲得n幀bmp圖像,以及圖像的寬度、高度、存放數據的指針;
[0007] (2).依次對n幀圖像進行處理,獲得手勢圖像的質心坐標;
[0008] (3).輸出步驟⑵得到的n幀手勢圖像的n幀質心坐標,然后將n幀質心坐標經 過三次B樣條擬合得到三次B樣條擬合函數;
[0009] (5).通過三次B樣條擬合函數,畫出n幀圖像的軌跡曲線。
[0010] 所述步驟(2)是這樣實現的:
[0011] (21)獲得圖像的歷史幀數n、n幀圖像序列的首地址、圖像的寬度和高度;
[0012] (22)對圖像進行處理,將手勢圖像從背景圖像中分割出來;
[0013] (23)對分割出的手勢圖像去噪處理;
[0014] (24)對手勢圖像進行腐蝕、膨脹形態學處理;
[0015] (25)獲得手勢圖像的質心坐標并將質心坐標存放在數組CentroidCurve[n];
[0016] (26)循環步驟(22)-(26),直到處理完n幀圖像序列;
[0017] (27)返回n幀圖像的手勢軌跡坐標CentroidCurve []。
[0018] 所述步驟(22)是這樣實現的:
[0019] (A1)、獲得圖像的首地址和圖像的高度、寬度及每行字節數;
[0020] (A2)、遍歷圖像上每個像素點,求出像素點的b、g、r分量;
[0021] (A3)、根據手勢的膚色模型,判斷圖像中每個像素的r、g、b分量,若滿足r>95&&g > 40&&b > 20&&abs(r-g) > 15&&r > g&&r > b條件,則判斷為膚色,將像素點置為手勢顏 色,否則判斷為非膚色,將像素點置為背景色;
[0022] (A4)循環步驟(A2)到(A3),直到處理完圖像的全部像素點。
[0023] 所述步驟(23)采用8鄰域去噪處理方法實現去噪處理。
[0024] 所述步驟(23)是這樣實現的:
[0025] (B1)獲得圖像的首地址和圖像的高度、寬度及每行字節數;
[0026] (B2)為防越界,不處理最左邊、最右邊、最上邊和最下邊四邊的像素,從第2彳丁第2 列開始,遍歷圖像的像素點;
[0027] (B3)求出像素點的b、g、r分量,判斷像素點是背景色還是分割的手勢顏色,如果 是手勢顏色,則計算該像素點的上、下、左、右、左上、左下、右上、右下八個方向的像素點對 應的b、g、r分量;
[0028] (B4)判斷八個鄰域中,如果有大于或等于4個點是白點,則認為此點是噪聲點,并 將該點置為背景色;
[0029] (B5)循環步驟(B3)~(B4),直到處理完原圖的全部像素點。
[0030] 所述步驟(24)中的腐蝕處理如下:
[0031] (C1)獲得圖像的首地址和圖像的高度、寬度及每行字節數;
[0032] (C2)開辟一塊內存緩沖區;
[0033] (C3)定義一個一維數組B[9]:
[0034] B[9] = {1,0,1,
[0035] 0,0,0,
[0036] 1,0,1}
[0037] (C4)為防越界,不處理最左邊、最右邊、最上邊和最下邊四邊的像素,從第2彳丁第2 列開始,將指向的目標圖像的像素的值賦值給目標點像素點,檢查這個像素點,利用結構元 素數組判斷該像素點的前一點、后一點、上一點、下一點這四點中是否有背景點,有則將檢 查的像素點的灰度值賦值為255,否則保持不變;
[0038] (C5)循環步驟(C4),直到處理完原圖的全部像素點;
[0039] (C6)將結果暫存在內存緩沖區中;
[0040] (C7)將結果從內存復制到原圖的數據區。
[0041] 所述步驟(24)中的膨脹處理是這樣實現的:
[0042]01)獲得圖像的首地址和圖像的高度、寬度及每行字節數;
[0043]02)開辟一塊內存緩沖區;
[0044] (D3)定義一個一維數組:
[0045] B[9] = {1,0,1,
[0046] 0,0,0,
[0047] 1,0,1}
[0048] (D4)為防越界,不處理最左邊、最右邊、最上邊和最下邊四邊的像素,從第2彳丁第2 列開始,將指向的目標圖像的像素的值賦值給目標點像素點,檢查這個像素點,利用結構元 素數組判斷該像素點的前一點、后一點、上一點、下一點這四點中是否有相交點,有則將檢 查的像素點的灰度值賦值為〇,否則保持不變;
[0049] (D5)循環步驟(D4),直到處理完原圖的全部像素點;
[0050] (D6)將結果暫存在內存緩沖區中;
[0051] (D7)將結果從內存復制到原圖的數據區。
[0052] 所述步驟(25)中獲得手勢圖像的質心坐標是這樣實現的:
[0053] (E1)獲得圖像的首地址和圖像的高度、寬度及每行字節數;
[0054] (E2)遍歷圖像,求得所有手勢點的x、y值之和并分別統計手勢點的個數;
[0055] (E3)將手勢點x、y值的和,除以手勢點個數得到質心坐標。
[0056] 與現有技術相比,本發明的有益效果是:現有技術主要利用跟蹤器逐幀跟蹤手勢 質心,根據手勢質心序列形成手勢軌跡。本發明在獲得手勢質心序列的基礎上利用三次B 樣條對手勢質心序列進行擬合,得到平滑的手勢運動軌跡。
【附圖說明】
[0057] 圖1本發明方法的步驟框圖。
【具體實施方式】
[0058] 下面結合附圖對本發明作進一步詳細描述:
[0059] 如圖1所示,本發明方法包括:
[0060] 1.通過攝像頭獲得n幀bmp圖像,及圖像的寬度、高度、存放數據的指針。
[0061] 2.對n幀圖像依次進行如下處理:
[0062] {
[0063] (1)利用膚色模型(即 r > 95&&g > 40&&b > 20&&abs(r-g) > 15&&r > g&&r > b),提取手勢圖像(某像素點滿足膚色模型,則認為是手勢,否則認為是背景),二值化處 理,即將膚色像素點置成一種顏色(如紅色),背景像素點置成另一種顏色(如白色),顏色 改變是通過像素點對應的r、g和b分量來進行設置的;
[0064] (2)對提取出的手勢圖像(手勢圖像是指從背景提取出的手勢,手勢區域置成紅 色,背景區域置成白色)進行8鄰域去噪處理得到去噪處理后的手勢圖像。
[0065] (3)對所述去噪處理后的手勢圖像進行腐蝕、膨脹形態學處理。
[