本發(fā)明屬于影像數(shù)據(jù)安全領(lǐng)域,具體涉及一種基于GPS和北斗定位系統(tǒng)的時空信息在IOS端數(shù)字影像中的保護方法。
背景技術(shù):
:時空信息作為社會生活的基礎(chǔ),包含了人類活動的重要信息。隨著GPS以及國產(chǎn)北斗定位系統(tǒng)應(yīng)用的普及,時空信息的獲取變得十分便捷。然而時空信息與數(shù)字影像數(shù)據(jù)的結(jié)合,一般是通過將時空信息嵌入到數(shù)字影像的EXIF信息中,與數(shù)據(jù)本身結(jié)合的并不緊密。移動互聯(lián)網(wǎng)技術(shù)和智能移動設(shè)備的迅猛發(fā)展,使得數(shù)字影像的時空信息在一系列的傳輸過程中面臨易丟失或者被篡改等問題,對影像的認證以及空間定位的準(zhǔn)確性造成了巨大影響。數(shù)字水印技術(shù)作為一種信息安全技術(shù),為數(shù)據(jù)保護提供了一種切實可行的解決途徑。數(shù)字水印是指在數(shù)字化數(shù)據(jù)中嵌入水印信息,將水印信息與源數(shù)據(jù)融為一體,成為源數(shù)據(jù)不可分離的一部分。由此來確定版權(quán)擁有者、所有權(quán)認證、跟蹤侵權(quán)行為、認證數(shù)字內(nèi)容來源的真實性、識別購買者、提供關(guān)于數(shù)字內(nèi)容的其他附加信息等。IOS系統(tǒng)作為全球第二大移動操作系統(tǒng),具有十分龐大的用戶量,實現(xiàn)可在IOS系統(tǒng)上運行的以時空信息為水印內(nèi)容,以IOS端數(shù)字影像為水印載體的數(shù)字水印方法,對于時空信息的保護具有重要的實用價值。目前,對于移動端的數(shù)字水印技術(shù)的研究并不多?!哆m用于智能手機的空域及頻域圖像數(shù)字水印算法的研究》(彭樂.華中師范大學(xué),2015.)一文,公開了Android端的基于量化塊灰度均值的空間域水印算法和DCT水印算法?!稊?shù)字水印技術(shù)在Android移動終端中的應(yīng)用》(周軍.上海交通大學(xué),2011.),根據(jù)Android系統(tǒng)的特點和應(yīng)用場景,對比了DCT數(shù)字水印和空域水印在Android上的實現(xiàn)。但上述兩種方法中水印都不具備抗裁剪能力?,F(xiàn)有的研究都是基于Android系統(tǒng)的水印方法,沒有應(yīng)用于IOS系統(tǒng),且現(xiàn)有的移動端的DCT水印方法魯棒性較差,不具有抵抗裁剪攻擊的能力。技術(shù)實現(xiàn)要素:本發(fā)明目的在于:針對IOS端數(shù)字影像在傳播中其時間信息與空間信息易丟失易被篡改的問題,提供了一種GPS和北斗定位系統(tǒng)時空信息在IOS端數(shù)字影像中的保護方法??梢詫腉PS或者北斗定位系統(tǒng)獲取的時空信息與影像進行緊密結(jié)合,提高方法的魯棒性和影像數(shù)據(jù)的防篡改能力。本發(fā)明方法的基本思路:以IOS系統(tǒng)(InternetworkOperatingSystem)為平臺,從GPS或者北斗定位系統(tǒng)獲取時空信息,基于獲取的時空信息生成水印內(nèi)容;在水印嵌入時,對影像進行劃分,每個區(qū)域嵌入一遍完整的水印信息,并在嵌入?yún)^(qū)域設(shè)置特征標(biāo)識,水印嵌入完成后在影像數(shù)據(jù)中嵌入脆弱水印;在影像檢測和水印提取時,通過檢測脆弱水印,判斷影像是否被篡改,通過尋找特征標(biāo)識,快速定位含水印區(qū)域并完成水印提取。本發(fā)明GPS和北斗定位系統(tǒng)時空信息在IOS端數(shù)字影像中的保護方法,其步驟如下:步驟一、時空信息的獲取以及基于時空信息的水印信息生成步驟1.1:從IOS設(shè)備的GPS模塊或者北斗定位系統(tǒng)應(yīng)用中獲取時空信息,即時間信息和經(jīng)緯度信息,略去時間和經(jīng)緯度符號,讀取剩余的數(shù)字字符,數(shù)字字符的數(shù)量為L1;步驟1.2:使用當(dāng)前時鐘作為隨機數(shù)種子,運用線性同余函數(shù),生成10組{0,1}二值化偽隨機序列,分別表示數(shù)字0~9;每組{0,1}二值化偽隨機序列,其長度為L2,相互間相關(guān)系數(shù)小于閾值T1(0<T1<0.5)(為了使得每兩組{0,1}二值化偽隨機序列之間具有弱相關(guān)性,T1的取值需要盡可能接近0)。線性同余函數(shù)公式如下:Xn+1=(aXn+c)mod(m)(n=0,1,2,3......,L2)其中m、a、c和X0分別為模數(shù)、乘數(shù)、增量和隨機函數(shù)的初始值,mod為求余函數(shù),Xn的值為以m、a、c和Xn-1為參數(shù)時函數(shù)的值。{Xn}(n=1,2,3......,L2)為求得的偽隨機序列。然后按下列方法將{Xn}序列進行{0,1}二值化,二值化方法為:Xn'=(int)Xnmod2,(n=1,2,3......,L2)int為向下取整函數(shù),{Xn'}為求得的二值化偽隨機序列。接著對生成的{Xn'}進行檢驗,若該組序列與其他各組已經(jīng)生成的二值化偽隨機序列之間的相關(guān)系數(shù)小于T1則保留,否則進行刪除并重新生成一組二值化偽隨機序列繼續(xù)檢驗,直到符合條件的序列達到10組。兩組二值化偽隨機序列之間相關(guān)系數(shù)的計算公式如下:r=nΣi=1nXiYi-Σi=1nXi·Σi=1nYinΣi=1nXi2-(Σi=1nXi)2·nΣi=1nYi2-(Σi=1nYi)2]]>其中X和Y表示兩組二值化偽隨機序列,Xi和Yi為兩組序列相對應(yīng)的變量,n為一組二值化偽隨機序列中變量的數(shù)量即L2,r為求得的相關(guān)系數(shù),其取值范圍為-1≤r≤1,r的絕對值越接近于1,表示兩個變量的線性相關(guān)性越強,r的絕對值接近于0時,表示兩個變量之間幾乎不存在相關(guān)關(guān)系。然后,將讀取到的L1個數(shù)字字符轉(zhuǎn)換成對應(yīng)的{0,1}二值化偽隨機序列,生成待嵌入的水印信息W={Wi,i=0,1,…,L},其中Wi={0,1}。水印信息W的長度L=L1×L2。步驟二、水印信息的嵌入以及在嵌入?yún)^(qū)域設(shè)置特征標(biāo)識步驟2.1:對尺寸大小為x×y的原始影像做8×8分塊,并對每一個分塊進行DCT變換(離散余弦變換,DiscreteCosineTransform),(變換后的分塊稱為DCT塊)。若影像行像素數(shù)x或列像素數(shù)y不能被8整除的情況,則將x/8與y/8的結(jié)果進行向下取整,不能分塊的部分影像不做處理;步驟2.2:將整個影像劃分成互不重疊的矩形子區(qū)域,每塊區(qū)域長為(L2+1)×8、寬為(L1+1)×8。若x<(L2+1)×8或者y<(L1+1)×8則說明影像尺寸過小,無法完整嵌入一遍水印信息,退出嵌入過程。步驟2.3:在每一個區(qū)域的第一行和第一列的DCT塊中,設(shè)置特征標(biāo)識。方法是選擇中頻系數(shù)[1,3]、[3,1]和[3,3],將[1,3]和[3,1]的平均值賦值給[3,3],使得[3,3]為該組中頻系數(shù)的中位數(shù)。步驟2.4:從每個矩形區(qū)域的第二行第二列開始,按照從左至右、從上到下的順序在每個DCT塊中頻系數(shù)[2,2]和[2,3]中依次嵌入水印信息,每塊嵌入一位水印信息,嵌入的規(guī)則為:使得待嵌入的水印Wi為“1”時,[2,2]>[2,3];Wi為“0”時,[2,2]<[2,3]。其中p為水印強度。步驟2.5:對影像的每個8×8分塊進行DCT逆變換,得到含水印的數(shù)字影像。步驟三、脆弱水印的嵌入讀取嵌入完水印的影像數(shù)據(jù),選擇一個標(biāo)記碼,在其所處數(shù)據(jù)流位置前插入冗余信息0xFF。步驟四、脆弱水印檢測讀取待檢測的影像數(shù)據(jù),在脆弱水印的嵌入位置進行檢測,若脆弱水印已丟失,則說明影像數(shù)據(jù)已被篡改。反之,則說明影像數(shù)據(jù)未被篡改。步驟五、水印提取步驟5.1:讀取影像像素信息,獲取從坐標(biāo)[i,j]到[i+(a+1)×8,j+(b+1)×8]的像素矩陣,初始化i=0,j=0,0<i<8,0<j<8。對該像素矩陣做8×8分塊,并對每個分塊進行DCT變換。步驟5.2:尋找一個DCT特征塊[m,n],假如與該特征塊所有同行同列的DCT塊中都有:[3,3]是[1,3]、[3,1]和[3,3]三個中頻系數(shù)的中位數(shù),則該特征塊即為影像某個含水印矩形子區(qū)域的起始DCT塊(第一行第一列)。步驟5.3:若不存在特征塊則返回步驟5.1,使得i=i+1,j=j(luò)+1,直至i=7,j=7。若在遍歷結(jié)束之后無法尋找到有效的特征塊,則說明未嵌入水印信息或者水印信息已經(jīng)被破壞,退出水印的檢測提取過程。步驟5.4:通過特征塊的定位,提取其所在矩形區(qū)域的水印信息。方法是:獲取從[i+(m+1)×8,j+(n+1)×8]至[i+(m+a+1)×8,j+(n+b+1)×8]的像素矩陣,對該像素矩陣做8×8分塊DCT變換,進行水印提取。提取規(guī)則為:若中頻系數(shù)[2,2]>[2,3],則Wi=1;若[2,2]<[2,3],則Wi=0。步驟5.5:將提取的{0,1}二值化偽隨機序列以每L2位為一組,與預(yù)設(shè)的10組表示數(shù)字字符的{0,1}序列進行相關(guān)系數(shù)的計算,若歸一化相關(guān)系數(shù)大于閾值1-T1則轉(zhuǎn)換成相對應(yīng)數(shù)字字符,將數(shù)字字符與時間和經(jīng)緯度的格式符號進行字符拼接,得到嵌入的時空信息。本方法,基于IOS移動端進行開發(fā),有效填補了數(shù)字水印在IOS系統(tǒng)中的應(yīng)用空白,實現(xiàn)了時空信息與影像數(shù)據(jù)的緊密結(jié)合。在水印信息檢測時,通過檢測脆弱水印,可以判斷影像是否被篡改。通過遍歷尋找特征塊的方法能夠快速準(zhǔn)確定位到含水印區(qū)域,解決了影像受到攻擊之后水印信息不同步的問題,實現(xiàn)了水印信息的高效提取,大大提升了方法的魯棒性。具體實施方式下面結(jié)合實施例對本發(fā)明作進一步詳細描述。本實例選擇iPhone5s作為測試設(shè)備,選擇拍照取得的影像作為測試影像,其格式為JPEG,尺寸大小為3264×2448。步驟一.時空信息的獲取以及基于時空信息的水印信息生成:步驟1.1:從iPhone5s的GPS模塊獲取時間信息和經(jīng)緯度信息。本次實施例獲取的時間為“2016-01-2820:20:55”,獲取的測試地點經(jīng)緯度“118.91075°E32.11676°N”。省略其中的格式符號,獲取時間和經(jīng)緯度信息中的數(shù)字字符:“20160128202055118910753211676”,一共29位;步驟1.2:運用線性同余函數(shù),使用當(dāng)前時鐘作為隨機數(shù)種子,生成10組長度為40,且相互間歸一化相關(guān)系數(shù)小于閾值0.2的{0,1}序列,表示數(shù)字0~9。將讀取到的數(shù)字信息轉(zhuǎn)換成對應(yīng)的{0,1}序列,生成待嵌入的水印信息W={Wi,i=0,1,…,L},其中Wi={0,1}。水印信息總長度為29×40=1160。{0,1}二值化偽隨機序列{Xn'}產(chǎn)生方法如下:Xn+1=(aXn+c)mod(m)(n=0,1,2,3......,L2)X′n=(int)Xnmod2(n=1,2,3......,L2)mod取余函數(shù),int為向下取整函數(shù)。在本實施例中設(shè)置a=16807,c=0,m=2^31-1,隨機數(shù)種子X0=Time。相關(guān)系數(shù)計算公式如下:r=nΣi=1nXiYi-Σi=1nXi·Σi=1nYinΣi=1nXi2-(Σi=1nXi)2·nΣi=1nYi2-(Σi=1nYi)2]]>其中n=40,Xi和Yi分別為兩組二值化偽隨機序列相對應(yīng)的變量,取值為0或1,設(shè)置r<0.2。步驟二.水印信息的嵌入以及在嵌入?yún)^(qū)域設(shè)置特征標(biāo)識的過程步驟2.1:對獲取的測試影像A進行8×8像素分塊,對每一個分塊進行DCT變換。測試影像A的行列像素數(shù)都能被8整除,因此不存在不能分塊的部分;步驟2.2:影像尺寸滿足條件:2448>(40+1)×8且3264>(29+1)×8,因此將整個影像分成多個長為328像素,寬為240像素的矩形區(qū)域;步驟2.3:在每個區(qū)域中第一行第一列的DCT塊中設(shè)置特征標(biāo)識。方法為:選擇中頻系數(shù)[1,3]、[3,1]和[3,3],將[1,3]和[3,1]的平均值賦值給[3,3],使得[3,3]為該組中頻系數(shù)的中位數(shù)。步驟2.4:從矩形區(qū)域第二行第二列開始,按照從左至右、從上到下的順序在每個DCT塊中依次嵌入水印信息,每塊嵌入一位水印信息,嵌入的規(guī)則為:使得待嵌入的水印Wi為“1”時,[2,2]>[2,3];Wi為“0”時,[2,2]<[2,3]。在本實施例中設(shè)置水印強度p=10;步驟2.5:對影像的每個8×8分塊進行DCT逆變換,得到含水印的影像。步驟三.脆弱水印嵌入讀取嵌入完水印的影像數(shù)據(jù),在APPn標(biāo)記碼前插入冗余信息:0xFF。步驟四.脆弱水印檢測讀取待檢測影像數(shù)據(jù),檢測影像是否含有脆弱水印,若脆弱水印已丟失,則說明影像已被篡改;反之,影像未被篡改。步驟五.水印提取步驟5.1:獲取從坐標(biāo)[i,j]至[i+(a+1)×8,j+(b+1)×8]的像素矩陣,初始化i=0,j=0,0<i<8,0<j<8。對該像素矩陣做8×8分塊,并對每個分塊進行DCT變換;步驟5.2:尋找一個DCT特征塊[m,n],假如與該特征塊所有同行同列的DCT塊中都有:[3,3]是[1,3]、[3,1]和[3,3]三個中頻系數(shù)的中位數(shù),則該特征塊即為影像某個含水印矩形子區(qū)域的起始DCT塊;步驟5.3:若不存在特征塊則返回步驟一,使得i=i+1,j=j(luò)+1,直至i=7,j=7。若在遍歷結(jié)束之后無法尋找到有效的特征塊,則說明未嵌入水印信息或者水印信息已經(jīng)被破壞,退出水印的檢測提取過程;步驟5.4:通過特征塊的定位,提取其所在DCT塊組中的水印信息。方法是:獲取從[i+(m+1)×8,j+(n+1)×8]至[i+(m+31)×8,j+(n+31)×8]的像素矩陣,對該像素矩陣做8×8分塊DCT變換,進行水印提取。提取規(guī)則為:提取規(guī)則為:若中頻系數(shù)[2,2]>[2,3],則Wi=1;若[2,2]<[2,3],則Wi=0。步驟5.5:將提取的{0,1}序列以40位為一組與預(yù)設(shè)的10組表示數(shù)字字符的{0,1}序列進行相關(guān)系數(shù)的計算,若歸一化相關(guān)系數(shù)大于閾值0.8則轉(zhuǎn)換成相對應(yīng)數(shù)字字符。再將數(shù)字字符與時間和經(jīng)緯度的格式符號進行字符串拼接,得到嵌入的時空信息:“2016-01-2820:20:55118.91075°E32.11676°N”,與初始信息一致。本方法的特點和技術(shù)優(yōu)勢(1)本方法中最為關(guān)鍵的是水印嵌入的方式。通過分區(qū)域嵌入并設(shè)置標(biāo)識的方法,能夠在有效抵抗裁剪攻擊,實現(xiàn)含水印區(qū)域的快速定位、高效提取。(2)本方法充分利用數(shù)字影像的自身特點,提出了一種基于冗余數(shù)據(jù)的脆弱水印方法,提高了影像數(shù)據(jù)防篡改的能力。測試與分析本發(fā)明所提出的方法是專門針對IOS端數(shù)字影像的水印方法。為驗證方法的魯棒性和運行效率,對其進行不同方法的攻擊并計算運行時間。(1)JPEG壓縮攻擊對嵌入水印信息的影像數(shù)據(jù)按照不同的壓縮品質(zhì)進行JPEG壓縮。壓縮后,再對這些數(shù)據(jù)進行水印信息提取。實驗結(jié)果表明:該方法在壓縮品質(zhì)4以上時可以有效抵抗JPEG壓縮攻擊。影像在壓縮處理之后,全部提示已被篡改。測試結(jié)果如表1所示。表1抗JPEG壓縮實驗結(jié)果(2)裁剪攻擊影像數(shù)據(jù)往往在傳輸途中,用戶會根據(jù)自身需求將其進行裁剪,因而,方法有必要具備抵抗任意位置的裁剪攻擊的能力。裁剪攻擊后,影像數(shù)據(jù)大小會發(fā)生改變,破壞了水印信息與嵌入位置的同步關(guān)系。對嵌入水印后的測試影像做四周裁剪,二分之一裁剪和四分之一裁剪,通過遍歷找尋特征區(qū)域依然能夠提取出時空信息“2016-01-2820:20:55118.91075°E32.11676°N”。在影像裁剪過后,全部提示已被篡改。測試結(jié)果如表2所示。表2抗裁剪攻擊測試(3)嵌入與提取時間測試由于智能手機的硬件性能普遍低于PC,所以要求方法的執(zhí)行效率要高。算法的執(zhí)行時間的測試方法是:分別測試嵌入水印以及提取水印的時間,在提取水印時考慮最優(yōu)情況和最壞情況。最優(yōu)情況是在測試影像中嵌入水印,不裁剪,提取水印時不需要進行遍歷。最壞情況是在測試影像中不嵌入水印,不裁剪,提取水印,需要遍歷至i=7,j=7。多次測試取平均值,測試結(jié)果如表3所示。最壞情況下,耗時低于1s,說明本方法執(zhí)行效率很高。表3嵌入和提取時間測試最優(yōu)情況最壞情況嵌入時間0.45s0.48s提取時間0.2s0.76s當(dāng)前第1頁1 2 3