[VR] VR視頻類型識(shí)別

目前通過圖像識(shí)別的方式區(qū)分視頻類型,并已完成應(yīng)用層的實(shí)現(xiàn),識(shí)別率很高

相比通過獲取視頻文件特征標(biāo)識(shí)的方式?

優(yōu)點(diǎn):

1.不用修改系統(tǒng)的MediaScanner?所以不用升級(jí)系統(tǒng)

2.視頻文件中一般只有mp4文件有metadata?其中box和uuid之類的特征標(biāo)識(shí)并沒有標(biāo)準(zhǔn)行業(yè)規(guī)范 所以通過圖像識(shí)別的方式 沒有文件格式和視頻編解碼的限制

缺點(diǎn):

1.比獲取視頻文件特征標(biāo)識(shí)的方式速度慢

基本思路

1.對(duì)一個(gè)視頻 根據(jù)播放時(shí)長(zhǎng)平均取若干幀圖像 根據(jù)每幀圖像識(shí)別后 返回的類型 做加權(quán) 最后權(quán)值大于40%?則為該類型

2.判斷流程:

先判斷左右眼3d? --- true ---?返回3d類型 --- false ---?

判斷上下眼3d --- true ---?返回3d類型--- false ---?

判斷全景?--- true ---?返回全景--- false --- 返回2d

3.判斷左右眼3d:取圖像最中間一列像素 作為基準(zhǔn)線 判斷該列和其右邊一列是否有連續(xù)性 如果不連續(xù) 則為左右眼3d

但很多3d視頻左右眼寬度不相等 所以一次判斷不是 還需要多判斷幾次 即左右各移動(dòng)兩次 每次移動(dòng)一列

4.判斷上下眼3d:取圖像最中間一行像素 作為基準(zhǔn)線 判斷該行和其下面一行是否有連續(xù)性 如果不連續(xù) 則為上下眼3d

但很多3d視頻上下眼高度不相等 所以一次判斷不是 還需要多判斷幾次 即上下各移動(dòng)兩次 每次移動(dòng)一行

5.判斷全景視頻:由于全景視頻是360度的 所以圖像最左邊一列(第0列)和最右邊一列(第n-1列) 必然可以連接起來 所以判斷這兩列是否有連續(xù)性 如果連續(xù) 則為全景視頻

后面發(fā)現(xiàn)還存在如下問題

1.視頻取幀速度慢 取一幀需要幾百毫秒 所以性能瓶頸不在算法的時(shí)間復(fù)雜度 而是調(diào)用系統(tǒng)函數(shù)取視頻幀慢

2.加權(quán)閥值40%?不合適 如果取兩幀 則權(quán)重閥值為0了 至少應(yīng)為50%?取幀的數(shù)量會(huì)影響耗時(shí)

3.如果視頻有片頭或片尾 比如黑色畫面 顯示演員列表之類的 對(duì)于圖像判斷連續(xù)性及加權(quán)結(jié)果 有很大影響

4.無論左右眼還是上下眼3d?很多視頻 中間會(huì)有間隙或黑線 視頻分辨率越高則間隙或黑線所占像素的行列越多 所以僅僅移動(dòng)像素行列兩次 是沒用的

5.視頻畫面很暗 則對(duì)判斷像素的連續(xù)性 有影響

我的解決辦法及優(yōu)化

1.跳過視頻時(shí)長(zhǎng)的前后10%的時(shí)間段 認(rèn)為是片頭或片尾 對(duì)視頻中間的時(shí)間段取幀

2.取10幀或者取1幀 其實(shí)大部分情況下 在圖像上的特征沒有區(qū)別?3d視頻左右或上下有對(duì)稱性 全景最左和最右可以連接起來 所以只取1幀 不考慮加權(quán) 耗時(shí)減少一個(gè)量級(jí)

3.在不影響識(shí)別結(jié)果的情況下 對(duì)原始的視頻幀圖像進(jìn)行等比例壓縮 減少實(shí)時(shí)的內(nèi)存占用 更少的像素判斷次數(shù) 耗時(shí)減少

4.每個(gè)視頻文件 不用每次應(yīng)用啟動(dòng)都進(jìn)行識(shí)別 可以緩存文件的hash值和視頻類型的識(shí)別結(jié)果 后面啟動(dòng)不需要再識(shí)別之前已經(jīng)識(shí)別過的視頻文件 只需讀取緩存過的識(shí)別結(jié)果

5.判斷左右眼3d改為: 取左右眼各自區(qū)域圖像的最中間一列像素 判斷兩列像素是否有連續(xù)性 如果連續(xù) 即說明圖像對(duì)稱 則為左右眼3d?但很多3d視頻左右眼寬度不相等 所以一次判斷不是 還需要多判斷幾次 即右眼區(qū)域圖像左右各移動(dòng)兩次 每次移動(dòng)一列 這樣就不需要判斷取圖像中間列 即不存在有黑線和間隙的問題

6.判斷上下眼3d改為: 取上下眼各自區(qū)域圖像的最中間一行像素 判斷兩行像素是否有連續(xù)性 如果連續(xù) 即說明圖像對(duì)稱 則為上下眼3d?但很多3d視頻上下眼高度不相等 所以一次判斷不是 還需要多判斷幾次 即下眼區(qū)域圖像上下各移動(dòng)兩次 每次移動(dòng)一行 這樣就不需要判斷取圖像最中間行 即不存在有黑線和間隙的問題

目前依然存在的問題

1.視頻畫面很暗 則對(duì)判斷像素的連續(xù)性 有影響

2.經(jīng)測(cè)試 調(diào)用系統(tǒng)函數(shù)對(duì)視頻取幀 在樂視X2和S2的安卓6.0以上 存在兼容性問題

還需要做的優(yōu)化

1.不用系統(tǒng)函數(shù)對(duì)視頻取幀 改用第三方FFMPEG編解碼庫 并將其中取幀的部分提取出來 提高取幀速度

Q : 如何判斷兩列(行)像素連續(xù)性或相似性

A :?

1.依次取出該列(行)的像素顏色值 對(duì)顏色值做位運(yùn)算(要考慮各通道占位ARGB8888、RGB565、RGB444) 取出RGB三通道的值 兩列(行)相同索引像素的RGB值分別求均值(兩列或行差值的絕對(duì)值累加求和/該列或行的像素?cái)?shù)) 取RGB三通道中的最大均值

2.同上 再對(duì)RGB三通道分別求方差(( 兩列或行差值的絕對(duì)值-兩列或行的均值)的平方的累加求和/該列或行的像素?cái)?shù)) 取RGB三通道中的最大方差

3.求出的最大均值或最大方差 若超過閥值 則說明無連續(xù)性或低相似性

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ### YUV顏色空間 視頻是由一幀一幀的數(shù)據(jù)連接而成,而一幀視頻數(shù)據(jù)其實(shí)就是一張圖片。 yuv是一種圖片儲(chǔ)存格式...
    天使君閱讀 3,671評(píng)論 0 4
  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 10,542評(píng)論 0 13
  • 音視頻 (一) —— H.264 中的 NAL 技術(shù)[http://www.itdecent.cn/p/7b73...
    HookLee閱讀 1,966評(píng)論 1 2
  • 卷首語 歡迎來到 objc.io 的第三期! 這一期都是關(guān)于視圖層的。當(dāng)然視圖層有很多方面,我們需要把它們縮小到幾...
    評(píng)評(píng)分分閱讀 1,931評(píng)論 0 18
  • 不知你是否有相同的感覺,當(dāng)路過某條小巷,某個(gè)小攤的旁邊,記憶里總會(huì)翻涌起一些美好回憶,那些積累在童年,沉淀在青年,...
    灰叔漫畫閱讀 2,694評(píng)論 4 13

友情鏈接更多精彩內(nèi)容