国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Kinect深度信息的虛擬手驅(qū)動算法研究

2019-07-16 11:08:04
關(guān)鍵詞:關(guān)鍵點(diǎn)手部骨架

(山東科技大學(xué) 電子信息工程學(xué)院,山東 青島 266590)

人機(jī)交互技術(shù)是研究人與計(jì)算機(jī)之間相互作用方式的技術(shù),其重點(diǎn)在于通過改善使用者與計(jì)算機(jī)間的交互方式,提高交互的真實(shí)性與沉浸感[1-2]。由于傳統(tǒng)的鼠標(biāo)、鍵盤等輸入設(shè)備的限制,使用者向計(jì)算機(jī)發(fā)送請求依舊是單通道的形式[3],輸入輸出的不平衡也導(dǎo)致使用者無法直接、主動地與研究對象進(jìn)行自然交互。若能將人手用于交互操作,直接通過人手與仿真環(huán)境交互,發(fā)揮其多自由度的優(yōu)勢,將極大地提高用戶在人機(jī)交互中的真實(shí)性感受,人手控制交互的技術(shù)不僅具有理論意義,在實(shí)際應(yīng)用中也具有很大的研究價(jià)值。

早期的人手控制交互研究,主要致力于開發(fā)專用的硬件設(shè)備對手勢進(jìn)行采集,Grimes[4]申請的“Data Glove”數(shù)據(jù)手套專利,利用彎曲傳感器實(shí)現(xiàn)了獲取手指運(yùn)動的結(jié)果。Davis等[5]通過貼片標(biāo)記的方式獲取手勢數(shù)據(jù),得到區(qū)分識別7種不同手勢的結(jié)果。該類研究受到所用設(shè)備昂貴、受標(biāo)記物等多種因素影響限制。Kinect作為帶有深度信息的體感輸入設(shè)備[6],價(jià)格低廉且無需借助外部標(biāo)記即可對裸手識別。近年來,基于Kinect進(jìn)行手勢識別的研究有諸多進(jìn)展,針對手勢實(shí)現(xiàn)靜態(tài)與動態(tài)識別主要可概括為支持向量機(jī)算法[7-9]、隱馬爾可夫模型[10-13]和動態(tài)時間規(guī)整[14-16]等方法。但該類研究僅對固定手勢進(jìn)行識別,忽略了手部的實(shí)時運(yùn)動信息。

國內(nèi)外也出現(xiàn)了針對手部特征信息提取的研究,以期獲取更為豐富的手部追蹤數(shù)據(jù)。Kirac等[17]利用區(qū)塊識別法實(shí)現(xiàn)了基于Kinect的實(shí)時手位估計(jì),將人手劃分為21個區(qū)域做動態(tài)識別處理;Raheja等[18]利用手指與掌心檢測算法實(shí)現(xiàn)了利用Kinect追蹤指尖與手掌位置;Braun等[19]利用隨機(jī)決策森林與機(jī)器學(xué)習(xí)的方法實(shí)現(xiàn)了Kinect對人手的實(shí)時追蹤。Metrilus Gmbh公司[20-21]利用大量數(shù)據(jù)歸納的決策樹特征值并訓(xùn)練Aiolos追蹤庫,實(shí)現(xiàn)了手指關(guān)節(jié)點(diǎn)位置定位?,F(xiàn)有研究僅對原始數(shù)據(jù)作特征值分析處理,利用手部數(shù)據(jù)驅(qū)動虛擬手參與交互的研究存在不足。

本研究利用Aiolos庫與樸素貝葉斯算法追蹤獲取手部特征信息,通過數(shù)據(jù)的跨平臺傳輸與運(yùn)動變換驅(qū)動虛擬手。結(jié)果驗(yàn)證本研究中的手部特征點(diǎn)數(shù)據(jù)較Kinect官方SDK骨架追蹤特征點(diǎn)數(shù)有大幅提升,利用追蹤數(shù)據(jù)驅(qū)動虛擬手?jǐn)[脫了傳統(tǒng)交互限制,可發(fā)揮人手多自由度優(yōu)勢,對于虛擬現(xiàn)實(shí)研究中交互性與沉浸感的提高具有重要意義。

1 基于Kinect深度信息的虛擬手驅(qū)動算法流程

基于Kinect的虛擬手驅(qū)動算法流程主要通過Kinect獲取人手深度圖像,結(jié)合Aiolos追蹤庫獲取關(guān)鍵點(diǎn)數(shù)據(jù),在虛幻引擎環(huán)境下逐幀更新數(shù)據(jù)流驅(qū)動虛擬手運(yùn)動。可分為原始數(shù)據(jù)采集、Aiolos數(shù)據(jù)追蹤處理、數(shù)據(jù)流跨平臺傳輸和虛幻引擎平臺下的虛擬手驅(qū)動等4個模塊。設(shè)計(jì)流程如圖1所示。

圖1 基于Kinect深度信息的虛擬手驅(qū)動算法流程Fig.1 The algorithm process of driving virtual hand based on Kinect depth data

2 基于Kinect的數(shù)據(jù)獲取與處理

深度圖像與追蹤骨架等原始數(shù)據(jù)通過Kinect SDK采集[22],深度數(shù)據(jù)由校準(zhǔn)方程標(biāo)定,Aiolos庫在原始數(shù)據(jù)基礎(chǔ)上完成初始化,校正骨架后通過腕部JointType_Wrist節(jié)點(diǎn)完成手部區(qū)域的分割提取[23],采用貝葉斯算法與Aiolos決策樹識別匹配獨(dú)立手指骨架,獲取手部關(guān)鍵點(diǎn)數(shù)據(jù)。并通過指數(shù)平滑和EMA算法完成對點(diǎn)位的運(yùn)動預(yù)測,降低抖動與偽影誤差對追蹤結(jié)果產(chǎn)生的影響。

2.1 原始數(shù)據(jù)的獲取

Kinect是微軟開發(fā)設(shè)計(jì)的一款帶有深度信息的運(yùn)動感應(yīng)設(shè)備,提供自然用戶界面,檢測人體運(yùn)動、手勢、語音命令及人臉識別,可在不借助手動控制設(shè)備的情況下與虛擬環(huán)境進(jìn)行交互。其獲取深度數(shù)據(jù)所采用的TOF技術(shù)主要通過測量光脈沖之間的傳輸延遲時間來計(jì)算深度信息。

Kinect的數(shù)據(jù)流主要由中間層即Kinect SDK處理,用于應(yīng)用層與硬件層的通訊和數(shù)據(jù)傳輸。Kinect SDK可分為Kinect驅(qū)動程序、Kinect運(yùn)行時環(huán)境與多平臺API。以深度信息追蹤骨架為例,SDK通過程序驅(qū)動傳感器工作,然后通過骨架追蹤中間件識別深度圖像中人體位置,跟蹤用戶站立(25節(jié)點(diǎn))或坐姿(10節(jié)點(diǎn)),每個關(guān)節(jié)相對于Kinect傳感器定位在三維空間中,作為Kinect傳感器的偏移量給出。以使用時的視角定義X軸指向右側(cè),Y軸指向上方,Z軸從設(shè)備指向用戶。深度數(shù)據(jù)用像素表示,X軸數(shù)據(jù)范圍-2.2~2.2 m,總范圍4.2 m,Y軸范圍是-1.6~1.6 m,Z軸范圍是0~4 m。由于Kinect深度數(shù)據(jù)與骨骼追蹤數(shù)據(jù)測量方法的不同,需要采用坐標(biāo)映射的方法將骨骼追蹤點(diǎn)數(shù)據(jù)從骨架數(shù)據(jù)空間轉(zhuǎn)換到深度圖像的二維空間中。獲取的實(shí)時三維坐標(biāo)數(shù)據(jù)傳遞給應(yīng)用層,實(shí)現(xiàn)傳感器硬件到應(yīng)用層間數(shù)據(jù)流的雙向傳輸功能。

獲取原始數(shù)據(jù)需要對Kinect參數(shù)初始化[24]。深度與骨架幀數(shù)據(jù)源暴露元數(shù)據(jù)并賦予對應(yīng)讀取器訪問深度幀元數(shù)據(jù)的權(quán)限。幀數(shù)據(jù)源開啟運(yùn)行讀取器,通過事件注冊或輪詢方式訪問從傳感器逐幀獲取圖像。當(dāng)幀數(shù)據(jù)被Kinect捕獲,幀事件逐幀發(fā)送幀引用,直至幀數(shù)據(jù)獲取完畢。

Kinect獲取原始數(shù)據(jù)信息中的深度值是相對距離,假設(shè)原始圖像某點(diǎn)p的深度值為dr,則實(shí)際深度距離d的標(biāo)定校準(zhǔn)方程[25]為:

d=Ktan(Hdr+L)-O。

(1)

其中,實(shí)際的深度距離以cm為單位,K=12.36 cm,H=3.50×10-4rad,L=1.18 rad,O=3.70 cm。校正數(shù)據(jù)正切近似值平方和的偏差為0.33cm2。利用上述校準(zhǔn)函數(shù)獲取真實(shí)深度數(shù)據(jù)后,可通過坐標(biāo)映射求得p點(diǎn)的實(shí)際位置,設(shè)(i,j)為p點(diǎn)投射到Kinect原始圖像上的像素位置,(x,y,z)為p點(diǎn)在空間中的實(shí)際位置。利用投射點(diǎn)結(jié)合深度數(shù)據(jù)的(i,j,d)求解實(shí)際位置(x,y,z)的轉(zhuǎn)換式如公式(2)~(4)所示。

(2)

(3)

z=d。

(4)

其中,u×v為Kinect獲取到的深度圖像平面尺寸,轉(zhuǎn)換控制常量c取值為0.002 1,此轉(zhuǎn)換過程中p點(diǎn)實(shí)際位置重構(gòu)的精度控制到1 cm以內(nèi)。控制臺負(fù)責(zé)Kinect數(shù)據(jù)流的獲取,校準(zhǔn)后的深度數(shù)據(jù)轉(zhuǎn)換成EmguCV的Image〈Bgr,byte〉結(jié)構(gòu)體在子線程窗口顯示。骨架數(shù)據(jù)標(biāo)記腕部JointType_Wrist關(guān)節(jié)點(diǎn),由Aiolos庫作手部特征值數(shù)據(jù)的追蹤處理。

2.2 Kinect結(jié)合Aiolos庫的數(shù)據(jù)追蹤

Aiolos追蹤庫是由提供深度信息咨詢服務(wù)、定制多類型基于深度傳感器3D實(shí)時應(yīng)用解決方案的Metrilus公司開發(fā)的手指追蹤庫。該類庫配合Kinect SDK使用,依賴于SDK提供的身體骨骼追蹤數(shù)據(jù),Aiolos庫在Kinect獲取的骨架數(shù)據(jù)基礎(chǔ)上完成初始化,并通過深度圖像標(biāo)記的腕部JointType_Wrist節(jié)點(diǎn)將人手深度信息與背景分割。為了保證追蹤點(diǎn)數(shù)據(jù)定位準(zhǔn)確,本研究使用最小二乘法擬合,將獲取到的骨架追蹤數(shù)據(jù)在空間方向上校正,使其與Kinect投射平面保持平行。

校正平面的法向量定義為(a,b,c),骨架數(shù)據(jù)的校正即為針對骨骼節(jié)點(diǎn)的旋轉(zhuǎn)變換。假設(shè)校正平面繞X軸旋轉(zhuǎn)角度為α,繞Y軸旋轉(zhuǎn)角度為β時與投射平面平行,則旋轉(zhuǎn)角度分別為:

(5)

(6)

(7)

(8)

追蹤庫以大量輸入數(shù)據(jù)作為樣本,通過貝葉斯算法訓(xùn)練特征值,樸素貝葉斯分類器是一種基于獨(dú)立假設(shè)貝葉斯定理的簡單概率分類器。假設(shè)樣本每個特征與其他特征都不相關(guān),根據(jù)先驗(yàn)概率和計(jì)算給定的待分類實(shí)例屬于各個類別的條件概率聯(lián)合求得后驗(yàn)概率,選取計(jì)算所得后驗(yàn)概率最高的類別,進(jìn)行非確定性的決策。提升Aiolos庫提供的決策樹搜索手部特征信息的速度與精度。假設(shè)區(qū)域內(nèi)任意點(diǎn)p可由訓(xùn)練樣本集合進(jìn)行描述,分類給定訓(xùn)練數(shù)據(jù)(a1,a2,…,am)的條件下,找出最可能的類特征值點(diǎn)c(p)。由極大后驗(yàn)假設(shè)可求出:

(9)

樸素貝葉斯算法假設(shè)給定目標(biāo)點(diǎn)是在樣本數(shù)據(jù)之間,相互條件獨(dú)立?;诖?,應(yīng)用貝葉斯公式可將公式(9)修正為:

(10)

其中,P(c)為c的先驗(yàn)概率,P(aj|c)為訓(xùn)練樣本中不同特征點(diǎn)組合出現(xiàn)概率估計(jì)。通過測量兩點(diǎn)間深度差異,分析像素位置特征。針對像素位置x:

(11)

Aiolos決策樹追蹤手部骨架,根據(jù)特征值獲取手部關(guān)鍵點(diǎn)數(shù)據(jù),并通過坐標(biāo)映射函數(shù)進(jìn)行坐標(biāo)映射。對深度值進(jìn)行歸一化處理,可保證關(guān)鍵點(diǎn)不受深度數(shù)據(jù)的影響。關(guān)鍵點(diǎn)序列與空間位置信息以鍵值對形式存儲,某幀手部特征關(guān)鍵點(diǎn)空間位置提取數(shù)據(jù)如表1所示。

表1 手部特征關(guān)鍵點(diǎn)空間位置提取數(shù)據(jù)Tab.1 Spatial location data of the key points of a hand

受原始深度圖像產(chǎn)生的抖動和偽影誤差的影響,關(guān)鍵點(diǎn)數(shù)據(jù)追蹤結(jié)果的不可靠性會升高,基于此,本研究引入指數(shù)平滑和EMA算法對追蹤數(shù)據(jù)過程進(jìn)行優(yōu)化。在追蹤關(guān)鍵點(diǎn)位置不變的理想情況下,僅考慮受到深度圖像抖動影響,假設(shè)當(dāng)前關(guān)鍵點(diǎn)為點(diǎn)p,更新前關(guān)鍵點(diǎn)為點(diǎn)q,則指數(shù)平滑后下一幀關(guān)鍵點(diǎn)p′為:

p′=q+s(p-q),

(12)

其中,s是平滑因子常量,根據(jù)需求在0≤s≤1范圍內(nèi)取值負(fù)責(zé)指數(shù)平滑。指數(shù)移動平均(exponential moving average,EMA)算法用于追蹤數(shù)據(jù)丟失時預(yù)測關(guān)鍵點(diǎn)數(shù)據(jù)位置,借助關(guān)鍵點(diǎn)數(shù)據(jù)值丟失前的幀隊(duì)列進(jìn)行預(yù)測:

St=wyt+(1-w)st-1,

(13)

其中,t為讀取當(dāng)前隊(duì)列所在幀,y為觀察值,權(quán)重因子w取值范圍為0

圖2 手部關(guān)鍵點(diǎn)數(shù)據(jù)追蹤對比圖Fig.2 The contrast diagram with the key points of hand

通過對比可知,使用傳統(tǒng)KinectSDK方式如圖2(a)中圓形區(qū)域所示,共可獲取4個手部關(guān)鍵節(jié)點(diǎn),僅可根據(jù)節(jié)點(diǎn)間距離的閾值判斷當(dāng)前張開握拳手勢,識別節(jié)點(diǎn)較少,手勢單一。如圖2(b)所示,根據(jù)本研究所提出的方法可獲取15個手部關(guān)鍵節(jié)點(diǎn),并進(jìn)一步細(xì)分為5組節(jié)點(diǎn)模擬手部關(guān)節(jié),豐富的節(jié)點(diǎn)數(shù)據(jù)控制虛擬手骨骼節(jié)點(diǎn)的旋轉(zhuǎn)位移,有利于更精細(xì)化地驅(qū)動虛擬手。

3 驅(qū)動虛擬手設(shè)計(jì)

虛擬手驅(qū)動處理以虛幻引擎為開發(fā)環(huán)境,采用數(shù)據(jù)表形式進(jìn)行數(shù)據(jù)流傳輸。通過虛幻引擎提供的UDataTable讀寫組件,可將引擎外部的大量復(fù)雜數(shù)據(jù)整理為通用字符序列存放于臨時CSV文件中,由引擎逐幀讀取數(shù)據(jù)流,該設(shè)計(jì)可有效地解決數(shù)據(jù)多樣性與平臺差異性的問題,提高處理效率。

3.1 數(shù)據(jù)流跨平臺讀寫和動態(tài)加載

CSV文件將表格數(shù)據(jù)以文本形式存儲,避免類似二進(jìn)制數(shù)字被解譯為復(fù)雜數(shù)據(jù),具有良好的跨平臺性能。手部關(guān)鍵點(diǎn)數(shù)據(jù)寫入文件時,需要聲明包含有CSV文件路徑名稱的字符串變量;在每幀遍歷關(guān)鍵點(diǎn)數(shù)據(jù)時,通過文件流處理中的字符串追加函數(shù),將數(shù)據(jù)與控制臺顯示同步寫入。

虛幻引擎的UDataTable組件通過自定義行結(jié)構(gòu),用于導(dǎo)入器識別DataTable數(shù)據(jù)表。傳統(tǒng)的UDataTable組件僅支持讀取靜態(tài)數(shù)據(jù),由于CSV文件數(shù)據(jù)會隨著外部數(shù)據(jù)更新而發(fā)生改變,這里提出采用C++動態(tài)加載*.csv文件的思路。通過動態(tài)加載至虛幻引擎的數(shù)據(jù)流,由關(guān)卡藍(lán)圖完成數(shù)據(jù)遍歷,經(jīng)過運(yùn)動變換得到旋轉(zhuǎn)矢量存儲在對應(yīng)的Orientation變量中,獲取到手部控制數(shù)據(jù)即可對仿真環(huán)境的虛擬手進(jìn)行驅(qū)動設(shè)計(jì)。

3.2 基于藍(lán)圖的虛擬手驅(qū)動

與傳統(tǒng)預(yù)設(shè)動畫序列的方式不同,該設(shè)計(jì)通過Transform Bone控制器驅(qū)動虛擬手,該控制器主要應(yīng)用在虛幻引擎的捏臉系統(tǒng)中,通過修改特定骨骼變形調(diào)整模型蒙皮的形態(tài)。在獲取手部關(guān)鍵點(diǎn)且經(jīng)過運(yùn)動變換得到數(shù)據(jù)流后,借助Transform Bone控制器分別綁定虛擬手模型的各骨骼節(jié)點(diǎn),靈活處理各骨骼節(jié)點(diǎn)的平移、旋轉(zhuǎn)運(yùn)動,避免了預(yù)設(shè)動畫序列單一性,滿足外部數(shù)據(jù)驅(qū)動設(shè)計(jì)實(shí)時性與多樣性要求?;谔摂M手建模導(dǎo)入虛幻引擎的骨架網(wǎng)格物體包含腕部與手指多個骨骼節(jié)點(diǎn),將Kinect識別的腕部JointType_Wrist節(jié)點(diǎn)平移與旋轉(zhuǎn)數(shù)據(jù)作用于虛擬手根骨骼,控制虛擬手在世界坐標(biāo)系的移動與旋轉(zhuǎn);以根節(jié)點(diǎn)為原點(diǎn)建立局部坐標(biāo)系,通過關(guān)鍵點(diǎn)運(yùn)動變換后存儲在Orientation變量中的旋轉(zhuǎn)信息作為手指控制數(shù)據(jù),綁定Transform Bone控制器函數(shù)驅(qū)動手指骨骼,在局部坐標(biāo)系下相對于根節(jié)點(diǎn)運(yùn)動。手部控制數(shù)據(jù)驅(qū)動虛擬手運(yùn)動的藍(lán)圖設(shè)計(jì)如圖3所示,獲取到手部關(guān)鍵點(diǎn)數(shù)據(jù)通過運(yùn)動變換后的旋轉(zhuǎn)平移數(shù)據(jù)存儲,對應(yīng)作用在各自Transform Bone控制器上,動態(tài)控制虛擬手各骨骼關(guān)節(jié)的坐標(biāo)點(diǎn)和旋轉(zhuǎn)矢量變化,從而實(shí)現(xiàn)虛擬手驅(qū)動。

圖3 手部控制數(shù)據(jù)驅(qū)動虛擬手的藍(lán)圖設(shè)計(jì)Fig.3 The blueprint design of virtual hand driven by hand control data

4 結(jié)果驗(yàn)證

為對Kinect獲取數(shù)據(jù)驅(qū)動虛擬手可行性進(jìn)行驗(yàn)證,本研究采用VS 2015作為數(shù)據(jù)獲取開發(fā)環(huán)境,并以虛幻引擎作為驅(qū)動虛擬手平臺。使用Kinect采集300幀人手實(shí)時運(yùn)動狀態(tài)圖像,通過對獲取到的原始數(shù)據(jù)深度校準(zhǔn)標(biāo)定和平滑優(yōu)化去除抖動后,實(shí)現(xiàn)了對手部特征關(guān)鍵點(diǎn)數(shù)據(jù)追蹤,數(shù)據(jù)流經(jīng)跨平臺傳輸和運(yùn)動變換處理后驅(qū)動虛擬手的結(jié)果與帶有追蹤關(guān)鍵點(diǎn)的紅外圖像數(shù)據(jù)對比如圖4所示。

六組手勢包含了手部伸展、握拳及各種手指屈伸狀態(tài),代表了虛擬手的屈伸與收展運(yùn)動情況,可驗(yàn)證多種手部運(yùn)動狀態(tài)下虛擬手骨骼關(guān)節(jié)的圖形表示,以及利用手部追蹤數(shù)據(jù)驅(qū)動虛擬手的可實(shí)施性。實(shí)驗(yàn)結(jié)果表明,通過校準(zhǔn)方程和最小二乘法擬合后,可對原始圖像準(zhǔn)確迅速獲取手部追蹤數(shù)據(jù),手部追蹤在彎屈狀態(tài)下丟失的數(shù)據(jù)由EMA算法預(yù)測彌補(bǔ),跨平臺數(shù)據(jù)流傳輸和骨骼綁定驅(qū)動效果可滿足人手直接參與交互的要求。

圖4 六組帶有關(guān)鍵點(diǎn)的紅外圖像與虛擬手驅(qū)動效果對比圖Fig.4 Six groups of infrared image with key points and the effect of driving virtual hand

5 結(jié)語

基于Kinect傳感器可獲取深度信息的特點(diǎn),研究了手部追蹤數(shù)據(jù)驅(qū)動虛擬手算法,利用Kinect獲取手部關(guān)鍵點(diǎn)數(shù)據(jù)實(shí)現(xiàn)對虛擬手驅(qū)動。相較于Kinect SDK骨架追蹤數(shù)據(jù),本方法獲取到的手部關(guān)鍵點(diǎn)數(shù)據(jù)更為豐富,對于人手多自由度運(yùn)動還原有較大提高。利用數(shù)據(jù)驅(qū)動虛擬手可突破傳統(tǒng)交互的限制,在不借助手動控制設(shè)備情況下與虛擬環(huán)境進(jìn)行自然交互。該研究應(yīng)用于礦井災(zāi)害動態(tài)演化技術(shù)驗(yàn)證平臺,可以提高平臺的交互性和沉浸感。同時也可廣泛應(yīng)用在虛擬現(xiàn)實(shí)項(xiàng)目開發(fā)中。

猜你喜歡
關(guān)鍵點(diǎn)手部骨架
手部皮膚軟組織缺損修復(fù)的皮瓣選擇
淺談管狀骨架噴涂方法
聚焦金屬關(guān)鍵點(diǎn)
肉兔育肥抓好七個關(guān)鍵點(diǎn)
骨架密度對炭/炭多孔骨架壓力浸滲銅的影響
兩種皮瓣修復(fù)手部軟組織缺損的比較
發(fā)生于手部的硬下疳一例
醫(yī)聯(lián)體要把握三個關(guān)鍵點(diǎn)
內(nèi)支撐骨架封抽技術(shù)在突出煤層瓦斯抽采中的應(yīng)用
中國煤層氣(2014年3期)2014-08-07 03:07:45
復(fù)明膠囊疑致手部腫痛1例
神农架林区| 大关县| 栾川县| 从化市| 望江县| 时尚| 宁远县| 定兴县| 张掖市| 栖霞市| 利川市| 克拉玛依市| 枣阳市| 博白县| 靖远县| 宜黄县| 五莲县| 马鞍山市| 泌阳县| 汝州市| 乐平市| 泰安市| 新昌县| 乡宁县| 巴中市| 宿松县| 同仁县| 枝江市| 深泽县| 兴海县| 厦门市| 黄大仙区| 邻水| 法库县| 湘乡市| 宕昌县| 汉寿县| 小金县| 合江县| 郁南县| 枝江市|