基于單目手勢(shì)識(shí)別交互系統(tǒng) 畢業(yè)論文_第1頁(yè)
基于單目手勢(shì)識(shí)別交互系統(tǒng) 畢業(yè)論文_第2頁(yè)
基于單目手勢(shì)識(shí)別交互系統(tǒng) 畢業(yè)論文_第3頁(yè)
基于單目手勢(shì)識(shí)別交互系統(tǒng) 畢業(yè)論文_第4頁(yè)
基于單目手勢(shì)識(shí)別交互系統(tǒng) 畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、本科畢業(yè)設(shè)計(jì)(論文) 基于單目手勢(shì)識(shí)別交互系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)學(xué) 院 機(jī)電工程學(xué)院 專 業(yè) 數(shù)字媒體技術(shù) 基于單目手勢(shì)識(shí)別交互系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 李林鋼 機(jī)電工程學(xué)院摘 要隨著計(jì)算機(jī)技術(shù)的逐漸發(fā)展,出現(xiàn)了一些符合人的習(xí)慣的人機(jī)交互技術(shù)。其中,手勢(shì)的檢測(cè)和識(shí)別技術(shù)作為一種有著自然性、簡(jiǎn)潔性和直接性的一種新型的交互方式,是這些交互技術(shù)當(dāng)中倍受重視的研究和應(yīng)用的技術(shù)之一。近幾年來(lái),已經(jīng)有相當(dāng)一部分的應(yīng)用采用了這種手勢(shì)識(shí)別的方式作為跟機(jī)器交互的手段,受到了世界各個(gè)國(guó)家的科研機(jī)構(gòu)和科技企業(yè)的重視與青睞。基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別需要解決一系列的問(wèn)題。首先是要做到的是從背景中將手分割出來(lái);然后將有用的信息與冗余的

2、信息分離開(kāi)來(lái),并將相關(guān)的手勢(shì)信息提取出來(lái);最后從相同的手勢(shì)中根據(jù)實(shí)際情況,解讀出它的特定的含義。針對(duì)這些問(wèn)題,本文討論里一種采用基于單目的特定顏色模型的背景分離方法和基于關(guān)鍵信息的手勢(shì)提取方法,用visual c+ 2010和opencv進(jìn)行開(kāi)發(fā),實(shí)現(xiàn)在多種攝像頭下的手勢(shì)識(shí)別交互系統(tǒng),主要包括以下方面:(1)針對(duì)不同攝像頭畫(huà)質(zhì)的缺陷,采用中值濾波或均值濾波然后還原細(xì)節(jié)的方法實(shí)現(xiàn)圖像較好的降噪,再用不同采樣半徑的usm銳化的方式實(shí)現(xiàn)圖像信息的強(qiáng)化。(2)根據(jù)人手和背景色相等方面的差異,采用亮度+兩個(gè)顏色通道的色彩模型進(jìn)行色彩分離,并將未選擇到的陰影和高光等區(qū)域利用連續(xù)色的原理進(jìn)行進(jìn)一步的選取。(

3、3)根據(jù)選取結(jié)果有很多干擾區(qū)域的情況,實(shí)現(xiàn)最大面積連通區(qū)域的提取算法,以排除關(guān)鍵信息提取時(shí)的干擾。(4)根據(jù)手的區(qū)域的情況和交互的自然性,采用穩(wěn)定的手的重心作為手的位置,利用近大遠(yuǎn)小的關(guān)系,采用手占攝像頭面積的大小判斷手離攝像頭的距離。(5)針對(duì)以上識(shí)別的結(jié)果,實(shí)現(xiàn)了一些常見(jiàn)的人機(jī)交互應(yīng)用,包括屏幕畫(huà)圖器、鼠標(biāo)模擬器等。關(guān)鍵詞:手勢(shì)識(shí)別;visual c+;背景消除;連通區(qū)域;關(guān)鍵信息提取abstractwith the development of computer technology, some human-computer interaction techniques which me

4、et peoples habits appear. among them, gesture detection and recognition technology, as a new natural, simple and direct technology, is highly valued. in recent years, there have been considerable part of the application using this gesture recognition approach as a means of an interaction with the ma

5、chine, and it draws attention of and was favored by the scientific research and technology enterprises of various countries.computer vision-based gesture recognition needs to solve a series of problems. the first is is how to split the hand from the background; then separate the useful information a

6、nd redundant one, and extract the relevant information gesture; finally, decipher the specific meaning of the same gesture in accordance with the actual situation. to solve these problems, this paper discusses a gesture recognition interactive system with a kind of background separation methods base

7、d on specific color model, and a kind of gesture extraction method on key information, developed by visual c + + 2010 and opencv, fits a variety of camera, which includes the following aspects:(1) for different quality defects among cameras, this system uses median filter or mean filter and restores

8、 the detail method to reduce the image noise conservatively. then use different sampling radius of usm sharpening to enhance the image information.(2) according to the difference of colors between background and hands, this system uses the brightness and the two color channels as a color model for c

9、olor separation. the not chosen distinct, such as the shadow and highlight areas will be further selected using a continuous color method.(3) according to the results there are a lot of interfering regions of selected areas. the system achieves the maximum connected area region extraction algorithm,

10、 which excludes the interference of the key information extraction.(4) according to the hand region of the case and for the naturalist interactive, the system uses the stable point - gravity center of the hand as the hand position, and uses the size of the hand to know the distance from the area wit

11、h the near-far smaller principle.(5) according to the results above, the system achieves some common interactive applications, including screen drawing control, mouse simulator, etc.key words: gesture recognition; visual c+; background removal; connected region; key information extraction目 錄1 緒論11.1

12、 手勢(shì)識(shí)別交互的背景11.2 手勢(shì)及識(shí)別方式的分類21.3 基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別技術(shù)需要解決的問(wèn)題21.4 本程序主要實(shí)現(xiàn)的功能32 攝像頭信息的采集和預(yù)處理52.1 opencv關(guān)于攝像頭操作的api52.2 在控件中呈現(xiàn)有關(guān)攝像頭的圖像62.2.1 hdc的獲取62.2.2 將iplimage*位圖渲染到控件當(dāng)中62.3 攝像頭圖像的預(yù)處理72.3.1 圖片的縮放72.3.2 圖片的降噪82.3.3 圖片的銳化113 手的區(qū)域的提取133.1 膚色種子的獲取133.1.1 獲取鼠標(biāo)相對(duì)圖像位置的顏色133.1.2 自定義膚色種子143.2 基于手與背景在一定顏色模型上的區(qū)別的初步提取1

13、43.3 將手的范圍擴(kuò)展到其他區(qū)域153.4 外部孤立點(diǎn)的消去163.4.1 獲取連通區(qū)域的面積和標(biāo)記區(qū)域id183.4.2 最大面積和對(duì)應(yīng)區(qū)域的獲取193.5 內(nèi)部孤立點(diǎn)的修補(bǔ)194 手的關(guān)鍵點(diǎn)的提取214.1 手的重心和面積的確定214.2 手的邊緣的提取215 程序主體代碼的實(shí)現(xiàn)235.1 工程的環(huán)境和架構(gòu)235.2 主類成員變量的定義245.3 程序的初始化代碼245.4 從輸入控件中獲得識(shí)別參數(shù)265.5 總體識(shí)別語(yǔ)句的實(shí)現(xiàn)286 應(yīng)用設(shè)計(jì)306.1 屏幕畫(huà)圖的設(shè)計(jì)306.1.1 獲取cwindowdc306.1.2 定義和設(shè)置筆刷306.1.3 繪圖語(yǔ)句306.2 模擬鼠標(biāo)功能的實(shí)

14、現(xiàn)316.2.1 手的有效偏移量的獲取326.2.2 鼠標(biāo)點(diǎn)擊功能的實(shí)現(xiàn)327 手勢(shì)識(shí)別的綜合測(cè)試34結(jié)論36總結(jié)36展望與改進(jìn)36參考文獻(xiàn)38致謝391 緒論1.1 手勢(shì)識(shí)別交互的背景隨著整個(gè)社會(huì)逐步的信息化,帶給了我們一種新的交互方式人機(jī)交互(human-computer interaction)。而這一交互活動(dòng)越來(lái)越成為人們?nèi)粘I畹囊粋€(gè)重要內(nèi)容。近幾年來(lái),隨著計(jì)算機(jī)技術(shù)的逐漸發(fā)展,出現(xiàn)了一些符合人的習(xí)慣的人機(jī)交互技術(shù),如頭部跟蹤、人臉識(shí)別、表情識(shí)別、唇讀、體勢(shì)識(shí)別以及手勢(shì)識(shí)別等等1,并逐步向以人為本的方向邁進(jìn)。其中,手勢(shì)的檢測(cè)和識(shí)別技術(shù)作為一種新型的方式,是這些交互技術(shù)當(dāng)中倍受重視的研

15、究和應(yīng)用的技術(shù)之一。手勢(shì)是一種有著自然性、簡(jiǎn)潔性和直接性的一種人機(jī)交互手段。1如果能只用人手作為計(jì)算機(jī)的輸入設(shè)備,那么我們就無(wú)需學(xué)習(xí)其他繁重的硬件設(shè)備的操作,僅需根據(jù)人們的習(xí)慣,確定一些適當(dāng)?shù)氖謩?shì),即可用簡(jiǎn)單的方式控制機(jī)器。而手勢(shì)是人的一種很常用的交流方式。像人可以用手指的方向來(lái)表示物體的位置,用揮手來(lái)表示過(guò)來(lái)或再見(jiàn),用一定的手勢(shì)表示數(shù)字等等2。近幾年來(lái),已經(jīng)有相當(dāng)一部分的應(yīng)用采用了這種手勢(shì)識(shí)別的方式作為跟機(jī)器交互的手段。受到了世界各個(gè)國(guó)家的科研機(jī)構(gòu)和科技企業(yè)的重視與青睞,如ieee自1995年起召開(kāi)的人臉與姿勢(shì)自動(dòng)檢測(cè)年會(huì)fg(ieee conference on automatic fac

16、e and gesture recognition)以促進(jìn)包括手勢(shì)檢測(cè)識(shí)別技術(shù)在內(nèi)的技術(shù)交流與發(fā)展。2圖1.1 手勢(shì)識(shí)別應(yīng)用1.2 手勢(shì)及識(shí)別方式的分類手勢(shì)(gesture)本身具有多義性和多樣性,由于領(lǐng)域、文化背景等的不同,對(duì)手勢(shì)的定義也會(huì)不同。這里把手勢(shì)定義為:手勢(shì)是人手產(chǎn)生的各種姿勢(shì)和動(dòng)作,手勢(shì)和姿勢(shì)(posture)的主要區(qū)別在于姿勢(shì)更為強(qiáng)調(diào)身體的總體形態(tài)而手勢(shì)更強(qiáng)調(diào)手的細(xì)節(jié)。1手勢(shì)按時(shí)間關(guān)系可分為靜態(tài)手勢(shì)(指姿態(tài),又稱手形)和動(dòng)態(tài)手勢(shì)(指動(dòng)作,由一系列姿態(tài)組成)。靜態(tài)手勢(shì)對(duì)應(yīng)時(shí)間上的一個(gè)點(diǎn),而動(dòng)態(tài)手勢(shì)對(duì)應(yīng)著一段時(shí)間內(nèi)的一條軌跡,需要使用隨時(shí)間變化的空間特征來(lái)表述3。動(dòng)態(tài)手勢(shì)具有豐富和

17、直觀的表達(dá)能力,與靜態(tài)手勢(shì)結(jié)合在一起,能創(chuàng)造出更豐富的語(yǔ)義。按手勢(shì)目的又可以分為操控手勢(shì)和交際手勢(shì)10。在人機(jī)交互系統(tǒng)中,操控手勢(shì)的一種典型應(yīng)用就是在二維和三維的虛擬環(huán)境中來(lái)操控物體。交流手勢(shì)主要是指在自然環(huán)境中伴隨人們自然對(duì)話的自由形式手勢(shì)。手勢(shì)相對(duì)于語(yǔ)言來(lái)說(shuō)是一種表達(dá)人們想法的單獨(dú)的補(bǔ)充模式。在對(duì)話中與手勢(shì)相關(guān)聯(lián)的信息是一種語(yǔ)句的時(shí)間和空間結(jié)構(gòu),可以用機(jī)器來(lái)提取它們11。手勢(shì)的識(shí)別方式可分為利用機(jī)械裝置的識(shí)別和基于計(jì)算機(jī)視覺(jué)的識(shí)別。機(jī)械裝置,如數(shù)據(jù)手套是虛擬現(xiàn)實(shí)中重要組成部分,可以將手指的復(fù)雜的三維位置和動(dòng)作利用附著的感應(yīng)器傳到到計(jì)算機(jī)當(dāng)中去。然后可以重新呈現(xiàn)手部動(dòng)作。數(shù)據(jù)手套傳感的識(shí)別方

18、法的技術(shù)關(guān)鍵是手套能不能將手指、手掌、手腕的彎曲真實(shí)的以數(shù)據(jù)形勢(shì)反演到系統(tǒng)數(shù)據(jù)庫(kù)中,讓系統(tǒng)根據(jù)模型對(duì)手勢(shì)進(jìn)行有效識(shí)別。由于手部軟組織和計(jì)算復(fù)雜性,數(shù)據(jù)手套的計(jì)算速度總是存在延時(shí),同時(shí)從人機(jī)交互的角度手套佩戴也十分不方便。如果多人使用還存在衛(wèi)生等問(wèn)題4,再加上這些傳感器昂貴的價(jià)格,因此數(shù)據(jù)手套等機(jī)械識(shí)別的方式在推廣上會(huì)受到很多的障礙。近些年來(lái),基于計(jì)算機(jī)視覺(jué)的識(shí)別方法提供了一種成本較低的能減少用戶限制的手勢(shì)識(shí)別的方法,這種方法也是本系統(tǒng)的主攻方向。在基于計(jì)算機(jī)視覺(jué)的識(shí)別方式中,通常的做法就是把手勢(shì)識(shí)別問(wèn)題看成模式識(shí)別問(wèn)題來(lái)對(duì)待。通過(guò)攝像頭等設(shè)備來(lái)獲取圖像或視頻,再把它們分解成特征集,然后用這些特

19、征集與預(yù)先定義好的模式進(jìn)行匹配。1.3 基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別技術(shù)需要解決的問(wèn)題無(wú)論是利用數(shù)據(jù)手套還是用手部粘貼高亮標(biāo)簽使作為輸入設(shè)備會(huì)給使用者帶來(lái)不舒適感如出汗等,且設(shè)備價(jià)格昂貴,難以推廣。在上述研究的基礎(chǔ)上,研究者漸漸把研究的重心轉(zhuǎn)移到的不佩戴手套或不粘貼設(shè)備的自然手識(shí)別檢測(cè)技術(shù)之上,以追求使用者更舒適的體驗(yàn),其中從計(jì)算機(jī)視覺(jué)的研究方式入手是當(dāng)前比較主流的研究方向,然而實(shí)現(xiàn)起來(lái)難度更大。首先是要做到的是從背景中將手分割出來(lái),通常會(huì)用膚色分割的方法基于皮膚的色調(diào)將不同于周圍背景手的區(qū)域分離出來(lái)但是會(huì)受到光線等因素干擾,分離出手后需要用合適的模型對(duì)手的動(dòng)作建模。之后從模型中估算出參數(shù),根據(jù)估

20、算出的參數(shù)對(duì)手勢(shì)進(jìn)行分類,得出結(jié)論。由于在數(shù)據(jù)采集時(shí)容易受到背景干擾,往往要求背景顏色和手的顏色有較好的區(qū)分度。4其次人體由多個(gè)部分組成,其中手指往往包含豐富的信息,而頭和手臂所以及人手本身因光滑而產(chǎn)生的大量陰影等信息則大多為冗余信息,故如何將有用的信息與冗余的信息分離也是提高手勢(shì)識(shí)別能力的關(guān)鍵。再次,人手是彈性物體,同樣的手勢(shì)的表現(xiàn)效果可能差別很大5,并且同樣的用戶者要重復(fù)做出完全相同的手勢(shì)也是不可能的,如何降低甚至消除這個(gè)因素的影響對(duì)整個(gè)識(shí)別的準(zhǔn)確率也有一定影響。最后,手勢(shì)往往具有復(fù)雜、多重的含義,單一的方法很難準(zhǔn)確地解讀人手的具體內(nèi)涵進(jìn)而實(shí)現(xiàn)最終的識(shí)別,故需要綜合多種方法。6針對(duì)上面提到

21、的多種難題,不同的研究和開(kāi)發(fā)人員提出了許多種不一樣的方案。綜合以上,本文將提出一種能適應(yīng)各種攝像頭的,能抵抗一定干擾信息的一種基于計(jì)算機(jī)視覺(jué)的進(jìn)行手勢(shì)識(shí)別解決方案。1.4 本程序主要實(shí)現(xiàn)的功能(1)實(shí)現(xiàn)對(duì)攝像頭的發(fā)現(xiàn)和選取,與對(duì)每一幀圖像的采集和縮放。(2)實(shí)現(xiàn)對(duì)圖像的清晰化,包括點(diǎn)狀噪聲的去除、細(xì)節(jié)的還原以及之后整體的銳化。(3)實(shí)現(xiàn)對(duì)背景信息的剔除,包括對(duì)膚色的提取和分割,對(duì)陰影和高光區(qū)域的擴(kuò)散和對(duì)一些孤立點(diǎn)的剔除。(4)實(shí)現(xiàn)關(guān)鍵信息,如手的重心、手的遠(yuǎn)近(手的面積)等的確定。(5)利用以上關(guān)鍵信息,實(shí)現(xiàn)一些應(yīng)用。為了保證軟件的實(shí)時(shí)性,同時(shí)便于以上功能的實(shí)現(xiàn),開(kāi)發(fā)工具選用visual c+

22、 2010,第三方類庫(kù)采用opencv2.0來(lái)完成這項(xiàng)工程。2 攝像頭信息的采集和預(yù)處理2.1 opencv關(guān)于攝像頭操作的api要進(jìn)行手勢(shì)信息的獲取,首先需要擁有一定的硬件,如數(shù)據(jù)手套、攝像頭等。對(duì)于軟件方面則要安裝相應(yīng)的驅(qū)動(dòng)程序和了解它們的api。幸好opencv提供了一系列通用而且簡(jiǎn)潔的外部接口以便于實(shí)現(xiàn)以上的工作,對(duì)攝像頭操作代碼流程如圖2.1所示:m_video=cvcreatecameracapture(i);/獲取第i個(gè)攝像頭信息給視頻指針cvcapture *m_video;/定義視頻指針m_video;/視頻指?針?m_video=cvcreatecameracapture(

23、-1);/獲取任一個(gè)攝像頭信息給視頻指針提示錯(cuò)誤并退出程序m_video!=null/是否找到攝像頭iplimage* m_captured=cvqueryframe(m_video);/獲取當(dāng)前攝像頭圖片,不能用cvreleaseimage手動(dòng)釋放圖片內(nèi)存。進(jìn)行關(guān)于m_captured和它以前的副本的圖像處理和應(yīng)用用戶手動(dòng)退出?cvreleasecapture(&(dlg.m_video);/釋放視頻指針結(jié)束 延遲一定的時(shí)間hijian 開(kāi)始hi= 否是否是圖2.1 攝像頭啟動(dòng)和釋放的代碼流程在實(shí)際的應(yīng)用當(dāng)中,當(dāng)用戶擁有多個(gè)攝像頭時(shí),cvcreatecameracapture方法的參數(shù)應(yīng)該取

24、零或正整數(shù),來(lái)選擇不同編號(hào)的攝像頭。當(dāng)找不到該攝像頭時(shí),可以自動(dòng)選擇成默認(rèn)的攝像頭,一般來(lái)說(shuō)是第0號(hào)攝像頭,仍未找到才進(jìn)行錯(cuò)誤退出。2.2 在控件中呈現(xiàn)有關(guān)攝像頭的圖像為了便于觀察,需要將攝像頭的源數(shù)據(jù)或數(shù)據(jù)的處理情況呈現(xiàn)到控件中,而mfc類庫(kù)和opencv共同提供了這些方法。2.2.1 hdc的獲取mfc的cdc(設(shè)備上下文)和它對(duì)應(yīng)的句柄hdc提供了一系列有關(guān)畫(huà)圖的方法,對(duì)于一個(gè)有一定id(如idc_static1)的控件來(lái)說(shuō),獲取的方法如下:cwnd *pwnd = getdlgitem(idc_static1);cdc *pdc =pwnd-getdc();hdc hdc= pdc-g

25、etsafehdc();if (hdc=null)messagebox(無(wú)法獲取hdc!);return true;這里將id為idc_static1的控件通過(guò)pwnd獲取控件本身的窗口信息,然后通過(guò)這個(gè)pwnd來(lái)獲得有關(guān)設(shè)備的上下文cdc和hdc,獲取不到則出現(xiàn)錯(cuò)誤對(duì)話框并退出。如果已經(jīng)設(shè)置了控件的control類型的變量(如m_s1),則cdc和hdc可以通過(guò)這個(gè)變量直接獲?。篶dc *pdc =m_s1.getdc();hdc hdc= pdc-getsafehdc();2.2.2 將iplimage*位圖渲染到控件當(dāng)中opencv的iplimage*類型的圖片渲染到控件的hdc前需要得

26、到它的頭部信息,這需要開(kāi)辟一段內(nèi)存并將它的結(jié)構(gòu)體提取出來(lái),然后分別賦值:static uchar buffersizeof(bitmapinfoheader) + 1024; bitmapinfo* bmi = (bitmapinfo*)buffer;bitmapinfoheader* bmih = &(bmi-bmiheader);memset( bmih, 0, sizeof(*bmih); bmih-bisize = sizeof(bitmapinfoheader); bmih-biwidth = image-width; bmih-biheight = image-origin ? a

27、bs(image-height) : -abs(image-height); bmih-biplanes = 1; bmih-bibitcount = (unsigned short)(image-depth & 255)*image-nchannels); bmih-bicompression = bi_rgb;其中image變量是iplimage*的實(shí)例。之后調(diào)用mfc的setdibitstodevice方法,參數(shù)為(hdc, 0, 0, image-width, image-height, 0, 0, 0, image-height, image-imagedata ,bmi, dib_

28、rgb_colors),即可將opencv的iplimage*畫(huà)入到hdc為hdc的控件中。但其后不能執(zhí)行pdc-invalidate()操作,否則原先畫(huà)的結(jié)果會(huì)被清空。2.3 攝像頭圖像的預(yù)處理由于攝像頭的圖像尺寸千變?nèi)f化,不一定能滿足手的關(guān)鍵點(diǎn)位置的精準(zhǔn)度或者圖片太大造成延遲和卡頓,而且可能包含了大量的阻礙識(shí)別的信息(如點(diǎn)狀噪聲等),因而需要一些預(yù)處理工作。2.3.1 圖片的縮放圖片需要縮放到一個(gè)合理的大小,如320x240,為了加強(qiáng)精確度有條件的可以加到640x480。opencv提供了一個(gè)函數(shù)cvresize可以實(shí)現(xiàn)這個(gè)功能。如原iplimage*圖片是m_captured,目標(biāo)圖片是

29、m_frame,則函數(shù)可寫(xiě)成:cvresize(m_captured,m_frame,(m_captured-width)(m_frame-width)?cv_inter_linear:cv_inter_area);當(dāng)原圖片比目標(biāo)圖片小時(shí)應(yīng)使用雙線性或雙三次插值的放大算法,來(lái)使得手的運(yùn)動(dòng)軌跡連續(xù)變化,反之,則采用平均值的縮小算法,來(lái)減少波紋和邊緣的不連續(xù)現(xiàn)象。2.3.2 圖片的降噪噪聲可以理解為“妨礙人和傳感器對(duì)所接收的信源信息理解的因素”。而圖像中各種妨礙信息接受的因素即可稱為圖像噪聲。噪聲被定義為“不可預(yù)測(cè)而只能用概率統(tǒng)計(jì)的方法,來(lái)認(rèn)識(shí)的隨機(jī)誤差”。圖片噪聲按產(chǎn)生的原因可分為外部噪聲和內(nèi)部

30、噪聲。外部噪聲是指由于系統(tǒng)外部干擾以電磁波或由電源串進(jìn)系統(tǒng)內(nèi)部而引起的噪聲。如電氣設(shè)備,天體放電現(xiàn)象等引起的噪聲,而這種噪聲可能就是高斯噪聲、脈沖噪聲等多個(gè)噪聲合成累計(jì)的。內(nèi)部噪聲主要是由光和電的基本性質(zhì)所引起的噪聲。如電流的產(chǎn)生是由空穴或電子的集合,定向運(yùn)動(dòng)所形成的,而這些粒子運(yùn)動(dòng)的帶有隨機(jī)性,產(chǎn)生了散粒噪聲;而導(dǎo)體中也有自由電子,它們會(huì)進(jìn)行無(wú)規(guī)則熱運(yùn)動(dòng),形成熱噪聲。為了消除這些隨機(jī)因素,可以通過(guò)中值濾波或均值濾波的方法法進(jìn)行濾波。對(duì)應(yīng)的opencv函數(shù)是:void cvsmooth( const cvarr* src, cvarr* dst,int smoothtype=cv_gaussi

31、an,int param1=3, int param2=0, double param3=0 ,double param4=0)。其中smoothtype 是cv_gaussian時(shí)將對(duì)圖像進(jìn)行大小為 param1param2 的高斯卷積的均值濾波。而 smoothtype 是cv_median時(shí)將對(duì)圖像進(jìn)行大小為param1param1 的中值濾波,注意為param1奇數(shù),且不大于7,其效果結(jié)果如下圖所示:(a)原圖 (b) cv_gaussian (c) cv_median圖2.2 cvsmooth的不同smoothtype的比較可以看出,中值濾波對(duì)邊緣的保留效果較強(qiáng),但實(shí)際執(zhí)行的速度較慢

32、。不過(guò)這些降噪變換都會(huì)導(dǎo)致有效細(xì)節(jié)的丟失。為此可以將圖片用按一定閾值還原,這分為兩種方法還原與原圖像相差小的部分和與還原原圖像相差大的部分,為了保持還原后的連續(xù)性,可以設(shè)置成不在符合閾值內(nèi)的圖像的保留度再按跟還原原圖像相差值線性變化,其效果如圖2.3至圖2-6所示:圖2.3 中值濾波后的圖形圖2.4 原圖圖2.5 低閾值保留后的圖形圖2.5 高閾值保留后的圖形從上圖可以看出,還原與原圖像相差小的部分可以消除一些突兀的部分,可稱為椒鹽噪聲,使得圖像看起來(lái)比較柔和,但形體內(nèi)部的與原圖像相差小斑紋仍然存在;而還與原原圖像相差大的部分則可以讓形體內(nèi)部的斑紋大大減弱或消失,使得圖像看起來(lái)比較平滑,但是突

33、兀的部分也因此更加明顯。因此,這兩種還原算法需要配合起來(lái)使用才能起到效果,以便于識(shí)別為目的,可以使用先還原相差小的部分,并用這個(gè)結(jié)果作為原圖,再還原相差大的部分。如圖所示,效果已經(jīng)綜合了上述兩種效果的優(yōu)點(diǎn)。圖2.6 原圖 圖2.7 雙重還原后的圖像2.3.3 圖片的銳化經(jīng)過(guò)圖片的降噪處理后會(huì)顯得比較朦朧,有時(shí)候需要進(jìn)行usm銳化方可實(shí)現(xiàn)更好的邊緣提取。為此可以先用cvsmooth,smoothtype選cv_gaussian進(jìn)行均值濾波到一個(gè)臨時(shí)圖像,然后按一定閾值將原圖像與臨時(shí)圖像的像素反差擴(kuò)大即可,反差擴(kuò)大的公式為:式中,x表示原圖像的亮度,表示臨時(shí)圖像的亮度,k表示銳化的強(qiáng)度(k1),x

34、表示目標(biāo)圖像的亮度。而通過(guò)原圖像與臨時(shí)圖像的色差的閾值的調(diào)整,可以減少一些不需要銳化的區(qū)域,但如上所述,會(huì)造成邊緣突兀和不連續(xù),為此也可以將位于原圖像與臨時(shí)圖像的亮度差在閾值內(nèi)部分的銳化強(qiáng)度,按這個(gè)亮度差線性減弱。如圖2.8所示:(a)銳化前 (b)銳化后圖2.8 銳化前后的圖像比較3 手的區(qū)域的提取基于計(jì)算機(jī)視覺(jué)的手勢(shì)識(shí)別的首要任務(wù)就是要將手和背景區(qū)分開(kāi),而背景環(huán)境往往會(huì)十分復(fù)雜,前面通過(guò)一系列的降噪和銳化實(shí)現(xiàn)了冗余信息的剔除和重要信息的強(qiáng)化,從而為之后的工作提供了便利。而這里將討論如何盡可能準(zhǔn)確地將手所在的區(qū)域從復(fù)雜的背景中提取出來(lái)。3.1 膚色種子的獲取如圖所示,隨著不同人之間的差異和光

35、線的變化,以及某些攝像頭的自動(dòng)對(duì)光功能,均會(huì)導(dǎo)致膚色出現(xiàn)變化,為此,很多時(shí)候需要以一種快捷的手段根據(jù)現(xiàn)場(chǎng)情況進(jìn)行調(diào)整。從上圖中還可以看出,手自身的顏色特別是亮度是有變化的,如果以手的平均顏色作為膚色的種子,將會(huì)導(dǎo)致可選擇的范圍的減少。因此這里采用了在圖上手的位置單擊某一點(diǎn),并獲得這一點(diǎn)的顏色,用試探法選擇到最合適的膚色作為手的顏色種子來(lái)跟背景區(qū)分開(kāi)來(lái);同時(shí)也提供了用自定義的顏色作為種子來(lái)靈活應(yīng)對(duì)。3.1.1 獲取鼠標(biāo)相對(duì)圖像位置的顏色要在單擊鼠標(biāo)時(shí)獲取鼠標(biāo)相對(duì)圖像位置的顏色,需要處理這個(gè)圖像所在控件的點(diǎn)擊事件。cstatic控件還需要首先將其notify屬性設(shè)置成true,以指定這個(gè)控件在單擊

36、和雙擊時(shí)對(duì)父級(jí)控件發(fā)出通知。要獲取鼠標(biāo)相對(duì)于圖像的坐標(biāo)可以通過(guò)先獲取鼠標(biāo)的屏幕坐標(biāo),再將該坐標(biāo)轉(zhuǎn)成相對(duì)于控件的坐標(biāo)來(lái)實(shí)現(xiàn),如下圖。cpoint point;/定義點(diǎn)getcursorpos(&point);/獲取鼠標(biāo)在屏幕上的坐標(biāo)getdlgitem(idc_static1)-screentoclient(&point);/獲取相對(duì)于控件上的坐標(biāo)圖3-1 獲取鼠標(biāo)相對(duì)于某個(gè)控件的坐標(biāo)要在單擊鼠標(biāo)時(shí)獲取鼠標(biāo)相對(duì)圖像位置的顏色,需要處理這個(gè)圖像所在控件的點(diǎn)擊事件。cstatic控件還需要首先將其notify屬性設(shè)置成true,以指定這個(gè)控件在單擊和雙擊時(shí)對(duì)父級(jí)控件發(fā)出通知。設(shè)m_frame為ipl

37、image*的圖片,src為它的imagedata的開(kāi)頭,則鼠標(biāo)在圖像的坐標(biāo)(x0,y0)上的像素指針為mbyte=src+x0*(m_frame-nchannels)+y0*(m_frame-widthstep);關(guān)于這一像素的colorref顏色:colour=(int)mbyte016|(int)mbyte1=0 & x0width | y0=0 & y0height)3.1.2 自定義膚色種子自定義種子顏色可以用ccolordialogwindows自帶的調(diào)色對(duì)話框來(lái)實(shí)現(xiàn),然后將其寫(xiě)入到控件中即可實(shí)現(xiàn),它的構(gòu)造方法是:ccolordialog dlg(colour0,cc_fullop

38、en);/參數(shù)為默認(rèn)顏色,打開(kāi)方式(這里是全打開(kāi))而通過(guò)dlg.getcolor()的方法可以返回調(diào)好的colorref顏色。3.2 基于手與背景在一定顏色模型上的區(qū)別的初步提取從上所述,膚色在顏色空間的分布相當(dāng)集中,但會(huì)受到光照強(qiáng)度和不同人之間的很大影響。為了減少膚色受照明強(qiáng)度影響,通常將顏色空間從rgb轉(zhuǎn)換到亮度與色度分離的某個(gè)顏色空間,比如yuv、lab或hsl,然后放棄亮度分量。在雙色差或色調(diào)飽和度平面上,不同人的膚色區(qū)別較小,膚色的不同更多在亮度上而不是色度上。7opencv中實(shí)現(xiàn)上述方法的函數(shù)為void cvcvtcolor( const cvarr* src, cvarr* ds

39、t, int code ),其中src輸入的是原圖像指針,而iplimage繼承了cvarr,有時(shí)需要將用整數(shù)信息存儲(chǔ)的圖片轉(zhuǎn)換為一定精度的浮點(diǎn)圖;dst輸入的是目標(biāo)圖像的指針;code是色彩空間轉(zhuǎn)換的模式,該code來(lái)實(shí)現(xiàn)不同類型的顏色空間轉(zhuǎn)換。比如當(dāng)code選用cv_bgr2hsv時(shí),對(duì)于8位圖,需要將rgb值歸一化到0-1之間。這樣得到hsv圖中的h取值范圍才是0,360),s和v的取值范圍是0-1。由于顏色模型的不同,轉(zhuǎn)換以后的對(duì)手的范圍的提取方法也有所不同。具體來(lái)講,如果用原始的rgb顏色模型的圖片來(lái)提取,那么可以用r、g、b三種通道各自與膚色種子的色差的最大值來(lái)判定圖像上的某點(diǎn)是否

40、在手上;如果用顏色模型為一個(gè)亮度通道+兩個(gè)顏色通道的圖片,則可以通過(guò)先遍歷整個(gè)圖像,把每一點(diǎn)的像素歸化到0,255的整數(shù)范圍中,再將兩個(gè)顏色通道移到統(tǒng)一的位置進(jìn)行統(tǒng)一的色差最大值判定,提取的效果如圖3.2所示。圖3.2初步提取輪廓3.3 將手的范圍擴(kuò)展到其他區(qū)域在復(fù)雜光線條件下,比如圖所示的膚色在高光區(qū)或陰影區(qū)中導(dǎo)致亮度存在不同,有些部分并沒(méi)有被選上;還有如圖所示的情況,由于手在不同位置的代謝情況的不同和指紋關(guān)系,導(dǎo)致顏色也存在著不同,從而有些另外的部分也沒(méi)有被選上。但是從圖中又可以看得出,這些區(qū)域與選取到的區(qū)域之間并不存在明顯的邊緣,因此可以通過(guò)一種多次迭代的方法,將這些區(qū)域周邊按一定的色差

41、閾值進(jìn)行擴(kuò)散,直到擴(kuò)散了0個(gè)像素為止。如圖3.3所示(a)擴(kuò)散前(b)擴(kuò)散后圖3.3 選取擴(kuò)散前后的對(duì)比3.4 外部孤立點(diǎn)的消去經(jīng)過(guò)如上圖所示的處理中,可以發(fā)現(xiàn)圖片中存在一些比較小的一些孤立的區(qū)域被選中了,如人的頭部,書(shū)架、椅子、窗簾等,它們的顏色與手的顏色相近,但是其共同點(diǎn)是都在在手的后面,而且所占的面積比手的要小。為此可以通過(guò)獲取最大的連通區(qū)域的方法來(lái)去掉一些不合理的選取,目標(biāo)效果如圖3.3 所示。(a)消去前(b)消去后圖3.3 外部孤立點(diǎn)的消去目標(biāo)獲取最大的連通區(qū)域包括三步:獲取連通區(qū)域的面積并在每個(gè)像素標(biāo)記區(qū)域的id找出面積的最大值和對(duì)應(yīng)的區(qū)域id將面積信息非最大的區(qū)域置為未選中???/p>

42、以通過(guò)遞歸的方法實(shí)現(xiàn)以上功能,但由于遞歸要調(diào)用windows系統(tǒng)的堆棧,而這個(gè)堆棧的大小不能超過(guò)2m,因此還需要將這個(gè)算法實(shí)現(xiàn)成非遞歸的。這里由于棧的大小不會(huì)超過(guò)整個(gè)圖片面積的整數(shù)倍,因而提供的??梢赃x擇一個(gè)中間的iplimage作為存儲(chǔ),這就要求這個(gè)iplimage的通道數(shù)足夠。為此可以選擇一個(gè)彩色的24位rgb圖作為棧來(lái)儲(chǔ)存當(dāng)前遍歷的位置信息。為此需要將位置的兩個(gè)值x和y的坐標(biāo)通過(guò)移位運(yùn)算的方式壓縮在24位長(zhǎng)的變量中。整理以上之后,算法可以分以下幾步完成。3.4.1 獲取連通區(qū)域的面積和標(biāo)記區(qū)域id當(dāng)一個(gè)點(diǎn)首次到達(dá)一個(gè)連通區(qū)域(未計(jì)算)時(shí),即開(kāi)始計(jì)算這個(gè)區(qū)域的面積,算完該面積后再進(jìn)去這個(gè)區(qū)

43、域(已計(jì)算)將不會(huì)再重新算。計(jì)算面積的步驟如下:進(jìn)入堆棧計(jì)算面積循環(huán),并將當(dāng)前坐標(biāo)壓入堆棧。面積計(jì)數(shù)加一堆棧彈出一格上下左右是否為被選中區(qū)域且未被計(jì)算讀取棧中坐標(biāo)被選中的相鄰節(jié)點(diǎn)分別壓入堆棧該坐標(biāo)置為已計(jì)算并標(biāo)記區(qū)域id棧是否為空返回面積計(jì)數(shù),結(jié)束是否否是圖3.4 外部孤立點(diǎn)的消去算法在數(shù)據(jù)的結(jié)構(gòu)上,將原圖像副本信息拷貝后,兩個(gè)臨時(shí)圖片memopic和temppic將分別儲(chǔ)存不同的中間信息。memopic的每個(gè)像素的24位整形中,前12位(unsigned char a,b)表示遍歷游標(biāo)的橫坐標(biāo)(int i),后12位(unsigned char b,c)表示遍歷游標(biāo)的縱坐標(biāo)(int j)。其

44、讀取和寫(xiě)入的方法如下:讀?。篿=(int)a4;j=(int)c&15)4&255); b=(uchar)(i&15)8&15);c=(uchar)(j&255);temppic的每個(gè)像素的24位整形中,儲(chǔ)存像素點(diǎn)遍歷的狀態(tài):0:原先未選??;1:原先已選取但未參與面積計(jì)算;1:原先已選取并已參與面積計(jì)算,表示區(qū)域的id(從2開(kāi)始)。3.4.2 最大面積和對(duì)應(yīng)區(qū)域的獲取最大面積的獲取的語(yǔ)句是if(countmaximagedata)+i*(temppic-nchannels)+ j*(temppic-widthstep)對(duì)應(yīng)的值是否跟countmaxid的后24位相等即可。3.5 內(nèi)部孤立點(diǎn)的修

45、補(bǔ)上面的的提取工作已經(jīng)比較理想了,但是手的內(nèi)部仍然存在著一些缺失的區(qū)域,這會(huì)對(duì)邊緣的檢測(cè)帶來(lái)不必要的麻煩。類似地也可以通過(guò)第3.4節(jié)建立堆棧的方法來(lái)實(shí)現(xiàn),但是要將選區(qū)做暫時(shí)的反轉(zhuǎn)操作,效果如圖3.4所示。圖3. 內(nèi)部孤立點(diǎn)的修補(bǔ)4 手的關(guān)鍵點(diǎn)的提取經(jīng)過(guò)以上的步驟,我們已經(jīng)獲得了手的像素信息。然而只通過(guò)像素信息來(lái)判斷手勢(shì)將導(dǎo)致判斷過(guò)于復(fù)雜,不利于應(yīng)用的實(shí)現(xiàn)。為此可以通過(guò)提取關(guān)鍵點(diǎn)的方式來(lái)給手勢(shì)識(shí)別應(yīng)用一些簡(jiǎn)明而穩(wěn)定的信息。4.1 手的重心和面積的確定手的重心可以通過(guò)選取圖片(如memopic)中手的區(qū)域的內(nèi)的x和y坐標(biāo)的平均值來(lái)實(shí)現(xiàn),而手的面積可以反映手離攝像頭的距離。如圖4.1所示:圖4.1

46、重心區(qū)域(手中央紅色區(qū)域)4.2 手的邊緣的提取手的邊緣可以通過(guò)像素與其旁邊相差的大小來(lái)確定,但為了保持邊緣的寬度在1像素內(nèi),僅需判斷這個(gè)像素點(diǎn)與其右方和下方的顏色是否相同即可,如圖4.2所示:圖4.2 邊緣提?。ㄊ种醒爰t色區(qū)域)5 程序主體代碼的實(shí)現(xiàn)5.1 工程的環(huán)境和架構(gòu)手勢(shì)識(shí)別系統(tǒng)gesturetest的開(kāi)發(fā)環(huán)境采用visual c+ 2010,項(xiàng)目類型采用了mfc基于對(duì)話框的應(yīng)用程序,第三方庫(kù)選用opencv作為識(shí)別的輔助工具。為此,必須先進(jìn)行工程環(huán)境的配置:(1)安裝opencv2.0,并在其安裝目錄下的include和lib下的所有文件復(fù)制到c:program filesmicro

47、soft visual studio 10.0vc下的同名目錄中。(2)打開(kāi)所建立的工程,選擇項(xiàng)目-gesturetest屬性,配置選“所有配置”,并在其下的配置屬性-鏈接器-輸入中輸入cxcore200d.lib;cv200d.lib;highgui200d.lib;%(additionaldependencies)(3)將opencv安裝目錄下的bin目錄里的cv200d.dll、cxcore200.dll、cxcore200d.dll和highgui200d.dll復(fù)制到項(xiàng)目生成的可執(zhí)行文件的相同目錄下。如果不能運(yùn)行,則復(fù)制該bin目錄里文件名不帶d結(jié)尾(不含擴(kuò)展名)的相應(yīng)文件,并將程序

48、旁dll文件的文件名后加上d即可。建立的項(xiàng)目主要包含以下文件:gesturetest.hgesturetestdlg.hresource.hstdafx.htargetver.hgesturetest.cppgesturetestdlg.cppstdafx.cpp其中的gesturetestdlg.cpp,即cgesturetestapp類在initinstance()方法的dlg.domodel后需要加上if(dlg.m_video!=null)cvreleasecapture(&(dlg.m_video);用來(lái)在程序結(jié)束后釋放視頻指針變量m_video,否則程序在關(guān)閉后無(wú)法徹底退出。主要的

49、實(shí)現(xiàn)方法將在cgesturetestdlg類中實(shí)現(xiàn)。5.2 主類成員變量的定義cvcapture * m_video;/視頻指針iplimage* m_captured;/視頻中的圖片iplimage* m_frame;/暫存圖片iplimage* m_grabframe;/預(yù)覽圖片iplimage* m_temp;/臨時(shí)圖片bool m_framecreated;/暫存圖片是否為手動(dòng)創(chuàng)建的int smoothmode;/平滑模式int centx;/手的重心橫坐標(biāo)int centy;/手的重心縱坐標(biāo)int zone;/手的面積/idc_static1(攝像頭的圖像所畫(huà)在的控件)的各個(gè)屬性cd

50、c *pdc;/設(shè)備上下文hdc hdc; /設(shè)備上下文的句柄cwnd *pwnd;/控件的窗口crect rect;/控件的寬高度int screenwid;/屏幕寬度int screenhei; /屏幕高度5.3 程序的初始化代碼在構(gòu)造函數(shù)中將成員變量和控件變量賦上初始值, 并在oninitdialog中進(jìn)行如圖5.1所示的操作。獲取要繪圖的控件的hdc和大小獲取攝像頭獲取屏幕分辨率開(kāi)始計(jì)時(shí)改變控件大小圖5.1 程序的初始化流程并在oninitdialog方法中加入以下代碼:/獲取hdc和控件尺寸pwnd = getdlgitem(idc_static1);pdc =pwnd-getdc(

51、);hdc= pdc-getsafehdc();pwnd-getclientrect(&rect);if (hdc=null)messagebox(無(wú)法獲取hdc);return true;/獲取攝像頭if (m_video=null)m_video=cvcreatecameracapture(m_e01);if (m_video=null)messagebox(無(wú)法打開(kāi)攝像頭);return true;invalidate(true);updatewindow();/獲取屏幕分辨率screenwid=getsystemmetrics(sm_cxscreen);screenhei=getsys

52、temmetrics(sm_cyscreen);/開(kāi)始計(jì)時(shí)settimer(1,100,null);/設(shè)置裝載圖片的控件的默認(rèn)尺寸是640*480并且將右邊控件位置和窗口大小調(diào)到適當(dāng)位置movecontrols(640,480);5.4 從輸入控件中獲得識(shí)別參數(shù)從控件中獲得參數(shù)可以用updatedata(true),但當(dāng)用戶輸入了一些非數(shù)字等不能轉(zhuǎn)換為參數(shù)的字符串時(shí),會(huì)不斷地彈出對(duì)話框。為了防止這種情況,處理方式如圖5.3所示,并在ontimer方法的開(kāi)頭中加入代碼:獲取彈出的對(duì)話框的指針是否獲取到對(duì)話框獲取控件的數(shù)據(jù)是否因獲取失敗而彈出了對(duì)話框根據(jù)控件數(shù)據(jù)開(kāi)始識(shí)別否否是是返回,不進(jìn)行識(shí)別對(duì)話

53、框關(guān)閉后控件的值復(fù)位并返回圖5.2 能防止不斷彈出對(duì)話框的獲取控件信息流程cwnd *cwdg=findwindowex(null,null,null,gesturetest);/獲取updatedata自動(dòng)生成的對(duì)話框,標(biāo)題為工程名cwnd *cwdt=getforegroundwindow();/獲取活動(dòng)的窗口if(this!=cwdt & cwdg=cwdt)/當(dāng)自動(dòng)生成的對(duì)話框彈出時(shí)不更新控件,也不進(jìn)行識(shí)別cdialogex:ontimer(nidevent);return;if(!updatedata(true)/讀取對(duì)話框數(shù)據(jù)/updatedata(false);cdialogex

54、:ontimer(nidevent);return;5.5 總體識(shí)別語(yǔ)句的實(shí)現(xiàn)總體識(shí)別的步驟包括:中值濾波、均值濾波、細(xì)節(jié)還原和銳化等圖像的初步潤(rùn)飾操作,也包括了選取的提取和擴(kuò)散操作,還有孤立點(diǎn)去除和關(guān)鍵信息的提取,代碼在ontimer方法中的獲取控件信息的語(yǔ)句之后。在識(shí)別的過(guò)程中,需要對(duì)識(shí)別的每一步結(jié)果分別進(jìn)行呈現(xiàn),為此需要進(jìn)行適當(dāng)?shù)牧鞒炭刂?,并選擇適當(dāng)?shù)膇plimage*圖片畫(huà)到控件中。而后面的應(yīng)用實(shí)現(xiàn)的代碼將被寫(xiě)在總體識(shí)別的語(yǔ)句之后。int colourmax=0;/最大色差bool preshow=false;/顯示m_frameif(smoothmode=1)cvsmooth(m_frame, m_grabframe, cv_median, 2*m_e11+1, 0, 0, 0);/中值濾波else if(smoothmode=2)cvsmoot

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論