本發(fā)明涉及可見光通信及視頻處理領(lǐng)域,尤其涉及一種嵌碼視頻中圖形碼的解碼方法及裝置。
背景技術(shù):
可見光通信技術(shù)在日常生活中已經(jīng)非常普遍,尤其是其中的二維碼技術(shù),例如支付寶、微信等移動支付使用的qr(quickresponse,快速反應(yīng))碼,以及電子元件上的datamatrix等都屬于二維碼。二維碼有識別快速、使用方便等優(yōu)點,只需要帶有攝像頭的智能手機就可以使用此類技術(shù)。此外,也可以將變化的二維碼制作成視頻,以連續(xù)不斷地傳輸數(shù)據(jù)。
但二維碼也有以下缺點:首先,二維碼的圖案對人來說沒有意義,屬于噪音;其次,二維碼為了易于識別,需要占據(jù)足夠的視覺空間,這在一些特定場景下難以被滿足;例如,在視頻嵌碼的場景中,如果二維碼占據(jù)足夠的視覺空間,就會導(dǎo)致用戶無法正常觀看視頻,并且qr碼、datamatrix等都不適合于視頻嵌碼的場景。因此,如何在視頻嵌碼的場景中實現(xiàn)不影響用戶觀看視頻的目的成為一項亟待解決的問題。
現(xiàn)有技術(shù)中,采用一種相對人眼隱藏的視頻嵌碼技術(shù)來解決上述問題。具體而言,隨著屏幕與攝像頭技術(shù)更加發(fā)達,120hz幀率/采樣率的屏幕和攝像頭隨之出現(xiàn),且由于人眼最大能感受到的頻率是30hz,根據(jù)奈奎斯特采樣定律,相應(yīng)的采樣率是60hz,這相比120hz少了一半。因此,只要讓待傳輸?shù)膬?nèi)容以60hz的頻率變化,就可以在人眼無法察覺的情況下傳輸信息。然而,上述方法由于兼顧人眼視覺,使得視頻嵌碼中的一些難點(例如投影變形、摩爾紋等)無法很好地解決,從而導(dǎo)致解碼過程很難進行,無法獲取到通過視頻傳輸?shù)臄?shù)據(jù)內(nèi)容。
技術(shù)實現(xiàn)要素:
本申請實施例的目的是提供一種嵌碼視頻中圖形碼的解碼方法及裝置,用以實現(xiàn)對嵌碼視頻中所承載的圖形碼的識別及解碼。
為解決上述技術(shù)問題,本申請實施例是這樣實現(xiàn)的:
一方面,本申請實施例提供一種嵌碼視頻中圖形碼的解碼方法,包括:
從嵌碼視頻中識別出圖形碼所在的目標(biāo)區(qū)域,所述嵌碼視頻中的至少兩個幀圖像承載至少一個圖形碼,所述圖形碼包括編碼屬性塊和數(shù)據(jù)區(qū)域;
根據(jù)所述目標(biāo)區(qū)域確定所述圖形碼的每個碼塊的碼塊顏色;
根據(jù)所述碼塊顏色讀取所述數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù),以及,讀取所述編碼屬性塊中的編碼屬性信息,所述編碼屬性信息包括所述圖形碼對應(yīng)的編碼方式;
根據(jù)所述編碼屬性信息確定針對所述圖形碼的解碼方式,利用所述解碼方式對所述編碼數(shù)據(jù)進行解碼操作,得到所述圖形碼對應(yīng)的原始數(shù)據(jù);
其中,承載同一所述圖形碼的相鄰兩個幀圖像的亮度根據(jù)預(yù)設(shè)調(diào)節(jié)規(guī)則調(diào)節(jié),所述預(yù)設(shè)調(diào)節(jié)規(guī)則包括相鄰兩個幀圖像在同一像素點處的調(diào)節(jié)方式不同、且不同碼塊顏色在同一幀圖像中對應(yīng)的像素點處的調(diào)節(jié)方式不同,所述調(diào)節(jié)方式包括提高亮度和/或降低亮度。
可選地,所述從嵌碼視頻中識別出圖形碼所在的目標(biāo)區(qū)域,包括:
利用指定邊緣檢測算法檢測出所述嵌碼視頻的邊緣,提取所述邊緣中的至少兩條直線段作為所述嵌碼視頻的邊緣線段;
從所述邊緣線段中匹配出至少一個四邊形區(qū)域;
從所述至少一個四邊形區(qū)域中篩選出所述圖形碼所在的目標(biāo)區(qū)域。
可選地,所述圖形碼包括二維碼,所述二維碼的數(shù)據(jù)區(qū)域包括多個子區(qū)域,所述二維碼還包括按照預(yù)設(shè)排列規(guī)則排列各碼塊的特征塊,所述編碼屬性塊環(huán)繞于所述數(shù)據(jù)區(qū)域的外圍,所述特征塊環(huán)繞于所述編碼屬性塊的外圍以及各子區(qū)域的外圍;
從所述至少一個四邊形區(qū)域中篩選出所述圖形碼所在的目標(biāo)區(qū)域,包括:
遍歷所述至少一個四邊形區(qū)域;
在所述遍歷過程中,針對遍歷到的每個所述四邊形區(qū)域,分別計算所述四邊形區(qū)域的每條邊所在位置的相鄰兩個幀圖像的第一灰度差;
根據(jù)所述第一灰度差、所述每條邊上像素點的個數(shù)以及所述特征塊上與所述每條邊對應(yīng)的特征線上的碼塊個數(shù),計算所述每條邊和與其對應(yīng)的特征線的相似度;
對所述每條邊和與其對應(yīng)的特征線的相似度進行求和;
當(dāng)所述求和結(jié)果達到預(yù)設(shè)相似閾值時,確定所述四邊形區(qū)域為所述圖形碼所在的目標(biāo)區(qū)域。
可選地,根據(jù)所述目標(biāo)區(qū)域確定所述圖形碼的每個碼塊的碼塊顏色,包括:
根據(jù)所述目標(biāo)區(qū)域的多個頂點的坐標(biāo)以及所述幀圖像中與所述多個頂點對應(yīng)的點的坐標(biāo),計算所述幀圖像相對于所述二維碼的投影變換矩陣;
根據(jù)所述投影變換矩陣對所述幀圖像執(zhí)行投影變換恢復(fù)操作,得到所述投影變換恢復(fù)后的幀圖像;
針對所述投影變換恢復(fù)后的幀圖像上的各像素點,分別計算所述各像素點處的相鄰兩個幀圖像的第二灰度差;
根據(jù)所述第二灰度差以及所述特征塊中各碼塊的位置信息,確定所述各像素點對應(yīng)的碼塊顏色。
可選地,根據(jù)所述第二灰度差以及所述特征塊中各碼塊的位置信息,確定所述各像素點對應(yīng)的碼塊顏色,包括:
根據(jù)所述預(yù)設(shè)排列規(guī)則,確定至少一個黑色碼塊和至少一個白色碼塊在所述特征塊中的位置信息;
根據(jù)所述位置信息分別計算所述黑色碼塊和所述白色碼塊處的相鄰兩個幀圖像的灰度差,作為兩個標(biāo)準灰度差;
分別比較所述第二灰度差和所述兩個標(biāo)準灰度差之間的接近度,將與所述第二灰度差之間接近度較高的標(biāo)準灰度差對應(yīng)的碼塊顏色確定為所述第二灰度差對應(yīng)的像素點處的碼塊顏色。
可選地,根據(jù)所述碼塊顏色讀取所述數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù),包括:
分別確定所述相鄰兩個幀圖像上各像素點對應(yīng)的碼塊的中心區(qū)域,所述中心區(qū)域小于所述碼塊的區(qū)域;
計算所述中心區(qū)域內(nèi)各像素點對應(yīng)的所述第二灰度差的平均值;
根據(jù)所述碼塊顏色對所述平均值執(zhí)行取正運算或取負運算,將所述運算后的平均值確定為所述中心區(qū)域?qū)?yīng)的碼塊的編碼數(shù)據(jù)。
可選地,所述子區(qū)域包括m個,所述編碼方式包括交織算法,所述交織算法指依序?qū)⒁唤Mm個編碼數(shù)據(jù)分別填充至各子區(qū)域的第一位置、再將下一組m個編碼數(shù)據(jù)分別填充至各子區(qū)域的與所述第一位置相鄰的第二位置;
利用所述解碼方式對所述編碼數(shù)據(jù)進行解碼操作,包括:
根據(jù)所述碼塊顏色以及所述預(yù)設(shè)排列規(guī)則,確定所述特征塊在所述二維碼中的位置信息,根據(jù)所述位置信息確定所述m個子區(qū)域在所述數(shù)據(jù)區(qū)域中的分布信息;
根據(jù)所述分布信息,依序從所述m個子區(qū)域的第三位置讀取m個所述編碼數(shù)據(jù),得到包含所述m個編碼數(shù)據(jù)的子數(shù)據(jù)流;
依序從所述m個子區(qū)域的第四位置讀取m個所述編碼數(shù)據(jù),直至讀取完所述m個子區(qū)域中所有位置的編碼數(shù)據(jù),以獲得多個子數(shù)據(jù)流,所述第四位置與其所在的子區(qū)域中的所述第三位置相鄰;
按照所述m個子區(qū)域的排列順序依次組合所述多個子數(shù)據(jù)流,得到所述編碼數(shù)據(jù)序列,繼續(xù)對所述編碼數(shù)據(jù)序列進行解碼操作。
可選地,所述編碼方式還包括里德-所羅門編碼和卷積碼,所述編碼屬性信息還包括所述編碼方式及其糾錯等級、糾錯位、校驗位、數(shù)據(jù)長度中的至少一項;
對所述編碼數(shù)據(jù)序列進行解碼操作,包括:
根據(jù)所述卷積碼對應(yīng)的解碼方式以及所述卷積碼對應(yīng)的糾錯等級,對所述編碼數(shù)據(jù)序列進行解碼操作,得到二進制數(shù)據(jù)序列;
根據(jù)所述里德-所羅門編碼對應(yīng)的解碼方式以及所述里德-所羅門編碼對應(yīng)的糾錯等級,對所述二進制數(shù)據(jù)序列進行解碼操作,得到所述原始數(shù)據(jù)。
可選地,根據(jù)所述碼塊顏色讀取所述數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù)之后,所述方法還包括:
根據(jù)所述預(yù)設(shè)排列規(guī)則確定所述特征塊中被卷簾快門效應(yīng)導(dǎo)致反色的待修正碼塊;將所述待修正碼塊對應(yīng)的編碼數(shù)值進行正負反轉(zhuǎn)操作,得到修正后的編碼數(shù)據(jù);將所述修正后的編碼數(shù)據(jù)映射至預(yù)設(shè)區(qū)間內(nèi),得到歸一化的編碼數(shù)據(jù);
相應(yīng)地,利用所述解碼方式對所述編碼數(shù)據(jù)進行解碼操作,包括:
利用所述解碼方式對所述歸一化的編碼數(shù)據(jù)進行解碼操作。
另一方面,本申請實施例提供一種嵌碼視頻中圖形碼的解碼裝置,包括:
識別模塊,用于從嵌碼視頻中識別出圖形碼所在的目標(biāo)區(qū)域,所述嵌碼視頻中的至少兩個幀圖像承載至少一個圖形碼,所述圖形碼包括編碼屬性塊和數(shù)據(jù)區(qū)域;
確定模塊,用于根據(jù)所述目標(biāo)區(qū)域確定所述圖形碼的每個碼塊的碼塊顏色;
讀取模塊,用于根據(jù)所述碼塊顏色讀取所述數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù),以及,讀取所述編碼屬性塊中的編碼屬性信息,所述編碼屬性信息包括所述編碼信息對應(yīng)的編碼方式;
解碼模塊,用于根據(jù)所述編碼屬性信息確定針對所述圖形碼的解碼方式,利用所述解碼方式對所述編碼數(shù)據(jù)進行解碼操作,得到所述圖形碼對應(yīng)的原始數(shù)據(jù);
其中,承載同一所述圖形碼的相鄰兩個幀圖像的亮度根據(jù)預(yù)設(shè)調(diào)節(jié)規(guī)則調(diào)節(jié),所述預(yù)設(shè)調(diào)節(jié)規(guī)則包括相鄰兩個幀圖像在同一像素點處的調(diào)節(jié)方式不同、且不同碼塊顏色在同一幀圖像中對應(yīng)的像素點處的調(diào)節(jié)方式不同,所述調(diào)節(jié)方式包括提高亮度和/或降低亮度。
采用本發(fā)明實施例的技術(shù)方案,通過從嵌碼視頻中識別出圖形碼所在的目標(biāo)區(qū)域,根據(jù)目標(biāo)區(qū)域確定圖形碼中每個碼塊的碼塊顏色,進而根據(jù)碼塊顏色讀取出數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù)以及編碼屬性塊中的編碼屬性信息,最后根據(jù)編碼屬性信息確定正確的解碼方式,并根據(jù)該解碼方式對編碼數(shù)據(jù)進行解碼操作,以得到圖形碼對應(yīng)的原始數(shù)據(jù)。因此,該技術(shù)方案能夠從嵌碼視頻中識別并獲取到圖形碼對應(yīng)的原始數(shù)據(jù),解決了現(xiàn)有技術(shù)中無法針對嵌碼視頻中的圖形碼進行解碼的問題。
附圖說明
為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是根據(jù)本發(fā)明實施例的一種嵌碼視頻中圖形碼的解碼方法的示意性流程圖;
圖2是根據(jù)本發(fā)明實施例的一種二維碼的示意性結(jié)構(gòu)圖;
圖3是根據(jù)本發(fā)明實施例的一種二維碼中編碼屬性塊的示意性結(jié)構(gòu)圖;
圖4是根據(jù)本發(fā)明實施例的一種嵌碼視頻中圖形碼的解碼裝置的示意性框圖;
圖5是根據(jù)本發(fā)明實施例的另一種嵌碼視頻中圖形碼的解碼裝置的示意性框圖。
具體實施方式
本申請實施例提供一種嵌碼視頻中圖形碼的解碼方法及裝置。
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請中的技術(shù)方案,下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本申請保護的范圍。
圖1是根據(jù)本發(fā)明實施例的一種嵌碼視頻中圖形碼的解碼方法的示意性流程圖,如圖1所示,該方法包括以下步驟s101-s104:
步驟s101,從嵌碼視頻中識別出圖形碼所在的目標(biāo)區(qū)域,嵌碼視頻中的至少兩個幀圖像承載至少一個圖形碼,圖形碼包括編碼屬性塊和數(shù)據(jù)區(qū)域。其中,圖形碼可以是能夠被識別的條形碼、二維碼、圖片等。
步驟s102,根據(jù)目標(biāo)區(qū)域確定圖形碼的每個碼塊的碼塊顏色。
步驟s103,根據(jù)碼塊顏色讀取數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù),以及,讀取編碼屬性塊中的編碼屬性信息,編碼屬性信息包括圖形碼對應(yīng)的編碼方式。
步驟s104,根據(jù)編碼屬性信息確定針對圖形碼的解碼方式,利用解碼方式對編碼數(shù)據(jù)進行解碼操作,得到圖形碼對應(yīng)的原始數(shù)據(jù)。
其中,承載同一圖形碼的相鄰兩個幀圖像的亮度根據(jù)預(yù)設(shè)調(diào)節(jié)規(guī)則調(diào)節(jié),預(yù)設(shè)調(diào)節(jié)規(guī)則包括相鄰兩個幀圖像在同一像素點處的調(diào)節(jié)方式不同、且不同碼塊顏色在同一幀圖像中對應(yīng)的像素點處的調(diào)節(jié)方式不同,調(diào)節(jié)方式包括提高亮度和/或降低亮度。
本實施例中,嵌碼視頻中承載同一圖形碼的相鄰兩個幀圖像的亮度的調(diào)節(jié)方式包括但不限于以下兩種方式:
方式一、當(dāng)碼塊顏色為黑色時,提高相鄰兩個幀圖像中的前一幀在該碼塊顏色對應(yīng)的像素點處的亮度,降低相鄰兩個幀圖像中的后一幀在該碼塊顏色對應(yīng)的像素點處的亮度;當(dāng)碼塊顏色為白色時,降低相鄰兩個幀圖像中的前一幀在該碼塊顏色對應(yīng)的像素點處的亮度,提高相鄰兩個幀圖像中的后一幀在該碼塊顏色對應(yīng)的像素點處的亮度。
方式二、當(dāng)碼塊顏色為黑色時,降低相鄰兩個幀圖像中的前一幀在該碼塊顏色對應(yīng)的像素點處的亮度,提高相鄰兩個幀圖像中的后一幀在該碼塊顏色對應(yīng)的像素點處的亮度;當(dāng)碼塊顏色為白色時,提高相鄰兩個幀圖像中的前一幀在該碼塊顏色對應(yīng)的像素點處的亮度,降低相鄰兩個幀圖像中的后一幀在該碼塊顏色對應(yīng)的像素點處的亮度。
采用本發(fā)明實施例的技術(shù)方案,通過從嵌碼視頻中識別出圖形碼所在的目標(biāo)區(qū)域,根據(jù)目標(biāo)區(qū)域確定圖形碼中每個碼塊的碼塊顏色,進而根據(jù)碼塊顏色讀取出數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù)以及編碼屬性塊中的編碼屬性信息,最后根據(jù)編碼屬性信息確定正確的解碼方式,并根據(jù)該解碼方式對編碼數(shù)據(jù)進行解碼操作,以得到圖形碼對應(yīng)的原始數(shù)據(jù)。因此,該技術(shù)方案能夠從嵌碼視頻中識別并獲取到圖形碼對應(yīng)的原始數(shù)據(jù),解決了現(xiàn)有技術(shù)中無法針對嵌碼視頻中的圖形碼進行解碼的問題。
以下針對上述步驟s101-s104進行詳細說明。
首先執(zhí)行步驟s101,即從嵌碼視頻中識別出圖形碼所在的目標(biāo)區(qū)域。在一個實施例中,圖形碼的編碼圖案被嵌入了整個視頻,也就是說,當(dāng)播放嵌碼視頻時,由于嵌碼視頻一般會充滿整個屏幕,那么圖形碼也會充滿整個屏幕。這種情況下,只要確定出嵌碼視頻的邊緣,即可識別出圖形碼所在的目標(biāo)區(qū)域。因此,可通過以下步驟a1-a3識別目標(biāo)區(qū)域:
步驟a1,利用指定邊緣檢測算法檢測出嵌碼視頻的邊緣,提取邊緣中的至少兩條直線段作為嵌碼視頻的邊緣線段。其中,指定邊緣檢測算法可以是任一種邊緣檢測算法,例如邊緣算子法、曲線擬合法、模板匹配法、小波包的邊緣檢測法、基于神經(jīng)網(wǎng)絡(luò)的邊緣檢測算法等。由于邊緣檢測算法為現(xiàn)有技術(shù),因此不再贅述。
步驟a2,從邊緣線段中匹配出至少一個四邊形區(qū)域。
從邊緣線段中匹配四邊形區(qū)域的方法有多種,以下列舉兩種實現(xiàn)方式:
方式一、首先,將相互平行、且相應(yīng)端點在嵌碼視頻中的橫坐標(biāo)或縱坐標(biāo)相同的每兩條邊緣線段進行配對,得到至少一對線段對。具體地,對于相互平行的左右兩條邊緣線段,當(dāng)相應(yīng)端點在嵌碼視頻中的縱坐標(biāo)相同時,這兩條邊緣線段即可配對;對于相互平行的上下兩條邊緣線段,當(dāng)相應(yīng)端點在嵌碼視頻中的橫坐標(biāo)相同時,這兩條邊緣線段即可配對。其次,針對每一對線段對,分別連接線段對中的每條邊緣線段的四個端點,得到至少一個四邊形區(qū)域。
方式二、首先,根據(jù)預(yù)設(shè)的至少一個參數(shù)對多條邊緣線段進行聚類,其中,參數(shù)如:邊緣線段的端點位置、長度、方向等。其次,將屬于同一類別的邊緣線段進行兩兩配對,并連接相互配對的每兩條邊緣線段的四個端點,得到至少一個四邊形區(qū)域。
步驟a3,從至少一個四邊形區(qū)域中篩選出圖形碼所在的目標(biāo)區(qū)域。由于配對后產(chǎn)生的四邊形區(qū)域內(nèi)并不一定都存在編碼,因此還需從至少一個四邊形區(qū)域中篩選出圖形碼所在的目標(biāo)區(qū)域。
在一個實施例中,圖形碼為二維碼,二維碼的數(shù)據(jù)區(qū)域包括多個子區(qū)域,二維碼除包括編碼屬性塊和數(shù)據(jù)區(qū)域之外,還包括按照預(yù)設(shè)排列規(guī)則排列各碼塊的特征塊,其中,編碼屬性塊環(huán)繞于數(shù)據(jù)區(qū)域的外圍,特征塊環(huán)繞于編碼屬性塊的外圍以及各子區(qū)域的外圍。圖2所示為本實施例中一種二維碼的示意性結(jié)構(gòu)圖。在圖2中,二維碼包括純黑特征線20、按照預(yù)設(shè)排列規(guī)則排列各碼塊的特征塊21、編碼屬性塊22以及數(shù)據(jù)區(qū)域23四個部分。在特征塊21部分,預(yù)設(shè)排列規(guī)則為黑白碼塊相間排列。編碼屬性塊22的寬度為p,由p*p的編碼屬性信息重復(fù)填充而成。數(shù)據(jù)區(qū)域23被特征塊21分割為相等大小的m(圖2中所示m=16)塊。圖3所示為本實施例中一種二維碼中編碼屬性塊的示意性結(jié)構(gòu)圖,其中,p=4,最后一位為奇偶校驗位。
以圖2所示的二維碼為例來說明如何從至少一個四邊形區(qū)域中篩選出圖形碼所在的目標(biāo)區(qū)域:
首先,遍歷至少一個四邊形區(qū)域,在該遍歷過程中,針對遍歷到的每個四邊形區(qū)域,分別計算四邊形區(qū)域的每條邊所在位置的相鄰兩個幀圖像的第一灰度差。由于每條邊上具有多個像素點,因此計算出的每條邊對應(yīng)的第一灰度差均有多個值。假設(shè)每條邊上有n個像素點,則每條邊對應(yīng)的第一灰度差可記為g1,g2,…,gn。
其次,根據(jù)第一灰度差、每條邊上像素點的個數(shù)以及特征塊上與每條邊對應(yīng)的特征線上的碼塊個數(shù),計算每條邊和與其對應(yīng)的特征線的相似度。其中,特征線記為特征塊的邊緣線,每條邊對應(yīng)的特征線即為特征塊上與該條邊位置相應(yīng)(或相同)的特征線。沿用上述的示例,每條邊上像素點的個數(shù)為n,每條邊對應(yīng)的第一灰度差為g1,g2,…,gn,假設(shè)每條邊對應(yīng)的特征線上的碼塊個數(shù)為k,則可根據(jù)下述公式(1)計算每條邊和與其對應(yīng)的特征線的相似度s。
此外,對于四邊形區(qū)域的左右兩條邊,由于視頻拍攝過程中的卷簾快門效應(yīng)可能會導(dǎo)致邊的上半部分和下半部分屬于不同幀,例如,假設(shè)該條邊的分辨率為n,卷簾快門效應(yīng)使得在該條邊的j處及以下部分實際上拍攝到了下一幀。因此,對于左右兩條邊,通??衫孟率龉?2)計算每條邊和與其對應(yīng)的特征線的相似度s。
此外,由于實際場景中無法事先得知卷簾快門效應(yīng)位置j的值,因此這種情況下可利用下述公式(3)計算每條邊和與其對應(yīng)的特征線的相似度s。
再次,對每條邊和與其對應(yīng)的特征線的相似度進行求和。
最后,當(dāng)求和結(jié)果達到預(yù)設(shè)相似閾值時,確定四邊形區(qū)域為圖形碼所在的目標(biāo)區(qū)域。例如,預(yù)設(shè)相似閾值為90%,則當(dāng)求和結(jié)果達到90%時,可確定四邊形區(qū)域為圖形碼所在的目標(biāo)區(qū)域;否則,確定四邊形區(qū)域內(nèi)不存在圖形碼。
在一個實施例中,執(zhí)行步驟s101之后,可消除目標(biāo)區(qū)域內(nèi)的幀圖像的摩爾紋。本實施例使用高斯模糊來消除幀圖像的摩爾紋,即通過一個低通濾波器。其中,低通濾波器的截止頻率可根據(jù)摩爾紋頻率及幀圖像的頻率進行設(shè)定,以使幀圖像中的摩爾紋能夠被消除、且圖形碼不會被消除掉。
從嵌碼視頻中識別出圖形碼所在的目標(biāo)區(qū)域之后,或者,消除目標(biāo)區(qū)域內(nèi)的幀圖像的摩爾紋之后,繼續(xù)執(zhí)行上述步驟s102,即根據(jù)目標(biāo)區(qū)域確定圖形碼的每個碼塊的碼塊顏色。在一個實施例中,仍以二維碼為例,可按照如下步驟b1-b4來確定二維碼的每個碼塊的碼塊顏色:
步驟b1,根據(jù)目標(biāo)區(qū)域的多個頂點的坐標(biāo)以及幀圖像中與多個頂點對應(yīng)的點的坐標(biāo),計算幀圖像相對于二維碼的投影變換矩陣。
該步驟中,以四個頂點為例進行說。針對上一步驟中識別出的目標(biāo)區(qū)域,只需找出四個頂點的坐標(biāo)(xi,yi)即可,其中,i=1、2、3、4,該坐標(biāo)指四個頂點在嵌碼視頻所在的屏幕中的坐標(biāo)。將四個頂點的坐標(biāo)分別記為(0,0),(0,h),(w,0),(w,h),其中,w和h分別代表目標(biāo)區(qū)域的寬和高,單位為圖形碼的碼塊個數(shù)。為了符合實際場景中帶有透視的投影變換,這里需要將坐標(biāo)(x,y)變換為齊次坐標(biāo)系下的(xu,yu,u),其中,u為坐標(biāo)的單位元長度。在齊次坐標(biāo)系下可通過改變u使變換產(chǎn)生透視效果。
假設(shè)四個頂點的坐標(biāo)分別記為x1,x2,x3,x4,幀圖像中與多個頂點對應(yīng)的點的坐標(biāo)分別記為x1′,x2′,x3′,x4′,那么可以列出方程組(4):
uixi′=txi,i=1,2,3,4(4)
其中,t為投影變換矩陣。顯然,方程組(4)中包含12個方程、13個未知數(shù)。然而,根據(jù)齊次坐標(biāo)的定義可知,對于任意k≠0,kt和t都表示同一變換,因此可設(shè)定u1=1,從而減少一個未知量,使方程組(4)可解出投影變換矩陣t。
步驟b2,根據(jù)投影變換矩陣對幀圖像執(zhí)行投影變換恢復(fù)操作,得到投影變換恢復(fù)后的幀圖像。
步驟b3,針對投影變換恢復(fù)后的幀圖像上的各像素點,分別計算各像素點處的相鄰兩個幀圖像的第二灰度差。
步驟b4,根據(jù)第二灰度差以及特征塊中各碼塊的位置信息,確定各像素點對應(yīng)的碼塊顏色。
在一個實施例中,可按照如下步驟確定各像素點對應(yīng)的碼塊顏色:
首先,根據(jù)預(yù)設(shè)排列規(guī)則,確定至少一個黑色碼塊和至少一個白色碼塊在特征塊中的位置信息。該實施例中,預(yù)設(shè)排列規(guī)則為黑白碼塊相間排列,根據(jù)該預(yù)設(shè)排列規(guī)則,即可確定出特征塊中黑色碼塊和白色碼塊的位置。
其次,根據(jù)位置信息分別計算黑色碼塊和白色碼塊處的相鄰兩個幀圖像的灰度差,作為兩個標(biāo)準灰度差。通常情況下,僅需計算任一黑色碼塊處的相鄰兩個幀圖像的灰度差以及任一白色碼塊處的相鄰兩個幀圖像的灰度差即可。
最后,分別比較第二灰度差和兩個標(biāo)準灰度差之間的接近度,將與第二灰度差之間接近度較高的標(biāo)準灰度差對應(yīng)的碼塊顏色確定為第二灰度差對應(yīng)的像素點處的碼塊顏色。
確定出圖形碼的每個碼塊的碼塊顏色之后,繼續(xù)執(zhí)行步驟s103,即根據(jù)碼塊顏色讀取數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù),以及,讀取編碼屬性塊中的編碼屬性信息。該步驟中,由于編碼屬性塊中的信息量有限,因此只需將編碼屬性塊與預(yù)設(shè)的有限種編碼屬性塊的對應(yīng)位進行對比,即可獲知圖形碼中所使用的編碼屬性塊,進而獲知編碼屬性塊中每一信息所在的位置,并根據(jù)該位置從中讀取出編碼屬性信息。在確定圖形碼中所使用的編碼屬性塊時,可分別計算圖形碼中的編碼屬性塊與預(yù)設(shè)的多個有限種編碼屬性塊之間的漢明距離,找出其中最小的漢明距離對應(yīng)的有限種編碼屬性塊,即為圖形碼中所使用的編碼屬性塊。
在一個實施例中,可按照如下步驟c1-c3讀取數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù)
步驟c1,分別確定相鄰兩個幀圖像上各像素點對應(yīng)的碼塊的中心區(qū)域,中心區(qū)域小于碼塊的區(qū)域。其中,中心區(qū)域的區(qū)域形狀不受限定,例如可以為正方形區(qū)域、圓形區(qū)域等。
步驟c2,計算中心區(qū)域內(nèi)各像素點對應(yīng)的第二灰度差的平均值。
步驟c3,根據(jù)碼塊顏色對平均值執(zhí)行取正運算或取負運算,將運算后的平均值確定為中心區(qū)域?qū)?yīng)的碼塊的編碼數(shù)據(jù)。具體地,當(dāng)碼塊顏色為黑色(即對應(yīng)的編碼為1)時,對平均值執(zhí)行取負運算,當(dāng)碼塊顏色為白色(即對應(yīng)的編碼為0)時,對平均值執(zhí)行取正運算?;蛘撸?dāng)碼塊顏色為黑色時,對平均值執(zhí)行取正運算,當(dāng)碼塊顏色為白色時,對平均值執(zhí)行取負運算。
在一個實施例中,讀取到編碼數(shù)據(jù)之后,上述方法還包括以下步驟d1-d3:
步驟d1,根據(jù)預(yù)設(shè)排列規(guī)則確定特征塊中被卷簾快門效應(yīng)導(dǎo)致反色的待修正碼塊。其中,預(yù)設(shè)排列規(guī)則為黑白碼塊相間排列。
如圖2所示的特征塊21中包括多條黑白線,為了確定待修正碼塊,需判斷從哪個位置開始這些黑白線被反色,該位置即為卷簾快門效應(yīng)發(fā)生的位置。假設(shè)n為黑白線上的碼塊個數(shù),g1,g2,…,gn為該黑白線上每個碼塊對應(yīng)的編碼數(shù)據(jù),j為卷簾快門效應(yīng)發(fā)生的位置,那么,可利用下述公式(5)計算卷簾快門效應(yīng)發(fā)生的位置j:
然而,在實際場景中,可能出現(xiàn)j不在實際卷簾快門效應(yīng)發(fā)生的位置上的情況,此時總會有一部分編碼與預(yù)設(shè)的碼塊顏色不符,因此公式(5)計算出的j值總會小于實際卷簾快門效應(yīng)發(fā)生的位置。這種情況下,可利用下述公式(6)計算卷簾快門效應(yīng)發(fā)生的位置j:
經(jīng)上述公式(5)或(6)計算出卷簾快門效應(yīng)發(fā)生的位置j之后,該位置以下的碼塊即為待修正碼塊。
步驟d2,將待修正碼塊對應(yīng)的編碼數(shù)值進行正負反轉(zhuǎn)操作,得到修正后的編碼數(shù)據(jù)。
步驟d3,將修正后的編碼數(shù)據(jù)映射至預(yù)設(shè)區(qū)間內(nèi),得到歸一化的編碼數(shù)據(jù)。
經(jīng)步驟s103讀取到的各碼塊的編碼數(shù)據(jù)的值組成了編碼數(shù)據(jù)矩陣,其中,編碼數(shù)據(jù)的值在矩陣中的位置與該編碼數(shù)據(jù)對應(yīng)的碼塊在二維碼中的位置一致。歸一化的過程實際上是將特征塊中的黑色碼塊或白色碼塊對應(yīng)的編碼數(shù)據(jù)在矩陣中的值作為參考值,進而再利用預(yù)定方式(如插值公式)將編碼數(shù)據(jù)矩陣中的所有編碼數(shù)據(jù)映射到固定區(qū)間內(nèi)。其中,確定參考值的方法為統(tǒng)計特征塊中黑色碼塊或白色碼塊各自的編碼數(shù)據(jù)的值的分布,取各個值的中位數(shù)作為參考值。如果中位數(shù)相同,則可取均值作為參考值。
以預(yù)設(shè)區(qū)間為[0,1]為例,假設(shè)dij為映射前的編碼數(shù)據(jù)的值,r1為黑色碼塊對應(yīng)的參考值,r0為白色碼塊對應(yīng)的參考值,那么,當(dāng)v>1時,映射后的值dij′=1;當(dāng)0≤v≤1時,映射后的值dij′=v;當(dāng)v<0時,映射后的值dij′=0。其中,
在得到歸一化的編碼數(shù)據(jù)后,繼續(xù)執(zhí)行步驟s104,即根據(jù)編碼屬性信息確定針對圖形碼的解碼方式,利用解碼方式對編碼數(shù)據(jù)進行解碼操作,以得到圖形碼對應(yīng)的原始數(shù)據(jù)。在一個實施例中,編碼方式包括交織算法、里德-所羅門編碼和卷積碼,其中,當(dāng)數(shù)據(jù)區(qū)域包括m個子區(qū)域時,交織算法指依序?qū)⒁唤Mm個編碼數(shù)據(jù)分別填充至各子區(qū)域的第一位置、再將下一組m個編碼數(shù)據(jù)分別填充至各子區(qū)域的與第一位置相鄰的第二位置。編碼屬性信息還包括編碼方式及其糾錯等級、糾錯位、校驗位、數(shù)據(jù)長度中的至少一項。那么,可根據(jù)這三種編碼方式對應(yīng)的解碼方式依次對編碼數(shù)據(jù)進行解碼操作。
首先,利用交織算法對應(yīng)的解碼方式對編碼數(shù)據(jù)進行解碼操作,具體解碼操作如下:根據(jù)碼塊顏色以及預(yù)設(shè)排列規(guī)則確定特征塊在二維碼中的位置信息,根據(jù)該位置信息確定m個子區(qū)域在數(shù)據(jù)區(qū)域中的分布信息;根據(jù)該分布信息依序從m個子區(qū)域的第三位置讀取m個編碼數(shù)據(jù),得到包含m個編碼數(shù)據(jù)的子數(shù)據(jù)流;依序從m個子區(qū)域的第四位置讀取m個編碼數(shù)據(jù),直至讀取完m個子區(qū)域中所有位置的編碼數(shù)據(jù),以獲得多個子數(shù)據(jù)流,其中,第四位置與其所在的子區(qū)域中的第三位置相鄰;按照m個子區(qū)域的排列順序依次組合多個子數(shù)據(jù)流,得到編碼數(shù)據(jù)序列,繼續(xù)對編碼數(shù)據(jù)序列進行解碼操作。
舉例而言,如上述圖2所示,m=16,預(yù)設(shè)排列規(guī)則為黑白碼塊相間排列。根據(jù)二維碼中各碼塊的碼塊顏色及預(yù)設(shè)排列規(guī)則,可確定出特征塊21在二維碼中的位置信息,進而根據(jù)特征塊21在二維碼中的位置信息確定出16個子區(qū)域在數(shù)據(jù)區(qū)域中的分布信息(如圖2所示)。從16個子區(qū)域中讀取編碼數(shù)據(jù)時,首先從子區(qū)域1中的第一個位置(即左上角的位置)讀取第1位編碼數(shù)據(jù),然后從子區(qū)域2中的第一個位置(即左上角的位置)讀取第2位編碼數(shù)據(jù),以此類推,直至讀取到子區(qū)域16中的第一個位置(即左上角的位置)的編碼數(shù)據(jù),獲得包含16位編碼數(shù)據(jù)的子數(shù)據(jù)流。然后從子區(qū)域1中的第二個位置(即與第一個位置相鄰的后一個位置)讀取第1位編碼數(shù)據(jù),從子區(qū)域2中的第二個位置(即與第一個位置相鄰的后一個位置)讀取第2位編碼數(shù)據(jù),以此類推,直至讀取到子區(qū)域16中的第二個位置(即與第一個位置相鄰的后一個位置)的編碼數(shù)據(jù),獲得包含16位編碼數(shù)據(jù)的子數(shù)據(jù)流?!源祟愅?,直至讀取完16個子區(qū)域中最后一個位置的編碼數(shù)據(jù)。按照上述讀取方式依次讀取完16個子區(qū)域中的所有編碼數(shù)據(jù)后,按照16個子區(qū)域的排列順序依次組合多個子數(shù)據(jù)流,得到編碼數(shù)據(jù)序列。
其次,利用卷積碼和里德-所羅門編碼對應(yīng)的解碼方式繼續(xù)對編碼數(shù)據(jù)進行解碼操作。具體解碼操作如下:從編碼屬性信息中可獲知卷積碼對應(yīng)的糾錯等級以及里德-所羅門編碼對應(yīng)的糾錯等級。因此,可首先根據(jù)卷積碼對應(yīng)的解碼方式以及卷積碼對應(yīng)的糾錯等級對編碼數(shù)據(jù)序列進行解碼操作,得到二進制數(shù)據(jù)序列。卷積碼解碼的一種方法是維特比譯碼算法,維特比譯碼算法基于動態(tài)規(guī)劃,以最小距離為目標(biāo),例如使用漢明距離為距離量度,以求解出最有可能生成待解碼序列的原序列。在本發(fā)明實施例中,采用維特比譯碼時,由于解交織后得到是一個映射至固定區(qū)間(如上述所說的區(qū)間[0,1])的編碼數(shù)據(jù)序列,若以區(qū)間中值為閾值分為0/1,再使用漢明距離的話,可能會導(dǎo)致失去一些信息。因此可利用維特比譯碼的軟輸入譯碼特征,定義合適的距離量度,即可盡可能地利用輸入的信息。本實施例中,映射至固定區(qū)間的編碼數(shù)據(jù)序列表示的實際上是編碼在每個位上與0或1的相似程度,如果更接近0的對應(yīng)值,那么對應(yīng)的原編碼為0,反之,如果更接近1的對應(yīng)值,那么對應(yīng)的原編碼為1。在卷積碼解碼之后,再根據(jù)里德-所羅門編碼對應(yīng)的解碼方式以及里德-所羅門編碼對應(yīng)的糾錯等級,對卷積碼解碼得到的二進制數(shù)據(jù)序列進行解碼操作,得到原始數(shù)據(jù)。在利用里德-所羅門編碼對應(yīng)的解碼方式進行解碼時,可先利用里德-所羅門編碼參數(shù)將二進制數(shù)據(jù)序列劃分為多個小組,然后分別對每個小組的數(shù)據(jù)序列進行解碼,最后再將解碼結(jié)果再次合并成二進制數(shù)據(jù)流。之后,利用數(shù)據(jù)長度、校驗位等信息可校驗和還原出原始數(shù)據(jù)。
需要說明的是,上述實施例中,利用卷積碼和里德-所羅門編碼對應(yīng)的解碼方式對編碼數(shù)據(jù)進行解碼操作僅是一種示例性的說明,對于具體的解碼方式,本發(fā)明實施例并不僅限定于卷積碼和里德-所羅門編碼這兩種編碼方式對應(yīng)的解碼方式。即,任一種或多種糾錯編碼方式對應(yīng)的解碼方式均可實現(xiàn)對編碼數(shù)據(jù)的解碼操作。
以上為本申請實施例提供的嵌碼視頻中圖形碼的解碼方法,基于同樣的思路,本申請實施例還提供一種嵌碼視頻中圖形碼的解碼裝置。
圖4是根據(jù)本發(fā)明實施例的一種嵌碼視頻中圖形碼的解碼裝置的示意性框圖。如圖4所示,該裝置包括:
識別模塊410,用于從嵌碼視頻中識別出圖形碼所在的目標(biāo)區(qū)域,嵌碼視頻中的至少兩個幀圖像承載至少一個圖形碼,圖形碼包括編碼屬性塊和數(shù)據(jù)區(qū)域。
確定模塊420,用于根據(jù)目標(biāo)區(qū)域確定圖形碼的每個碼塊的碼塊顏色。
讀取模塊430,用于根據(jù)碼塊顏色讀取數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù),以及,讀取編碼屬性塊中的編碼屬性信息,編碼屬性信息包括編碼信息對應(yīng)的編碼方式;
解碼模塊440,用于根據(jù)編碼屬性信息確定針對圖形碼的解碼方式,利用解碼方式對編碼數(shù)據(jù)進行解碼操作,得到圖形碼對應(yīng)的原始數(shù)據(jù)。
其中,承載同一圖形碼的相鄰兩個幀圖像的亮度根據(jù)預(yù)設(shè)調(diào)節(jié)規(guī)則調(diào)節(jié),預(yù)設(shè)調(diào)節(jié)規(guī)則包括相鄰兩個幀圖像在同一像素點處的調(diào)節(jié)方式不同、且不同碼塊顏色在同一幀圖像中對應(yīng)的像素點處的調(diào)節(jié)方式不同,調(diào)節(jié)方式包括提高亮度和/或降低亮度。
可選地,識別模塊410還用于:
利用指定邊緣檢測算法檢測出嵌碼視頻的邊緣,提取邊緣中的至少兩條直線段作為嵌碼視頻的邊緣線段;
從邊緣線段中匹配出至少一個四邊形區(qū)域;
從至少一個四邊形區(qū)域中篩選出圖形碼所在的目標(biāo)區(qū)域。
可選地,圖形碼包括二維碼,二維碼的數(shù)據(jù)區(qū)域包括多個子區(qū)域,二維碼還包括按照預(yù)設(shè)排列規(guī)則排列各碼塊的特征塊,編碼屬性塊環(huán)繞于數(shù)據(jù)區(qū)域的外圍,特征塊環(huán)繞于編碼屬性塊的外圍以及各子區(qū)域的外圍;
識別模塊410還用于:
遍歷至少一個四邊形區(qū)域;
在遍歷過程中,針對遍歷到的每個四邊形區(qū)域,分別計算四邊形區(qū)域的每條邊所在位置的相鄰兩個幀圖像的第一灰度差;
根據(jù)第一灰度差、每條邊上像素點的個數(shù)以及特征塊上與每條邊對應(yīng)的特征線上的碼塊個數(shù),計算每條邊和與其對應(yīng)的特征線的相似度;
對每條邊和與其對應(yīng)的特征線的相似度進行求和;
當(dāng)求和結(jié)果達到預(yù)設(shè)相似閾值時,確定四邊形區(qū)域為圖形碼所在的目標(biāo)區(qū)域。
可選地,確定模塊420還用于:
根據(jù)目標(biāo)區(qū)域的多個頂點的坐標(biāo)以及幀圖像中與多個頂點對應(yīng)的點的坐標(biāo),計算幀圖像相對于二維碼的投影變換矩陣;
根據(jù)投影變換矩陣對幀圖像執(zhí)行投影變換恢復(fù)操作,得到投影變換恢復(fù)后的幀圖像;
針對投影變換恢復(fù)后的幀圖像上的各像素點,分別計算各像素點處的相鄰兩個幀圖像的第二灰度差;
根據(jù)第二灰度差以及特征塊中各碼塊的位置信息,確定各像素點對應(yīng)的碼塊顏色。
可選地,確定模塊420還用于:
根據(jù)預(yù)設(shè)排列規(guī)則,確定至少一個黑色碼塊和至少一個白色碼塊在特征塊中的位置信息;
根據(jù)位置信息分別計算黑色碼塊和白色碼塊處的相鄰兩個幀圖像的灰度差,作為兩個標(biāo)準灰度差;
分別比較第二灰度差和兩個標(biāo)準灰度差之間的接近度,將與第二灰度差之間接近度較高的標(biāo)準灰度差對應(yīng)的碼塊顏色確定為第二灰度差對應(yīng)的像素點處的碼塊顏色。
可選地,讀取模塊430還用于:
分別確定相鄰兩個幀圖像上各像素點對應(yīng)的碼塊的中心區(qū)域,中心區(qū)域小于碼塊的區(qū)域;
計算中心區(qū)域內(nèi)各像素點對應(yīng)的第二灰度差的平均值;
根據(jù)碼塊顏色對平均值執(zhí)行取正運算或取負運算,將運算后的平均值確定為中心區(qū)域?qū)?yīng)的碼塊的編碼數(shù)據(jù)。
可選地,子區(qū)域包括m個,編碼方式包括交織算法,交織算法指依序?qū)⒁唤Mm個編碼數(shù)據(jù)分別填充至各子區(qū)域的第一位置、再將下一組m個編碼數(shù)據(jù)分別填充至各子區(qū)域的與第一位置相鄰的第二位置;
解碼模塊440還用于:
根據(jù)碼塊顏色以及預(yù)設(shè)排列規(guī)則,確定特征塊在二維碼中的位置信息,根據(jù)位置信息確定m個子區(qū)域在數(shù)據(jù)區(qū)域中的分布信息;
根據(jù)分布信息,依序從m個子區(qū)域的第三位置讀取m個編碼數(shù)據(jù),得到包含m個編碼數(shù)據(jù)的子數(shù)據(jù)流;
依序從m個子區(qū)域的第四位置讀取m個編碼數(shù)據(jù),直至讀取完m個子區(qū)域中所有位置的編碼數(shù)據(jù),以獲得多個子數(shù)據(jù)流,第四位置與其所在的子區(qū)域中的第三位置相鄰;
按照m個子區(qū)域的排列順序依次組合多個子數(shù)據(jù)流,得到編碼數(shù)據(jù)序列,繼續(xù)對編碼數(shù)據(jù)序列進行解碼操作。
可選地,編碼方式還包括里德-所羅門編碼和卷積碼,編碼屬性信息還包括編碼方式及其糾錯等級、糾錯位、校驗位、數(shù)據(jù)長度中的至少一項;
解碼模塊440還用于:
對編碼數(shù)據(jù)序列進行解碼操作,包括:
根據(jù)卷積碼對應(yīng)的解碼方式以及卷積碼對應(yīng)的糾錯等級,對編碼數(shù)據(jù)序列進行解碼操作,得到二進制數(shù)據(jù)序列;
根據(jù)里德-所羅門編碼對應(yīng)的解碼方式以及里德-所羅門編碼對應(yīng)的糾錯等級,對二進制數(shù)據(jù)序列進行解碼操作,得到原始數(shù)據(jù)。
可選地,如圖5所示,上述裝置還包括:
修正模塊450,用于根據(jù)預(yù)設(shè)排列規(guī)則確定特征塊中被卷簾快門效應(yīng)導(dǎo)致反色的待修正碼塊;將待修正碼塊對應(yīng)的編碼數(shù)值進行正負反轉(zhuǎn)操作,得到修正后的編碼數(shù)據(jù)。
歸一化模塊460,用于將修正后的編碼數(shù)據(jù)映射至預(yù)設(shè)區(qū)間內(nèi),得到歸一化的編碼數(shù)據(jù)。
解碼模塊440還用于:
利用解碼方式對歸一化的編碼數(shù)據(jù)進行解碼操作。
采用本發(fā)明實施例的裝置,通過從嵌碼視頻中識別出圖形碼所在的目標(biāo)區(qū)域,根據(jù)目標(biāo)區(qū)域確定圖形碼中每個碼塊的碼塊顏色,進而根據(jù)碼塊顏色讀取出數(shù)據(jù)區(qū)域中每個碼塊的編碼數(shù)據(jù)以及編碼屬性塊中的編碼屬性信息,最后根據(jù)編碼屬性信息確定正確的解碼方式,并根據(jù)該解碼方式對編碼數(shù)據(jù)進行解碼操作,以得到圖形碼對應(yīng)的原始數(shù)據(jù)。因此,該技術(shù)方案能夠從嵌碼視頻中識別并獲取到圖形碼對應(yīng)的原始數(shù)據(jù),解決了現(xiàn)有技術(shù)中無法針對嵌碼視頻中的圖形碼進行解碼的問題。
本領(lǐng)域的技術(shù)人員應(yīng)可理解,圖4和圖5中的嵌碼視頻中圖形碼的解碼裝置能夠用來實現(xiàn)前文所述的嵌碼視頻中圖形碼的解碼方案,其中的細節(jié)描述應(yīng)與前文方法部分描述類似,為避免繁瑣,此處不另贅述。
在20世紀90年代,對于一個技術(shù)的改進可以很明顯地區(qū)分是硬件上的改進(例如,對二極管、晶體管、開關(guān)等電路結(jié)構(gòu)的改進)還是軟件上的改進(對于方法流程的改進)。然而,隨著技術(shù)的發(fā)展,當(dāng)今的很多方法流程的改進已經(jīng)可以視為硬件電路結(jié)構(gòu)的直接改進。設(shè)計人員幾乎都通過將改進的方法流程編程到硬件電路中來得到相應(yīng)的硬件電路結(jié)構(gòu)。因此,不能說一個方法流程的改進就不能用硬件實體模塊來實現(xiàn)。例如,可編程邏輯器件(programmablelogicdevice,pld)(例如現(xiàn)場可編程門陣列(fieldprogrammablegatearray,fpga))就是這樣一種集成電路,其邏輯功能由用戶對器件編程來確定。由設(shè)計人員自行編程來把一個數(shù)字系統(tǒng)“集成”在一片pld上,而不需要請芯片制造廠商來設(shè)計和制作專用的集成電路芯片。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logiccompiler)”軟件來實現(xiàn),它與程序開發(fā)撰寫時所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬件描述語言(hardwaredescriptionlanguage,hdl),而hdl也并非僅有一種,而是有許多種,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)與verilog。本領(lǐng)域技術(shù)人員也應(yīng)該清楚,只需要將方法流程用上述幾種硬件描述語言稍作邏輯編程并編程到集成電路中,就可以很容易得到實現(xiàn)該邏輯方法流程的硬件電路。
控制器可以按任何適當(dāng)?shù)姆绞綄崿F(xiàn),例如,控制器可以采取例如微處理器或處理器以及存儲可由該(微)處理器執(zhí)行的計算機可讀程序代碼(例如軟件或固件)的計算機可讀介質(zhì)、邏輯門、開關(guān)、專用集成電路(applicationspecificintegratedcircuit,asic)、可編程邏輯控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc625d、atmelat91sam、microchippic18f26k20以及siliconelabsc8051f320,存儲器控制器還可以被實現(xiàn)為存儲器的控制邏輯的一部分。本領(lǐng)域技術(shù)人員也知道,除了以純計算機可讀程序代碼方式實現(xiàn)控制器以外,完全可以通過將方法步驟進行邏輯編程來使得控制器以邏輯門、開關(guān)、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實現(xiàn)相同功能。因此這種控制器可以被認為是一種硬件部件,而對其內(nèi)包括的用于實現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結(jié)構(gòu)?;蛘呱踔粒梢詫⒂糜趯崿F(xiàn)各種功能的裝置視為既可以是實現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結(jié)構(gòu)。
上述實施例闡明的系統(tǒng)、裝置、模塊或單元,具體可以由計算機芯片或?qū)嶓w實現(xiàn),或者由具有某種功能的產(chǎn)品來實現(xiàn)。一種典型的實現(xiàn)設(shè)備為計算機。具體的,計算機例如可以為個人計算機、膝上型計算機、蜂窩電話、相機電話、智能電話、個人數(shù)字助理、媒體播放器、導(dǎo)航設(shè)備、電子郵件設(shè)備、游戲控制臺、平板計算機、可穿戴設(shè)備或者這些設(shè)備中的任何設(shè)備的組合。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。
計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
本說明書中的各個實施例均采用遞進的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于系統(tǒng)實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應(yīng)包含在本申請的權(quán)利要求范圍之內(nèi)。