一種圖像處理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計算機人機交互界面領(lǐng)域,具體涉及一種圖像處理方法。
【背景技術(shù)】
[0002] 在很多提取手勢中,一般不會考慮去除手腕部分,常常借用外部物體將手腕及胳 膊部分遮住,這樣就會只保留手勢。采用上述方法并沒有真正實現(xiàn)為使用者的服務(wù),而是讓 用戶適應(yīng)計算機,所以為了更好的實現(xiàn)"以人為中心"的原則,需要考慮露出手腕進行操作 的情形,因此除去手腕是必要的;同時,目前通過借用遮擋手腕及胳膊的方法并不能真正達 到只保留手勢的效果。
【發(fā)明內(nèi)容】
[0003] 本發(fā)明的目的在于解決上述現(xiàn)有技術(shù)中存在的難題,提供一種圖像處理方法,利 用攝像頭輸入用戶手勢圖像,去除手腕而只保留手勢。
[0004] 本發(fā)明是通過以下技術(shù)方案實現(xiàn)的:
[0005] -種圖像處理方法,包括:
[0006] (1)利用攝像頭輸入用戶手勢圖像,設(shè)定窗口尺寸,將臉部框出來并保存臉框的信 息,即臉框的左上角的位置、高和寬;
[0007] (2)根據(jù)步驟⑴保存的臉框的左上角的位置、高和寬,將窗口中的臉框位置的圖 像置成背景色;
[0008] (3)通過膚色模型判斷膚色點和非膚色點;
[0009] (4)根據(jù)所述臉框在窗口中的信息,依次掃描窗口,分別找出臉框的像素點對應(yīng)的 小窗口;
[0010] (5)對小窗口進行去噪,消除非膚色的影響;
[0011] (6)獲取所述小窗口的質(zhì)心;
[0012] (7)根據(jù)質(zhì)心和小窗口的信息,得到這個小窗口的正方小窗口的半邊長;
[0013] (8)再次縮小小窗口:根據(jù)步驟(7)得到的正方小窗口的半邊長,獲得新的正方小 窗口;
[0014] (9)根據(jù)正方小窗口的信息,依次掃描正方小窗口,分別找出膚色像素點對應(yīng)的小 窗口;
[0015] (10)執(zhí)行去胳膊操作,只保留手勢。
[0016] 所述步驟(3)是這樣實現(xiàn)的:
[0017] 所述膚色模型為:
[0018] r>95&&g>40&&b>20&&abs(r-g)>15&&r>g&&r>b
[0019] 如果滿足膚色模型,則該像素點是膚色點,否則為非膚色點,將窗口中的非膚色的 2*2的小塊置成背景色。
[0020] 所述步驟(5)包括:
[0021] (51)獲得圖像的首地址和圖像的高度、寬度及每行字節(jié)數(shù);
[0022] (52)為防越界,不處理最左邊、最右邊、最上邊和最下邊四邊的像素,從第2彳丁第2 列開始,遍歷圖像的像素點;
[0023] (53)求出像素點的b、g、r分量,判斷像素點是背景色還是分割的手勢顏色,如果 是手勢顏色,則計算該像素點的上、下、左、右、左上、左下、右上、右下八個方向的像素點對 應(yīng)的b、g、r分量;
[0024] (54)判斷八個鄰域中,如果有points個點是白點,則認為此點是噪聲點,并將該 點置為背景色;
[0025] (55)循環(huán)步驟(53)~(54),直到處理完原圖的全部像素點。
[0026] 所述步驟(6)是這樣實現(xiàn)的:
[0027] (61)根據(jù)幀指針和小窗口的高和寬,得到當前小塊對應(yīng)的R G B值;
[0028](62)如果當前小塊的RGB滿足膚色模型,則執(zhí)行步驟(63),否則執(zhí)行步驟(61);
[0029] (63)計算滿足膚色模型小塊的坐標值的累加;
[0030] (64)當小窗口中的小塊都掃描完一遍,將累加值求平均得到滿足膚色模型小塊的 坐標值的均值,即質(zhì)心。
[0031] 所述步驟(7)是這樣實現(xiàn)的:
[0032] (71)按從上到下,從左到右的順序掃描小窗口像素值,如果當前掃描列對應(yīng)的行 的非背景點的個數(shù)大于一個閾值,則結(jié)束并記下當前的列坐標,否則繼續(xù)掃描下一列;
[0033] (72)按從下到上,從左到右的順序依次掃描小窗口像素值,如果當前掃描列對應(yīng) 的行的非背景的個數(shù)大于一個閾值,則結(jié)束并記下當前的列坐標,否則繼續(xù)掃描下一列;
[0034] (73)按從左到右,從上到下的順序依次掃描小窗口的像素值,如果當前掃描行對 應(yīng)的列的非背景點的個數(shù)大于一個閾值,則結(jié)束并記下當前的行坐標,否則繼續(xù)掃描下一 行;
[0035] (74)在當前指針對應(yīng)的窗口中,按照從右到左,從上到下的順序依次掃描該窗口 的像素值,如果當前掃描行對應(yīng)的列的非背景點的個數(shù)大于一個閾值,則結(jié)束并記下當前 的行坐標,否則繼續(xù)掃描下一行;
[0036] (75)分別計算質(zhì)心到(71)、(72)、(73)、(74)得到的坐標信息的距離;
[0037] (76)將(75)得到的四個距離中的最大的一個距離作為生成下一個小窗口的半邊 長,即正方小窗口的半邊長。
[0038] 所述步驟(8)是這樣實現(xiàn)的:
[0039] (81)獲取當前小窗口的一行字節(jié)數(shù)及即將提取出的正方小窗口的一行字節(jié)數(shù);
[0040] (82)根據(jù)所要提取出的正方小窗口左上角的位置信息,依次獲取這個正方小窗口 的信息。
[0041] 所述步驟(10)是這樣實現(xiàn)的:
[0042] (101)獲取當前幀窗口所對應(yīng)的質(zhì)心;
[0043] (102)從左到右,從上到下依次掃描每一個小塊,其中行從左到右掃描到當前窗口 對應(yīng)的寬度Width/4,獲取當前小塊及下一列相鄰小塊的像素值,如果相鄰下一個像素值是 背景,則進行下一行的掃描,否則將非背景像素點的個數(shù)累加;
[0044] (103)如果(102)得到的累加像素點個數(shù)是非零,則獲取手與窗口左邊界的交點;
[0045] (104)從右到左,從上到下依次掃描每一個小塊,其中行從右到左掃描到 Width-(Width/4),獲取當前小塊及下一列相鄰小塊的像素值,如果相鄰下一個像素值是背 景,則進行下一行的掃描,否則將非背景像素點的個數(shù)累加;
[0046] (105)如果(104)得到的累加像素點個數(shù)是非零,則獲取手與窗口右邊界的交點;
[0047] (106)從下到上,從左到右依次掃描每一個小塊,其中列從當前窗口對應(yīng)的高度 Height-(Height/4)到上掃描,獲取當前小塊及下一行相鄰小塊的像素值,如果相鄰下一個 像素值是背景,則進行下一列的掃描,否則將非背景像素點的個數(shù)累加;
[0048] (107)如果(106)得到的累加像素點個數(shù)是非零,則獲取手與窗口下邊界的交點;
[0049] (108)根據(jù)窗口與左、右、下邊界像素點所占的百分比,占最大比例的那邊即胳膊 所在的邊;
[0050] (109)獲取質(zhì)心和胳膊所在邊的連線,求出其方向向量;
[0051] (110)從質(zhì)心到胳膊所在的邊的連線中,找到手腕的位置,將非手的部分置成背景 色。
[0052] 所述步驟(110)中找到手腕的位置是這樣實現(xiàn)的:
[0053] 在從質(zhì)心到胳膊所在的邊的連線t = t/5. 0處即手腕的位置。
[0054] 與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明較好的保留了手勢,去除了手腕, 為后面的獲取手勢軌跡及手勢識別作準備。
【附圖說明】
[0055] 圖1本發(fā)明方法的步驟框圖。
【具體實施方式】
[0056] 下面結(jié)合附圖對本發(fā)明作進一步詳細描述:
[0057] 本方法在框臉的基礎(chǔ)上進行的添加,具體流程圖如圖1所示:
[0058] 首先假設(shè)大框(指圖像)是:400*30,400*300是做的一個假設(shè),也可以做其他大 小的假設(shè),該發(fā)明對其他大框都是適用的。
[0059] 具體實現(xiàn)步驟:
[0060] (1)首先,實現(xiàn)框臉功能并保存臉位置的信息,即框的左上角的位置、高和寬;
[0061] (2)根據(jù)步驟⑴框信息(指框的左上角的位置、高和寬),將400*300窗口(Back_ ne W(Back_new是定義指向圖像的指針,其設(shè)置圖像的大小是400*300))中的框位置(是指 步驟(1)得到的框)的圖像置成背景色即黑色;
[0062] (3)將400*300窗口中的非膚色(通過膚色模型來進行判斷的,如果(r>95&&g> 40&&b>20&&abs (r-g) >15&&r>g&&r>b)條件成立,則該像素點是膚色點,否則認為是非膚色 點)的2*2的小塊置成背景色即黑色
[0063] (4)在400*300中根據(jù)⑴中獲取的臉的高和寬來提取出相應(yīng)的小窗口 pBGR_ Buffer (根據(jù)框臉在大窗口中的信息如高、寬、左上角信息,依次掃描400*300的窗口,分別 找出框臉的像素點對應(yīng)的小窗口)
[0064] (5)對小窗口進行去噪,消除非膚色的影響
[0065]具體步驟為:
[0066] (51)獲得圖像的首地址和圖像的高度、寬度及每行字節(jié)數(shù);
[0067] (52)為防越界,不處理最左邊、最右邊、最上邊和最下邊四邊的像素,從第2行第2 列開始,遍歷圖像的像素點;
[0068] (53)求出像素點的b、g、r分量,判斷像素點是背景色還是分割的手勢顏色,如果 是手勢顏色,則計算該像素點的上、下、左、右、左上、左下、右上、右下八個方向的像素點對 應(yīng)的b、g、