亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OpenCV的手勢識別算法研究與應(yīng)用

        2024-01-07 05:31:44廖學(xué)成宋燕燕
        無線互聯(lián)科技 2023年22期

        廖學(xué)成,宋燕燕

        (南京傳媒學(xué)院,江蘇 南京 211172)

        0 引言

        計算機領(lǐng)域,經(jīng)過處理的數(shù)字圖像可以被運用在不同的行業(yè)當(dāng)中,例如,在影視處理領(lǐng)域中,可以通過對數(shù)字圖像進行處理從而得到驚艷的特效;在醫(yī)療影像領(lǐng)域中,圖像處理常常被用來識別病灶;在衛(wèi)星遙感領(lǐng)域中,圖像處理經(jīng)常被用來切割各種衛(wèi)星遙感地圖,從而提取出有價值的信息等。

        1 算法基礎(chǔ)

        1.1 神經(jīng)網(wǎng)絡(luò)

        傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)由神經(jīng)元和計算關(guān)系組成,不同的神經(jīng)元之間有著極為復(fù)雜的計算關(guān)系,這些不同計算關(guān)系都有一個權(quán)重,并在進行模型訓(xùn)練的過程中不斷地調(diào)整這些權(quán)重[1]。如圖1所示為傳統(tǒng)意義上的神經(jīng)網(wǎng)絡(luò),每層節(jié)點都和上一層節(jié)點相連接,構(gòu)成全連接網(wǎng)絡(luò),其缺點為參數(shù)眾多、冗余度大、難以訓(xùn)練。

        圖1 神經(jīng)網(wǎng)絡(luò)

        假設(shè)輸入一張像素為100×100的圖像,全連接層的每個神經(jīng)元都有將近10 000個權(quán)重參數(shù),極易產(chǎn)生過擬合[2]。為了解決這一問題,通常在該神經(jīng)網(wǎng)絡(luò)上添加卷積運算,構(gòu)成卷積神經(jīng)網(wǎng)絡(luò)[3]。

        1.2 卷積神經(jīng)網(wǎng)絡(luò)特征提取

        卷積運算公式為

        (1)

        其中,t為全局時間變量。卷積函數(shù)不僅可以是連續(xù)的曲線[4],還可以是離散的形式。因此公式(1)可以改寫為:

        (2)

        卷積神經(jīng)網(wǎng)絡(luò)由輸入層、卷積層、激活函數(shù)、池化層、全連接層組成[5],如圖2所示。

        圖2 卷積神經(jīng)網(wǎng)絡(luò)

        1.3 傅里葉描述子

        傅里葉描述子的作用是用來對特定物體創(chuàng)造一個特征圖像的,即只截取符合特征值的圖像[6]。從線性代數(shù)的角度思考,傅里葉描述子其實就是用一個高維的向量去描述一個物體。其計算公式為

        z(t)=x(t)+μy(t)

        (3)

        其中,u為復(fù)數(shù)表示法;函數(shù)z為一個經(jīng)過處理只有輪廓圖的圖像,并且將所得圖像通過復(fù)變函數(shù)表達。

        1.4 定義損失函數(shù)

        一般來講,在實驗的過程中,理想的輪廓提取和實際的輪廓提取總會產(chǎn)生一定的差距。為了很好地解決這些差距,通常會定義一個損失函數(shù)來度量模型預(yù)測的輪廓與實際輪廓之間的差距[7]。本文通過計算點到輪廓的距離來定義損失函數(shù)。

        假設(shè)在讀取的手勢圖像中有2點P1(x1,y1)和P2(x2,y2),為了計算這2點的歐幾里得空間中的直線距離,其計算公式如下:

        (4)

        其中,d為歐式距離;(x1,y1)和(x2,y2)分別為2個點的坐標(biāo)。公式(4)中的平方根運算表示計算2個點在坐標(biāo)軸上的距離差的平方和的平方根。

        公式(4)可以推廣到更高維度的歐幾里得空間中,其中每個點可以有更多的坐標(biāo)值。在三維空間中,公式會進一步擴展為:

        (5)

        2 手勢識別的流程

        首先獲取實時手勢圖像,然后進行圖像預(yù)處理,包括圖像增強、圖像銳化等提高圖像清晰度[8]。接著計算手勢特征值提取輪廓,采用 YCrCb 顏色空間中的Cr分量并結(jié)合閾值分割算法進行二值化,輸出切割圖像。最終確定當(dāng)前手勢,獲取手勢信息。基于 OpenCV 的手勢識別流程如圖3所示。

        圖3 手勢識別流程

        2.1 預(yù)處理

        從攝像頭或視頻中獲取手部圖像幀,將圖像轉(zhuǎn)換為灰度圖像進而調(diào)整對比度。轉(zhuǎn)換的實現(xiàn)過程是使用OpenCV中的“cv2.cvtColor()”函數(shù),并將轉(zhuǎn)換方式設(shè)置為“cv2.COLOR_BGR2GRAY( )”函數(shù)。其具體實現(xiàn)代碼如下:

        image=cv2.imread('image.jpg')

        gray_image=cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

        上述代碼中,“cv2.cvtColor()”函數(shù)將彩色圖像轉(zhuǎn)換為灰度圖像。第一個參數(shù)是輸入圖像,第二個參數(shù)是轉(zhuǎn)換的方式,使用cv2.COLOR_BGR2GRAY指定轉(zhuǎn)換為灰度圖像。轉(zhuǎn)換后的灰度圖像將存儲在新的變量“gray_image”中。

        這里需要注意的是,灰度圖像只有一個顏色通道,而彩色圖像有3個顏色通道。因此使用灰度圖像存儲可以大大節(jié)省內(nèi)存和計算資源。

        2.2 計算特征值

        特征圖像的創(chuàng)建過程如下:

        (1)創(chuàng)建一個空白圖像,將描述子的每個元素作為像素值填充到圖像中對應(yīng)的位置。

        (2)調(diào)整圖像的大小和尺度,從而適應(yīng)特定的應(yīng)用場景。

        (3)使用諸如調(diào)色板、平滑濾波器、邊緣檢測等圖像處理技術(shù),從而突出顯示特征。

        (4)將特征圖像與原始曲線圖像進行疊加顯示。

        如下代碼為創(chuàng)建特征圖像的核心算法:

        def create_feature_image(descriptors):

        feature_image=np.zeros((100, 100), dtype=np.uint8)

        fori,descriptorin enumerate(descriptors):

        x=int(descriptor[0]*50)++50

        y=int(descriptor[1]*50)++50

        feature_image[y,x]=255

        feature_image=cv2.applyColorMap(feature_image,cv2.COLORMAP_JET)

        returnfeature_image

        descriptors=np.array([[1.2,0.8],[-0.5,0.2],[0.9,-0.7]])

        feature_image=create_feature_image

        構(gòu)建好描述子之后,可以進行各種手勢特征提取,這些特征包括手指數(shù)量、手指的位置和彎曲度、手的方向、手掌的位置等。

        2.3 膚色檢測

        膚色檢測流程如圖4所示。

        圖4 膚色預(yù)測流程

        首先需要進行合適的顏色空間轉(zhuǎn)換[9]。常見的顏色空間轉(zhuǎn)換是將圖像從RGB空間轉(zhuǎn)換到Y(jié)UV、HSV或Lab。將圖像從RGB空間轉(zhuǎn)換到Y(jié)UV空間的實現(xiàn)代碼為:yuv_image=cv2.cvtColor(image, cv2.COLOR_BGR2YUV),將圖像從RGB空間轉(zhuǎn)換到HSV空間的實現(xiàn)代碼為:hsv_image=cv2.cvtColor(image, cv2.COLOR_BGR2HSV),將圖像從RGB空間轉(zhuǎn)換到Lab空間的實現(xiàn)代碼為:lab_image=cv2.cvtColor(image, cv2.COLOR_BGR2Lab)?!癱v2.cvtColor()”函數(shù)用于執(zhí)行顏色空間轉(zhuǎn)換。第一個參數(shù)是輸入圖像,第二個參數(shù)是轉(zhuǎn)換方式,可以通過使用預(yù)定義的常量(如cv2.COLOR_BGR2YUV、cv2.COLOR_BGR2HSV、cv2.COLOR_BGR2Lab)來指定所需的轉(zhuǎn)換。不過,使用YCrCb顏色空間可以最大化地對RGB圖像進行顯示,其從RGB空間到Y(jié)CrCb空間的轉(zhuǎn)換公式如下:

        (6)

        對于手部輪廓的提取,使用的是簡單的自適應(yīng)閾值方法,在OpenCV中的表示代碼為:ret,threshold=cv2.threshold(gray_image, thresh, maxval, threshold_type),其中“gray_image”代表輸入的灰度圖像;“thresh”代表閾值,用于將像素分為目標(biāo)和背景;“maxval”代表像素大于閾值時,所設(shè)置的像素值;“threshold_type”代表閾值分割的類型,例如“cv2.THRESH_BINARY”表示二值化閾值分割。

        3 實驗結(jié)果

        對于上述算法在手勢輪廓提取的應(yīng)用實驗結(jié)果如圖5所示。

        圖5 手勢輪廓

        進行膚色檢測和分割處理后的實驗結(jié)果如圖6所示。

        圖6 原始圖像及分割后的圖像

        基于提取的手勢特征進行機器學(xué)習(xí)模型訓(xùn)練,在文中使用的模型為KNN。訓(xùn)練完成后識別的結(jié)果如圖7所示。

        圖7 手勢識別

        4 結(jié)語

        隨著人機交互技術(shù)的日益發(fā)展,手勢識別算法愈來愈成熟。本文主要是對手勢的識別先導(dǎo)思想如神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)等進行分析,并通過圖像預(yù)處理、特征值提取、膚色預(yù)測等步驟實現(xiàn)人體手勢識別。后續(xù)對于本課題還有很大的改進空間;例如是否可以從二維的角度進而升級從三維的角度進行處理,從而把本課題實現(xiàn)的二維模型建成三維模型,這樣不僅可以獲得更多的特征值,還可以極大地提高識別的成功率。

        国产成人无码综合亚洲日韩| 国内自拍偷拍一区二区| 日韩有码中文字幕在线视频| 亚洲国产成人精品无码区在线播放| 精品9e精品视频在线观看| 国产2021精品视频免费播放| 视频一区二区三区中文字幕狠狠| 日本一本一道久久香蕉男人的天堂| 人妻尝试又大又粗久久| 天堂在线www中文| 亚洲五月七月丁香缴情| 亚洲精品一区二区网站| 国产精品扒开腿做爽爽爽视频| 精品久久久久久无码国产| 中文字幕有码高清| 大香蕉国产av一区二区三区| 少妇人妻精品一区二区三区| 亚洲中文字幕无码中字| 免费观看黄网站在线播放| 久久国产精品无码一区二区三区| 亚洲熟女网站| 在线免费午夜视频一区二区| av天堂精品久久综合网| 亚洲精品乱码久久久久久久久久久久| 女人体免费一区二区| 日韩亚洲在线一区二区| 亚洲av成人无码久久精品老人| 国产成人亚洲日韩欧美| 欧美性久久| 美国又粗又长久久性黄大片| 好吊妞视频这里有精品| 免费观看黄网站| 亚洲av永久青草无码精品| 丝袜美腿人妻第一版主| 日本入室强伦姧bd在线观看| 亚洲毛片网| 久久久精品网站免费观看| 国产后入清纯学生妹| 亚洲国产成人精品女人久久久| 亚洲av色香蕉一区二区三区蜜桃| 在线视频观看一区二区|