本發(fā)明涉及圖片識別技術領域,特別涉及一種360度全景圖片的識別方法和裝置。
背景技術:
隨著虛擬現(xiàn)實技術(Virtual Reality,VR)的日趨成熟,應用在VR模式下的資源不斷涌現(xiàn),特別是適于VR模式下觀看的各種類型的圖片,例如2D圖片、全景圖片等。當通過VR模式觀看各種類型的圖片時,圖片的類型不同,圖片查看工具也不相同。為了實現(xiàn)自動選擇圖片查看工具,代替用戶手動選擇,就需要對圖片的類型進行自動識別,特別是對360度全景圖片的識別。
普通的全景圖是通過拼接多幅圖像達到廣角的效果,來展現(xiàn)更多的場景,360度全景圖片是通過圖片的左右側拼合,在VR模式下達到360度環(huán)視的效果,從而給用戶帶來三維立體的空間體驗。這就要求,360度全景圖片的的左右兩邊在拼合后,其顏色的過渡是平滑的,不存在明顯的拼接痕跡,即拼接處的像素點的顏色值接近或者相同。其圖1為360度全景圖片的示意圖;其中,圖1(a)為360度全景圖片的原圖;圖1(b)為360度全景圖片原圖的右半部分平移到左側拼接后的效果示意圖。如圖1所示,該360度全景圖片原圖的右半部分平移到左側并進行拼接后,該圖片沒有明顯的拼接痕跡,整張圖片看起來還是完整的。
基于360度全景圖片左右兩邊在拼合后,拼接處的像素點的顏色值接近或者相同,在現(xiàn)有技術中,識別360度全景圖,一般有兩種方式:一種是選擇圖像的寬高比例來識別,若寬高比大于一個閾值,就認為是360度全景圖片;但是,普通的全景圖的寬高比也較大,不能實現(xiàn)360度環(huán)視的效果,不能被視為是360度全景圖片。所以,這種方法的誤差性較大,會導致寬高較大的普通全景圖的誤判,準確性低;另一種是比較圖像左右兩側對應位置的像素顏色值差,如果小于一個閾值,則認為是360度全景圖。但是,這種方法對閾值的選擇要求苛刻,通常情況下,很難找到一個閾值能準確識別所有360度全景圖,準確性低。
技術實現(xiàn)要素:
鑒于現(xiàn)有技術中識別360度全景圖片的準確性低的問題,提出了本發(fā)明的一種360度全景圖片的識別方法和裝置,以便解決或至少部分地解決上述問題。
根據(jù)本發(fā)明的一個方面,提供了一種360度全景圖片的識別方法,其特征在于,所述方法包括:
收集若干個360度全景圖片和非360度全景圖片作為樣本圖片;
獲取每個樣本圖片的特征向量,通過樣本訓練獲取區(qū)分360度全景圖片特征和非360度全景圖片特征的支持向量數(shù)據(jù);
采用與獲取每個樣本圖片的特征向量相同的方式獲取所述待識別圖片的特征向量;
判斷所述待識別圖片的特征向量是否符合所述支持向量數(shù)據(jù)中的360度全景圖片特征;若判斷為是,則確定待識別圖片為360度全景圖片,否則為非360度全景圖片。
根據(jù)本發(fā)明的另一個方面,提供了一種360度全景圖片的識別裝置,其特征在于,所述裝置包括:
樣本圖片收集單元,用于收集若干個360度全景圖片和非360度全景圖片作為樣本圖片;
特征向量獲取單元,用于獲取每個樣本圖片的特征向量;以及采用與獲取每個樣本圖片的特征向量相同的方式獲取所述待識別圖片的特征向量;
支持向量獲取單元,用于根據(jù)獲取的每個樣本圖片的特征向量,通過樣本訓練獲取區(qū)分360度全景圖片特征和非360度全景圖片特征的支持向量數(shù)據(jù);
判斷單元,用于判斷所述待識別圖片的特征向量是否符合所述支持向量數(shù)據(jù)中的360度全景圖片特征;若判斷為是,則確定待識別圖片為360度全景圖片,否則為非360度全景圖片。
綜上所述,本發(fā)明首先收集若干個360度全景圖片和非360度全景圖片作為樣本圖片,獲取每個樣本圖片的特征向量,通過樣本訓練以得到區(qū)分360度全景圖片特征和非360度全景圖片特征的支持向量數(shù)據(jù),然后采用與獲取每個樣本圖片的特征向量相同的方式獲取待識別圖片的特征向量,再根據(jù)該支持向量數(shù)據(jù)判斷待識別圖片的特征向量是否符合360度全景圖片特征;若判斷為是,則確定待識別圖片為360度全景圖片??梢姡景l(fā)明是綜合若干個圖片類型已知的圖片特征獲得支持向量數(shù)據(jù)后,再進一步判斷待識別圖片的特征向量是否符合360度全景圖片特征,實現(xiàn)待識別圖片的自動識別,并非簡單的比較待識別圖片自身的像素點的顏色值,判斷準確性高,進而根據(jù)識別結果選擇對應的圖片播放工具,提升用戶體驗。
附圖說明
圖1為360度全景圖片的示意圖;其中,圖1(a)為360度全景圖片的原圖;圖1(b)為360度全景圖片原圖的右半部分平移到左側拼接后的效果示意圖;
圖2為本發(fā)明一個實施例提供的一種360度全景圖片的識別方法的流程圖;
圖3為本發(fā)明一個實施例提供的一種360度全景圖片的識別裝置的示意圖。
具體實施方式
本發(fā)明的設計思路是:鑒于現(xiàn)有技術中識別360度全景圖片的準確性低的問題,本發(fā)明首先通過樣本訓練學習若干個圖片類型已知的圖片特征獲得區(qū)分360度全景圖片特征和非360度全景圖片特征的支持向量數(shù)據(jù)后,然后再根據(jù)該支持向量數(shù)據(jù)判斷待識別圖片是否符合360度全景圖片特征,實現(xiàn)待識別圖片的自動識別,并非簡單的比較待識別圖片自身的像素點的顏色值,判斷準確性高,進而根據(jù)識別結果選擇對應的圖片播放工具,提升用戶體驗。為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚,下面將結合附圖對本發(fā)明實施方式作進一步地詳細描述。
圖2為本發(fā)明一個實施例提供的一種360度全景圖片的識別方法的流程圖。如圖2所示,該方法包括:
步驟S110,收集若干個360度全景圖片和非360度全景圖片作為樣本圖片。
將收集到的若干個360度全景圖片和非360度全景圖片分別放入不同的文件夾下以進行區(qū)分,例如:在E://data//images//0//路徑下放非360度全景圖片數(shù)據(jù);在E://data//images//1//路徑下放360度全景圖片數(shù)據(jù)。
步驟S120,獲取每個樣本圖片的特征向量,通過樣本訓練獲取區(qū)分360度全景圖片特征和非360度全景圖片特征的支持向量數(shù)據(jù)。
在獲取每個樣本圖片的特征向量之前,首先需要將若干個360度全景圖片數(shù)據(jù)和非360度全景圖片數(shù)據(jù)分別加載到不同的容器中,以便特征向量獲取開始時,加載到相應程序的內存中。例如,讀取E://data//images//0//中的數(shù)據(jù),將所有360度全景圖樣本數(shù)據(jù)加載到vector<Mat>posImages;讀取E://data//images//1//中的數(shù)據(jù),將所有非360度全景圖樣本數(shù)據(jù)加載到vector<Mat>negImages。
獲取特征向量的時候,是通過每個樣本圖片左右兩側的若干列的像素點的顏色值,計算色差值,并從所有色差值中等間距地選取出預定數(shù)量N個色差值,將所述N個色差值構成色差向量,作為每個樣本圖片的特征向量,有有多少個樣本圖片,就可以獲得多少個特征向量。
然后再通過樣本訓練,根據(jù)樣本數(shù)據(jù)的特征向量和每個特征向量所對應的圖片類型(360度全景圖片或者非360度全景圖片),獲取區(qū)分360度全景圖片特征和非360度全景圖片特征的支持向量數(shù)據(jù),該支持向量數(shù)據(jù)是通過若干個已經圖片類型的樣本圖片獲得的,可以更加準確的區(qū)分360度全景圖片和非360度全景圖片。
步驟S130,采用與獲取每個樣本圖片的特征向量相同的方式獲取所述待識別圖片的特征向量。
為了利用樣本訓練得到的支持向量數(shù)據(jù)進行待識別圖片的識別,需要采用與獲取每個樣本圖片的特征向量相同的方式獲取待識別圖片的特征向量。
步驟S140,判斷所述待識別圖片的特征向量是否符合支持向量數(shù)據(jù)中的360度全景圖片特征;若判斷為是,則確定待識別圖片為360度全景圖片,否則為非360度全景圖片。
獲得待識別圖片的特征向量后,通過支持向量數(shù)據(jù),就可以自動判斷出待識別圖片是否是360度全景圖片。
可見,本發(fā)明是綜合若干個圖片類型已知的圖片特征獲得支持向量數(shù)據(jù)后,再進一步判斷待識別圖片的特征向量是否符合360度全景圖片特征,實現(xiàn)待識別圖片的自動識別,并非簡單的比較待識別圖片自身的像素點的顏色值,判斷準確性高,進而根據(jù)識別結果選擇對應的圖片播放工具,提升用戶體驗。
在本發(fā)明的一個實施例中,步驟S120中的通過樣本訓練獲取區(qū)分360度全景圖片特征和非360度全景圖片特征的支持向量數(shù)據(jù)包括如下步驟:
(1)定義特征矩陣,特征矩陣的行數(shù)為所有樣本圖片的個數(shù),列數(shù)為樣本圖片的特征向量的維數(shù);將所有所述樣本圖片的特征向量依次放入所述特征矩陣。
例如,定義特征矩陣為“Mat trainFeatureMat”,存入所有樣本圖片的特征向量。所有樣本圖片的個數(shù)為100個,每個樣本圖片的特征向量的維數(shù),即每個特征向量區(qū)分的色差值的個數(shù)為25個,則特征矩陣的行數(shù)為100行,每一行代表一個樣品圖片,且每個樣本圖片都有其唯一的標識;特征矩陣的列數(shù)為25列,每一列代表一個特征向量中的色差值。
(2)定義分類標號矩陣,所述分類標號矩陣的行數(shù)為所有樣本圖片的個數(shù),列數(shù)為1,其值取1或-1,其中1表示360度全景圖片,-1表示非360度全景圖片;對放入所述特征矩陣中的每個樣本圖片,在所述分類標號矩陣中依次標識所述樣本圖片所屬圖片類型的值。
例如,定義分類標號矩陣“Mat trainLabelMat”,存入所有樣本圖片的類別,這里的樣本圖片的類別是360度全景圖片,可用“1”表示;或非360度全景圖片,可用“-1”表示。
因為每個樣本圖片都有唯一的標識,在定義分類標號矩陣中每個圖片對應唯一的樣本圖片的類別。在一個具體的例子中,對于一個樣本圖片是360度全景圖片,其唯一標識是樣本圖片1,在定義分類標號矩陣中的其中一行的兩列中,其中一列存入的是樣本圖片1,另一列是“1”;對于另一個樣本圖片是非360度全景圖片,其唯一標識是樣本圖片2,在定義分類標號矩陣中的其中一行的兩列中,其中一列存入的是樣本圖片2,另一列是“-1”。
分類標號矩陣中也可只包含一列用來標識樣本圖片所屬圖片類型的值,其每一行代表的樣本圖片需與特征向量中的每一行代表的樣本圖片一一對應。在一個具體的例子中,在特征矩陣中的第1行存入的是圖片1的特征向量,且圖片1是360度全景圖片,那么在分類標號矩陣中的第1行存入的是標識圖片1的所屬圖片類型的值“1”;在特征矩陣中的第3行存入的是圖片3的特征向量,且圖片3是非360度全景圖片,那么在分類標號矩陣中的第3行存入的是標識圖片3的所屬圖片類型的值“-1”。
(3)根據(jù)所述特征矩陣和所述分類標號矩陣,利用機器學習的方法獲取區(qū)分360度全景圖片特征和非360度全景圖片特征的支持向量數(shù)據(jù)。
在本發(fā)明的一個實施例中,步驟S120中的獲取每個樣本圖片的特征向量包括:
(1)對每個樣本圖片,分別獲取左側C列與右側C列的每個像素點的顏色值,其中C取值為大于等于1的自然數(shù)。
例如,獲取左側2列和右側2列的每個像素點的顏色值,那么獲得的像素點的個數(shù)就是左側2*H個,右側2*H個。
(2)對相對圖片中間線對稱的每對像素點分別計算色差值。
如上述例子中,獲取的左側的像素點的第一列的像素點顏色值記為L11、L12、...、L1H,第二列的像素點顏色值記為L21、L22、...、L2H;右側的像素點的第一列的像素點顏色值記為R11、R12、...,R1H,第二列的像素點顏色值記為R21、R22、...、R2H。那么,相對圖片中間線對稱的每對像素點分別計算色差值是:L11-R11,L12-R12,...,L1H-R1H;以及L21-R21,L22-R22,...,L2H-R2H。
(3)從所有色差值中等間距地選取出預定數(shù)量N個色差值,將所述N個色差值構成色差向量。
為了最大程度上獲得樣本圖片的像素點差值的整體分布情況,且還需要考慮程序運行的速度,本實施例,是通過等間距地選取的方法,在選取的每一列色差值中等間距的選取N/C個色差值,并將所有選取出來的N個色差值色差值構成色差向量。這里的預定數(shù)量是人工設定的,例如可以設定為200個。
在一個具體的例子中,預定數(shù)量為400個,第一列色差值為L11-R11,L12-R12,...,L1H-R1H,第二列色差值為L21-R21,L22-R22,...,L2H-R2H。那么就分別從第一列和第二列的色差值中等間距地選取200個色差值,構成該樣本圖片的色差向量,該色差向量的維數(shù)是400,即色差向量中的色差值的個數(shù)是400個。
(4)根據(jù)所述色差向量得到每個樣本圖片的特征向量,所述特征向量的維數(shù)為N。
在本發(fā)明的一個實施例中,將C取值等于1;即分別獲取左側1列與右側1列的每個像素點的顏色值。
那么前一個實施例的(1)中的對每個樣本圖片,分別獲取左側C列與右側C列的每個像素點的顏色值包括:
分別獲取每個樣本圖片的第一列和最后一列的每個像素點的顏色值,即獲取每個像素點的顏色值用每個像素點的R值、G值和B值進行表示。RGB是一種顏色標準,R(Red)代表紅色,G(Green)代表綠色,B(Blue)代表藍色,圖片中的所有顏色,都由上述這三種顏色色光按照不同的比例混合而成,每種顏色都可以通過R值、G值和B值進行表示。本實施例中,獲得每個樣本圖片的像素點的顏色值就是獲得每個像素點的R值、G值和B值。
得到每個樣本圖片的第一列像素點的顏色值為:A={{RA1,GA1,BA1},{RA2,GA2,BA2},{RA3,GA3,BA3}...{RAn,GAn,BAn}};每個樣本圖片的最后一列像素點的顏色值為:B={{RB1,GB1,BB1},{RB2,GB2,BB2},{RB3,GB3,BB3}...{RBn,GBn,BBn}}。
其中,n代表所述樣本圖片的行數(shù),如果圖片的大小為W*H,W為圖片的寬度,H為圖片的高度,那么n=H;An代表第一列第n行的像素點,Bn代表最后一列第n行的像素點。
前一個實施例的(1)中的對相對圖片中間線對稱的每對像素點分別計算色差值包括:
根據(jù)公式計算相對圖片中間線對稱的每對像素點的色差值。
從所有色差值Ci中等間距地選取出預定數(shù)量N個色差值,將所述N個色差值構成色差向量。
前一個實施例的(4)中的根據(jù)所述色差向量得到每個樣本圖片的特征向量包括:根據(jù)N個色差值構成的色差向量C={C1,C2,C3,...,CN}得到每個樣本圖片的特征向量,即將色差向量C作為每個樣本圖片的特征向量。
需要說明的是,獲取所述待識別圖片的特征向量的方法必須與獲取每個樣本圖片的特征向量的方法相同,保證該支持向量數(shù)據(jù)的可用性。
機器學習的方法有很多種,在本發(fā)明的一個實施例中,所述機器學習的方法包括支持向量機算法SVM。
圖3為本發(fā)明一個實施例提供的一種360度全景圖片的識別裝置的示意圖。如圖3所示,該360度全景圖片的識別裝置300包括:
樣本圖片收集單元310,用于收集若干個360度全景圖片和非360度全景圖片作為樣本圖片。
特征向量獲取單元320,用于獲取每個樣本圖片的特征向量;以及采用與獲取每個樣本圖片的特征向量相同的方式獲取所述待識別圖片的特征向量。
支持向量獲取單元330,用于根據(jù)獲取的每個樣本圖片的特征向量,通過樣本訓練獲取區(qū)分360度全景圖片特征和非360度全景圖片特征的支持向量數(shù)據(jù);
判斷單元340,用于判斷所述待識別圖片的特征向量是否符合支持向量數(shù)據(jù)中的360度全景圖片特征;若判斷為是,則確定待識別圖片為360度全景圖片,否則為非360度全景圖片。
在本發(fā)明的一個實施例中,所述支持向量獲取單元330包括:特征矩陣、分類標號矩陣、樣本放入模塊和訓練模塊,
所述特征矩陣的行數(shù)為所有樣本圖片的個數(shù),列數(shù)為樣本圖片的特征向量的維數(shù);
所述分類標號矩陣的行數(shù)為所有樣本圖片的個數(shù),列數(shù)為1,其值取1或-1,其中1表示360度全景圖片,-1表示非360度全景圖片樣;
所述樣本放入模塊,用于將所有所述樣本圖片的特征向量依次放入所述特征矩陣;對放入所述特征矩陣中的每個樣本圖片,在所述分類標號矩陣中依次標識所述樣本圖片所屬圖片類型的值;
所述訓練模塊,用于根據(jù)放入樣本后的所述特征矩陣和所述分類標號矩陣,利用機器學習的方法獲取區(qū)分360度全景圖片和非360度全景圖片的支持向量數(shù)據(jù)。
在本發(fā)明的一個實施例中,所述特征向量獲取單元320包括:
顏色值獲取模塊,用于對每個樣本圖片或所述待識別圖片,分別獲取左側C列與右側C列的每個像素點的顏色值,其中C取值為大于等于1自然數(shù);
色差值計算模塊,用于對相對圖片中間線對稱的每對像素點分別計算色差值;
色差向量構成模塊,用于從所有色差值中等間距地選取出預定數(shù)量N個色差值,將所述N個色差值構成色差向量;
特征向量獲取模塊,用于根據(jù)所述色差向量得到每個樣本圖片的特征向量,所述特征向量的維數(shù)為N。
在本發(fā)明的一個實施例中,C取值等于1;
所述顏色值獲取模塊,具體用于分別獲取每個樣本圖片的第一列和最后一列的每個像素點的顏色值,得到每個樣本圖片的第一列像素點的顏色值為:A={{RA1,GA1,BA1},{RA2,GA2,BA2},{RA3,GA3,BA3}...{RAn,GAn,BAn}};每個樣本圖片的最后一列像素點的顏色值為:B={{RB1,GB1,BB1},{RB2,GB2,BB2},{RB3,GB3,BB3}...{RBn,GBn,BBn}};其中n代表所述樣本圖片的行數(shù),An代表第一列第n行的像素點,Bn代表最后一列第n行的像素點;
所述色差值計算模塊,具體用于根據(jù)公式計算相對圖片中間線對稱的每對像素點的色差值;
所述特征向量獲取模塊,具體用于根據(jù)N個色差值構成的色差向量C={C1,C2,C3,...,CN}得到每個樣本圖片的特征向量。
在本發(fā)明的一個實施例中,所述機器學習的方法包括支持向量機算法SVM。
需要說明的是,圖3所示裝置的各實施例與圖2所示方法的各實施例對應相同,上文已有詳細說明,在此不再贅述。
綜上所述,本發(fā)明首先收集若干個360度全景圖片和非360度全景圖片作為樣本圖片,獲取每個樣本圖片的特征向量,通過樣本訓練以得到區(qū)分360度全景圖片特征和非360度全景圖片特征的支持向量數(shù)據(jù),然后采用與獲取每個樣本圖片的特征向量相同的方式獲取待識別圖片的特征向量,再根據(jù)該支持向量數(shù)據(jù)判斷待識別圖片的特征向量是否符合360度全景圖片特征;若判斷為是,則確定待識別圖片為360度全景圖片??梢?,本發(fā)明是綜合若干個圖片類型已知的圖片特征獲得支持向量數(shù)據(jù)后,再進一步判斷待識別圖片的特征向量是否符合360度全景圖片特征,實現(xiàn)待識別圖片的自動識別,并非簡單的比較待識別圖片自身的像素點的顏色值,判斷準確性高,進而根據(jù)識別結果選擇對應的圖片播放工具,提升用戶體驗。
以上所述,僅為本發(fā)明的具體實施方式,在本發(fā)明的上述教導下,本領域技術人員可以在上述實施例的基礎上進行其他的改進或變形。本領域技術人員應該明白,上述的具體描述只是更好的解釋本發(fā)明的目的,本發(fā)明的保護范圍應以權利要求的保護范圍為準。