王麗俠
(唐山學(xué)院 智能與信息工程學(xué)院,河北 唐山 063000)
將不同圖像的目標(biāo)拼接在同一張圖片中,稱為不同圖像之間的拼接篡改。不同圖像之間的拼接篡改具有如下特點:①在視覺上察覺不到比較明顯的篡改痕跡;②圖像的某種統(tǒng)計特性被篡改行為改變了,這些統(tǒng)計特性可以理解為是在其采集和后續(xù)圖像處理的過程中留下的圖像指紋。篡改檢測的任務(wù)就是通過驗證圖像指紋是否存在來定位篡改的位置。
通過對圖像指紋存在性的判斷就可以對整個圖像進行驗證,從而提供整個圖像的真實信息。一個更好的處理方法是找到一種可以顯示圖像中每個特征可信性的映射關(guān)系,從而自動定位可疑區(qū)域。目前,基于圖像整體特征的檢測算法主要有兩類:基于JPEG壓縮特征的檢測算法[1-2]和基于顏色濾波陣列(Color Filter Array,CFA)的檢測算法?;贘PEG壓縮特征的檢測算法是通過檢測雙JPEG壓縮圖像的圖像塊先前的量化矩陣來實現(xiàn),對篡改前和篡改后都是JPEG格式的圖像具有很好的檢測效果,但是該方法對其他格式的圖像檢測效果不佳,并且對篡改區(qū)域的邊緣定位也不準(zhǔn)確?,F(xiàn)在使用更為廣泛的算法是基于CFA的檢測算法,只要圖像是經(jīng)過CFA濾波后插值得到,如bayer圖片,該方法就有可能對其進行檢測而不受圖像格式的限制。目前,98%以上相機拍攝的圖片都是經(jīng)過插值得到,使得該算法得到了廣泛的研究,本文研究的重點也放在該算法上。
文獻(xiàn)[3]中的圖像檢測算法是通過對[4][5]中提到的眾多指紋的比較,選擇插值過程中留下的痕跡作為圖像指紋。圖像插值是使用在相鄰的位置已知的值計算新位置的像素值的過程。文獻(xiàn)[3]研究了一個局部域的插值偽影:當(dāng)一個局部CFA插值偽影本該存在而不存在的時候,就把該處定為篡改位置。該方法提出了高斯混合模型的概念,并認(rèn)為篡改位置的特征符合均值為零的高斯模型,而且通過對單個CFA單元模式進行了驗證。本文在該方法的基礎(chǔ)上進行改進,目的是在沒有獲取任何篡改位置信息的前提下,對篡改區(qū)域進行準(zhǔn)確定位。
在CFA插值過程中,通過插值核周期性地作用于原始圖像來產(chǎn)生新的圖像。對于CFA插值,本文只考慮一個單一的尺寸,用文獻(xiàn)[6]中的結(jié)果Var[e(x)]=Var[e(x+2)]表示,即假定預(yù)測誤差的方差只有兩個值,一個為奇數(shù)位置,另一個為偶數(shù)位置。更具體地,只考慮在圖像綠色通道G(x)中一個特定行里的插值,得到信號sA(x)為:
。
(1)
在本文中只考慮一個簡單的插值模型,即插值后的信號sR(x)由原有部分sA(x)和插值部分組成,如下表示:
(2)
其中,hu代表插值核,u∈(r1,r2),r2-r1為插值核大小。在模型(2)中,假定每一個顏色通道都是通過線性濾波獨立插值得到的,并且原來的真實樣本值不通過插值修改。在實際中,因為只有u為奇數(shù)的時候?qū)ι厦娴暮陀杏?,所以令u為奇數(shù)時hu=0。預(yù)測誤差可以定義為e(x)=sR(x)-sP(x),其中sP(x)=∑kusR(x+u)表示預(yù)測信號,ku是預(yù)測核,因此:
(3)
假設(shè)在預(yù)測的時候使用相同的插值內(nèi)核(即hu=ku),在奇數(shù)位置的預(yù)測誤差為零。因此,在理想的情況下,Var[e(x)]在插值信號的位置對應(yīng)零,真實信號的位置對應(yīng)非零。
一般來說,精確的插值系數(shù)是無法知道的,但是可以假設(shè)當(dāng)u為奇數(shù)時,ku=0。此外,還可以假設(shè)常見的插值核有∑ku=∑hu=1。這樣,公式(3)就可以改寫為:
(4)
通過假設(shè)獲得的信號樣本服從均值μG和方差σG2的獨立同分布,則預(yù)測誤差的均值是:
(5)
當(dāng)x為偶數(shù)時,預(yù)測誤差的方差是:
(6)
當(dāng)x為奇數(shù)時,預(yù)測誤差的方差是:
(7)
根據(jù)上述模型,預(yù)測誤差具有均值為零和方差正比于真實像素位置的方差的性質(zhì),然而,當(dāng)預(yù)測核接近插值核時,真實像素位置點的預(yù)測誤差的方差將會比插值像素位置點的預(yù)測誤差的方差大。
在非理想的條件下,獲得的信號將只在局部位置獨立同分布,且其方差也只在局部位置比較穩(wěn)定,這樣σG2需要在信號的小部分估計得到,Var[e(x)]依賴特定的信號取不同的值。同時,由于舍入和截斷效應(yīng)值的影響,在像素上可能會存在加性噪聲,但是仍然希望組成真實像素的值的方差會比較大。
把常用的RGGB排列的拜耳濾波器作為具體的CFA單元。拜耳濾波器陣列如圖1(a)所示,這里只考慮綠色通道。由于綠色通道用因子2進行了上采樣,對于一個通用方塊,將得到兩類像素(真實像素和插值像素)相同數(shù)量的樣本(相同的估計可靠性)。
(a)拜耳濾波陣列(b)真實綠色通道的梅花形格A和插值綠色通道的互補梅花形格I
圖1RGGB濾波陣列和對應(yīng)的梅花形格
在綠色通道里,一維信號里面的偶數(shù)位(真實樣本)轉(zhuǎn)化為了真實綠色通道的梅花形格A,奇數(shù)位(插值樣本)轉(zhuǎn)化為了插值綠色通道的互補梅花形格I,如圖1(b)所示。類似一維信號,假定CFA插值偽影存在,則A的預(yù)測誤差的方差比I的預(yù)測誤差的方差要大很多,并且兩者是獨立的,相反,如果沒有插值存在,兩網(wǎng)格的方差比較接近。因此,為了檢測是否存在插值偽影,就需要評估兩網(wǎng)格之間的預(yù)測誤差的方差的不平衡性。
假設(shè)s(x,y)代表待測圖像,其中s(x,y)∈R2,則預(yù)測誤差就可以表示為:
(8)
其中,ku,v表示二維預(yù)測濾波器;u∈(r1,r2),v∈(r3,r4),且r1,r2,r3和r4為整數(shù),(r2-r1)×(r4-r3)為插值核大小。在理想的情況下,ku,v=hu,v?(u,v),其中ku,v是相機內(nèi)部的插值算法的插值核。在實際中,可以假設(shè)ku,v≠hu,v,因為相機內(nèi)部的插值算法是沒辦法獲得的。
由于殘余誤差具有局部平穩(wěn)性,所以預(yù)測誤差e(x,y)的方差只能夠從插值像素I或者真實像素A的鄰域的每個位置(插值像素位置或者真實像素位置)逐像素進行估計。假設(shè)已經(jīng)知道了CFA的單元模式(如拜耳CFA),在(2k+1)×(2k+1)的窗口里假設(shè)預(yù)測誤差的局部平穩(wěn)性是有效的,預(yù)測誤差的局部加權(quán)方差就可以定義為:
(9)
W(i,j)是一個標(biāo)準(zhǔn)方差為k/2,大小為(2k+1)×(2k+1)的高斯窗口。
(10)
其中GMA(k,l)是在真實像素位置上預(yù)測誤差方差的幾何均值,定義為:
GMI(k,l)是插值位置的相似定義。
當(dāng)圖像有插值的時候,特征L就可以檢測出預(yù)測誤差局部方差的不平衡性,事實上,在這樣的情況下,真實像素預(yù)測誤差的方差遠(yuǎn)大于插值像素的,且L(k,l)是非零正數(shù)。相反,如果一個圖像沒有經(jīng)過插值,真實像素和插值像素的預(yù)測誤差的方差沒有多大的區(qū)別,因為具有相同的局部統(tǒng)計特性,且L(k,l)=0,本文的推論是根據(jù)這兩個關(guān)鍵點展開的。
本文做出如下假設(shè):一個插值圖像通過獲取一個新的內(nèi)容來進行篡改,為了使篡改的區(qū)域更加真實,往往會加入一些其他的處理,如模糊、裁剪、旋轉(zhuǎn)、壓縮等,以破壞篡改位置的插值痕跡。由此提出的特征L就會在篡改圖像中保持不一致:在未篡改的區(qū)域里L(fēng)比零大很多,而在篡改區(qū)域里L(fēng)則接近于零。本文就是通過這樣的不一致來定位篡改區(qū)域的。
在某些方面,本文所提出來的特征在概念上和文獻(xiàn)[7]比較相似,其中的方差運用了絕對值的平均進行了近似表示。然而,不同之處在于本文未使用文獻(xiàn)[7]用到的傅里葉分析技術(shù),這就會在CFA偽影的準(zhǔn)確定位上受到限制。此外,本文所提出的特征用了一個比較方便的特征模型進行了描述(下面將會講到),這樣就可以對每一個操作塊的概率進行操作。
利用貝葉斯方法,對于每一個塊Bk,l都可以用特征值L(k,l)來表征CFA偽影是否存在。用M1作為CFA偽影存在的假設(shè),M2作為CFA偽影不存在的假設(shè)。為了擁有一個簡單易處理的模型,本文假設(shè)在塊Bk,l的任意塊B下都滿足高斯分布。對一個固定的B,可以通過如下的條件概率密度函數(shù)來表征提出的特征:
Pr{L(k,l)/M1}=N(μ1,σ12),
(11)
Pr{L(k,l)/M2}=N(μ2,σ22)。
(12)
其中?k,l=0,1,…,(N/B)-1。因為兩個條件概率密度函數(shù)的參數(shù)在圖像中不會改變,所以可以在圖像的整個區(qū)域范圍內(nèi)進行估計。如果插值圖像包含了一些篡改區(qū)域,那么圖像里面的CFA偽影就會遭到破壞,則M1和M2就會存在,因此L就可以通過高斯分布的混合模型來建立。μ1表示的第一部分代表CFA偽影存在的區(qū)域,μ2表示的第二部分代表篡改區(qū)域(CFA偽影丟失的部分)。文獻(xiàn)[3]認(rèn)為篡改區(qū)域的均值應(yīng)該為零,即μ2=0,但這樣的確定不具有普遍性,為了更加真實地反映出篡改位置的特征模型,本文對其進行改進,即對其不進行事先確定,而是采用模糊估計來得到。為了評估高斯混合模型的參數(shù),本文運用文獻(xiàn)[8]中提到的期望最大化(Expectation-Maximization,EM)算法。EM算法是評估組件分布均值和方差的標(biāo)準(zhǔn)迭代算法,它是最大化針對分布參數(shù)的完整對數(shù)似然函數(shù)的期望值。在本文算法中,EM算法用于評估μ1,μ2,σ1和σ2。
本文最終的目的是獲得一個指示每一個B×B塊Bk,l的映射關(guān)系,這種映射關(guān)系是基于是否存在CFA偽影的概率映射到是否經(jīng)過篡改的概率。從公式(11)(12)和先驗概率Pr{M1}=Pr{M2}=1/2,可以得到原始塊的后驗概率。通過探索貝葉斯理論和依靠每個Bk,l塊的觀察特征L(k,l),可以得到:
Pr{M1/L(k,l)}=
(13)
其可以表示為:
(14)
其中Γ是L(k,l)的似然估計,定義為:
(15)
從(14)和(15)可以看出兩個公式具有相同的統(tǒng)計信息。對圖像運用公式(15),就可以獲得一個似然圖(Likelihood Map,LM),LM中的每一個像素都關(guān)聯(lián)一個大小為B×B塊的似然率。
這些映射關(guān)系里面通常含有噪聲,因為其本身就是L(k,l)的一個單一的實現(xiàn)對應(yīng)的概率值(似然比),其本身就是噪聲。為了對映射關(guān)系進行去噪,本文在一個比較大的塊C上計算特征,其中C=n×B,n∈R2。如果塊在M1或者M2情況下有條件獨立,則累計似然率Γcum為:
(16)
由于圖像語義內(nèi)容的因素,在真實的環(huán)境中,圖像的篡改區(qū)域都是連通的,所以為了進一步提升定位性能,用中值濾波器作用在連通區(qū)域。為了使數(shù)值更加穩(wěn)定,在對數(shù)似然映射中也使用該濾波器。
文獻(xiàn)[3]提出了基于單CFA模型的檢測算法,對單CFA模式下的圖像能夠進行很好的檢測,且目前的大多數(shù)算法的研究也只是針對特定的CFA模型進行。但是現(xiàn)在數(shù)碼產(chǎn)品的種類越來越多,CFA單元模式不一樣,并且在一個固定通道的顏色中提取特征也不具有普遍性。因此,為了更好地檢測,本文對其進行改進,采用多CFA模型的輪循算法進行檢測,具體的流程如圖2所示。其中,初始值i=0,N表示CFA模板的個數(shù)。輸入一個可疑的圖像,輸出一個對應(yīng)的篡改映射陣列:在C×C的圖像塊映射陣列里面的每一個像素點對應(yīng)著其包含CFA偽影的概率,輸出映射陣列里面比較低的值對應(yīng)著篡改區(qū)域。
圖2 多CFA模型的輪循檢測算法流程圖
首先,以第一個CFA模板陣列開始,從圖像中分離出一個通道的值,使用固定的插值算法計算它的預(yù)測誤差。其次,評估加權(quán)局部方差和對B×B大小的塊進行特征提取,通過EM算法來評估GMM參數(shù),并運用它來生成篡改映射陣列。當(dāng)C=B時,篡改映射陣列由文獻(xiàn)[9]的似然率來產(chǎn)生,當(dāng)C>B時,篡改映射陣列由文獻(xiàn)[10]提供的方法產(chǎn)生。最后,通過中值濾波器對對數(shù)似然映射陣列進行濾波。算法詳細(xì)步驟描述如下:
(1)選擇第i個CFA單元陣列,初始值i=0,提取圖像的單通道IS,用插值算法ku,v對圖像進行預(yù)測,得到圖像的預(yù)測誤差e(x,y);
(2)獲取特征L。用高斯模板分別對真實位置和插值位置進行作用,得到兩處位置的局部加權(quán)方差,通過公式(3)-(11)計算得到每個CFA單元的特征值;
(3)計算高斯混合模型的參數(shù)。用EM算法對高斯混合模型的參數(shù)進行估計,初始參數(shù)μ1,σ12為整個特征的均值和方差,μ2=0和σ22=σ12/10,收斂條件為:迭代誤差為10-3或者迭代次數(shù)為1 000;
(4)利用高斯混合模型參數(shù)進行概率計算,生成映射關(guān)系陣列,然后使用中值濾波器進行濾波;
(5)將映射關(guān)系陣列的值轉(zhuǎn)換到灰度級顏色空間,顯示本次模板下的檢測結(jié)果。如果檢測到篡改區(qū)域,則將本次的檢測結(jié)果作為最終的檢測結(jié)果,如果沒有檢測到,則令i=i+1,重復(fù)前面的步驟,當(dāng)i>N時,檢測結(jié)束,輸出基于第i個模板的檢測結(jié)果。
為了驗證基于CFA單元陣列的算法對本單元陣列的圖像有效,本文用圖3中4種單元陣列來驗證。
(a)BGGR (b)GBRG (c)GRBG (d)RGGB圖3 CFA單元陣列
由于本文的研究工作主要是集中在篡改檢測,對CFA單元陣列的評估沒有做過多的研究,為了獲得4種陣列的圖像,借用相機內(nèi)部圖像獲取原理。首先,對BMP圖像進行濾波,獲取4種陣列對應(yīng)的灰度圖,然后用文獻(xiàn)[11]的方法將其插值成為彩色圖像,這樣就得到了具有4種單元陣列的圖像。這里對兩張原始圖像分別做4種陣列轉(zhuǎn)化。接著使用一張圖像(圖4)對上述圖像進行篡改,其中篡改部分進行了羽化和平滑處理,為了加以區(qū)分,令相同圖像內(nèi)容的篡改位置不一樣,如圖5所示。
圖4 原始圖像
(a)BGGR陣列 (b)GBRG陣列
(c)GRBG陣列 (d)RGGB陣列(1)圖像1
(a)BGGR陣列 (b)GBRG陣列
(c)GRBG陣列 (d)RGGB陣列(2)圖像2圖5 制作圖像篡改結(jié)果
得到篡改圖像后,對4種不同的CFA單元陣列圖像使用其對應(yīng)的陣列模板進行特征提取。由于4種陣列中真實綠色值都占一半,所以對綠色通道進行分析。這里預(yù)測插值算法先選用雙三次插值,后面部分將對不同插值算法進行比較,特征直方圖如圖6所示。
從特征直方圖可以看出,所有的直方圖都是兩種高斯模型疊加的結(jié)果,高斯混合模型和單個高斯模型類似,因為篡改部分只占圖像的很少部分。
(a)BGGR陣列 (b)GBRG陣列
(c)GRBG陣列 (d)RGGB陣列(1)圖像1
(a)BGGR陣列 (b)GBRG陣列
(c)GRBG陣列 (d)RGGB陣列(2)圖像2圖6 制作圖像篡改后的特征直方圖
接著使用EM算法對高斯混合模型的參數(shù)進行估計,估計結(jié)果如表1所示。
表1 制作圖像篡改后的高斯混合模型參數(shù)
其中,均值表示單高斯模型的對稱軸位置,標(biāo)準(zhǔn)差表示特征的分布情況,其值越小,代表特征分布越密集,反之,則越擴散。表1中篡改位置的標(biāo)準(zhǔn)差比其對應(yīng)的非篡改位置的標(biāo)準(zhǔn)差小,也印證了非篡改位置的特征比較分散。從篡改位置的均值可以看出,最終得到的值不為零,表明本文的改進更符合實際。最后給出實驗的檢測結(jié)果,如圖7所示。
(a)BGGR陣列 (b)GBRG陣列
(c)GRBG陣列 (d)RGGB陣列(1)圖像1
(a)BGGR陣列 (b)GBRG陣列
(c)GRBG陣列 (d)RGGB陣列
實驗結(jié)果顯示,基于不同模板的算法對各自CFA單元陣列都具有很好的實驗效果。其中,圖像2的檢測效果要高于圖像1,這是因為圖像1的上半部分是比較平坦的區(qū)域,灰度值之間的差距不大,插值位置和真實位置的像素對周圍像素的依賴性較弱,其相關(guān)性的差異沒有非平坦區(qū)域大。上述實驗結(jié)果表明:基于CFA的模板越多,就越容易檢測出圖像的篡改區(qū)域。
為了驗證算法對真實照片的檢測效果,本文對尼康D7000拍攝的3張原始圖像進行篡改,得到3張篡改圖像,為了篡改簡便,用網(wǎng)絡(luò)圖片中心的花朵作為篡改目標(biāo),通過Photoshop CS6軟件拼接到3張原始圖像中,如圖8所示。
(a)網(wǎng)絡(luò)圖片
(b)原圖a (c)原圖b (d)原圖c
(e)篡改圖像a (f)篡改圖像b (g)篡改圖像c圖8 原圖及篡改圖像
得到篡改圖像后,選用雙線性插值算法和雙三次插值算法對圖像進行預(yù)測估計,然后根據(jù)預(yù)測誤差得到每個點的局部加權(quán)方差,最后用公式(10)計算得到每個CFA單元的特征。用EM算法對經(jīng)兩種預(yù)測算法得到的3張篡改圖像的特征進行參數(shù)估計,用公式(17)計算出每個特征的似然率。為了顯示不同預(yù)測插值算法對同一張篡改圖像的篡改檢測,圖9給出了通過兩種預(yù)測插值算法檢測的似然率圖。
(a)雙線性預(yù)測 (b)雙三次預(yù)測(1)篡改圖像a
(a)雙線性預(yù)測 (b)雙三次預(yù)測(2)篡改圖像b
(a)雙線性預(yù)測 (b)雙三次預(yù)測(3)篡改圖像c圖9 檢測似然率圖
從圖9顯示的兩組似然圖可以看出:兩種預(yù)測插值算法得到的篡改區(qū)域都可以很好地定位篡改區(qū)域,并且邊緣定位都較好。但是從篡改區(qū)域的亮度可以看出,基于雙三次預(yù)測插值的算法比基于雙線性預(yù)測插值的算法具有更高的執(zhí)行度,所以本文選用雙三次插值算法作為最終的預(yù)測算法。
不同圖像之間的拼接篡改是嚴(yán)重類篡改行為中比較常見的篡改行為,為了進一步驗證本文算法的優(yōu)越性,將本文算法和另外兩種算法用于對不同圖像之間拼接篡改的檢測,以做對比分析。第一種是基于JPEG塊效應(yīng)的檢測算法[12],記為塊效應(yīng)算法,其思想是首先估計圖像的DCT壓縮量化表,然后根據(jù)量化表計算出每個塊的塊效應(yīng)值,最后將塊效應(yīng)值大于閾值的塊確定為可疑區(qū)域;第二種是錯誤水平分析(Error Level Analysis,ELA)算法[13],ELA算法是通過在不同的壓縮率下識別JPEG圖像質(zhì)量的下降水平即錯誤水平來判斷篡改區(qū)域。對于一個沒有經(jīng)過篡改的圖像,其每個區(qū)域的錯誤水平應(yīng)該保持一致;相反,如果圖像的某個區(qū)域錯誤水平不一樣,則很可能是經(jīng)過篡改得到的。圖10給出了3種算法的對比檢測結(jié)果。
(a)塊效應(yīng)算法 (b)ELA算法 (c)本文算法(1)篡改圖像a
(a)塊效應(yīng)算法 (b)ELA算法 (c)本文算法(2)篡改圖像b
(a)塊效應(yīng)算法 (b)ELA算法 (c)本文算法(3)篡改圖像c圖10 對比檢測結(jié)果
通過上面的檢測效果可看出,3種算法都可定位到篡改區(qū)域,但是塊效應(yīng)算法只定位到了篡改區(qū)域的一部分,正確檢測率較低;ELA算法雖然定位到了整個篡改區(qū)域,但也定位到了非篡改區(qū)域,誤檢測率較高,兩種算法都受到JPEG壓縮質(zhì)量因子的影響,如果篡改區(qū)域和非篡改區(qū)域的質(zhì)量因子相差不大,檢測效果都比較差。相比前兩種算法,本文算法檢測效果較好,尤其是在篡改區(qū)域的邊緣上。
本文對現(xiàn)有基于CFA模型的檢測算法進行了改進,并對篡改圖像做了檢測對比。首先為了驗證特征模型和檢測算法的有效性,本文使用了4種常用的CFA單元陣列進行了實驗分析,檢驗結(jié)果表明所選算法具有很好的檢測能力。然后將雙線性插值算法和雙三次插值算法對篡改圖像進行了預(yù)測估計,實驗結(jié)果顯示不同的預(yù)測插值算法對圖像篡改檢測結(jié)果影響很大,離圖像內(nèi)部的插值算法越接近的插值算法對檢測效果越好。圖像篡改定位結(jié)果顯示本文改進的檢測算法可以對不同圖像之間的拼接篡改進行準(zhǔn)確定位。