本發(fā)明涉及基于邊緣檢測的圖像隱寫方法的原理,實(shí)現(xiàn)在公開的通信網(wǎng)絡(luò)中達(dá)到隱秘的傳輸。
背景技術(shù):
目前的基于邊緣檢測的方法,如Modi et al.(2013)將邊緣檢測方法用于圖像隱寫,它是在邊緣像素點(diǎn)處隱寫2位信息,從單通道的角度上來說提高了隱寫率。如果一幅圖像從三個(gè)通道上進(jìn)行隱寫,接收方接收到隱寫圖像后進(jìn)行邊緣檢測,與原始載體圖像進(jìn)行邊緣檢測會有所不同,因此無法會付出隱寫圖像。
因此采用一種折中方案,對于一幅彩色圖像中選用一個(gè)通道進(jìn)行邊緣檢測,確定哪些位置用于隱寫2位信息,而剩下的2個(gè)通道用來進(jìn)行圖像隱寫,因此整體上,圖像隱寫率就降低了。對于彩色圖像而言,隱寫率只能達(dá)到0.083bpp,而該方法對灰度圖像而言是無效的。
使用灰度圖像嵌入信息的方法有:將圖像分成若干不重疊的n*n的塊;然后分別計(jì)算水平、垂直和對角線方向的梯度,找出其中最大值,如果最大值大于設(shè)定閾值則認(rèn)為是邊緣塊,否則認(rèn)為非邊緣塊;將圖像按照塊進(jìn)行組合,其中邊緣塊處設(shè)為1,非邊緣塊設(shè)為0;對于邊緣塊,對當(dāng)前像素以及四鄰域域組成的陰影部分進(jìn)行嵌入。因?yàn)檫吘墮z測算法主要是根據(jù)相鄰像素點(diǎn)的強(qiáng)度關(guān)系得到邊緣結(jié)果,對于相鄰部分只要保持其相鄰節(jié)點(diǎn)之間的梯度值一致就能保證隱寫結(jié)果 和原始載體圖像進(jìn)行邊緣檢測后的結(jié)果保持一致,也就可以用于三個(gè)通道同時(shí)隱寫圖像數(shù)據(jù)了。該方法嵌入規(guī)則較為復(fù)雜,嵌入率不高。
使用隱寫和邊緣作為關(guān)鍵詞,搜索到的相關(guān)專利有67條記錄,經(jīng)過分析,沒有一條跟本申請專利內(nèi)容存在關(guān)聯(lián)度。
技術(shù)實(shí)現(xiàn)要素:
本專利針對現(xiàn)有技術(shù)存在的問題,提供一種基于邊緣檢測的灰度圖像隱寫方法,以解決在公開的通信信道中安全的傳輸。
為解決上述問題,本發(fā)明提供的具體技術(shù)方案分成兩部分,主要如下:
一種基于邊緣檢測的灰度圖像隱寫方法,預(yù)先實(shí)現(xiàn)對機(jī)密信息的隱藏,選擇一幅大小為m×n的灰度圖像I,為了進(jìn)一步提高安全性可以通過某種加密機(jī)制得到的秘密信息二進(jìn)制流序列S,所述方法步驟包括:
步驟一:機(jī)密信息的編碼。
計(jì)算機(jī)以字節(jié)碼的形式讀取需要隱藏的機(jī)密文件,得到未加密的字節(jié)碼序列;
對未加密的字節(jié)碼序列采用某種加密機(jī)制,獲取加密后的字節(jié)碼序列,然后通過二進(jìn)制轉(zhuǎn)換器轉(zhuǎn)換加密字節(jié)碼序列為二進(jìn)制序列S。
步驟二:邊緣檢測算法提取輪廓與非輪廓像素點(diǎn)序列。
預(yù)先獲取灰度圖像每一位像素值的高6位信息,構(gòu)成新的灰度圖像IN;
由灰度圖像IN調(diào)用邊緣檢測算法把圖像I的像素點(diǎn)分成兩類序 列,分別是輪廓部位序列Po與非輪廓部位序列Pz,也就是把圖像I二值化,1代表輪廓部位,0代表非輪廓部位;
劃分之后,輪廓與非輪廓部位的像素點(diǎn)序列可以表示成Po=o1o2L on,Pz=z1z2L zn。
步驟三:根據(jù)輪廓與非輪廓像素點(diǎn)序列對二進(jìn)制序列進(jìn)行劃分。
根據(jù)輪廓與非輪廓像素點(diǎn)序列的長度對二進(jìn)制序列劃分,劃分的二進(jìn)制分成兩部分,對應(yīng)的長度不能超過輪廓與非輪廓像素點(diǎn)序列的長度;
在劃分之前,需要把待嵌入的二進(jìn)制序列長度與機(jī)密文件的后綴名轉(zhuǎn)換成二進(jìn)制序列一并嵌入,長度與機(jī)密文件的后綴名的嵌入應(yīng)該在輪廓與非輪廓像素點(diǎn)序列的特定位置;
添加機(jī)密文件后綴名二進(jìn)制序列與長度二進(jìn)制序列后,最終輪廓與非輪廓部位待嵌入的二進(jìn)制序列為SO與SZ。
步驟四:劃分的二進(jìn)制序列SO與SZ嵌入輪廓與非輪廓像素點(diǎn)序列Po與Pz。
按照隨機(jī)最低有效位隱寫算法,預(yù)先分別嵌入后綴名與二進(jìn)制序列長度的二進(jìn)制,嵌入到輪廓與非輪廓像素點(diǎn)序列的指定位置;
在輪廓與非輪廓像素點(diǎn)序列未嵌入部分,同樣按照最低有效位隱寫算法批量嵌入機(jī)密信息的二進(jìn)制序列;
嵌入的時(shí)需要滿足:像素點(diǎn)的奇偶性與二進(jìn)制序列的奇偶性匹配,即二進(jìn)制與像素點(diǎn)的奇偶性不一致時(shí),對像素點(diǎn)進(jìn)行加減1;
當(dāng)像素點(diǎn)的值是介于0到3時(shí),進(jìn)行隨機(jī)的加減,當(dāng)像素點(diǎn)的值 是0時(shí),像素點(diǎn)只能進(jìn)行加1,當(dāng)像素點(diǎn)的值是3時(shí),像素點(diǎn)只能進(jìn)行減1;
對嵌入的兩部分序列按照先前灰度圖像的位置,構(gòu)成二維數(shù)組,寫入隱藏機(jī)密信息的灰度圖像,即載密的灰度圖像IS。
一種基于邊緣檢測的灰度圖像隱寫方法,從載密灰度圖像IS提取機(jī)密文件,所述方法步驟包括:
步驟一:載密灰度圖像輪廓與非輪廓像素點(diǎn)序列的分區(qū)。
預(yù)先提取載密圖像所有像素點(diǎn)高6位的信息,得到由高6位組成的新灰度圖像IN,與嵌入方法步驟的新灰度圖像保持一致;
邊緣檢測算法對灰度圖像IN進(jìn)行邊緣提取,按照邊緣提取的位置劃分IS為輪廓與非輪廓像素點(diǎn)序列。
步驟二:從劃分的像素點(diǎn)序列中提取二進(jìn)制序列。
在輪廓與非輪廓像素點(diǎn)序列的特定位置,通過奇偶性判斷獲取長度二進(jìn)制序列與文件后綴名二進(jìn)制序列,再由編碼轉(zhuǎn)換得到輪廓與非輪廓像素點(diǎn)序列嵌入的二進(jìn)制序列的長度與文件后綴名;
通過上面獲取的二進(jìn)制序列長度值,分別判斷輪廓與非輪廓像素點(diǎn)序列指定長度的奇偶性,獲取嵌入的二進(jìn)制序列,再把兩部分的二進(jìn)制序列組合在一起得到機(jī)密文件的二進(jìn)制序列。
步驟三:二進(jìn)制序列的編碼轉(zhuǎn)換獲取機(jī)密文件。
用上面獲取的二進(jìn)制序列轉(zhuǎn)換成字節(jié)碼,獲得的是未解密的字節(jié)碼序列;
對為解密的字節(jié)碼序列解密過程,需要正確的密碼與嵌入方法步 驟相同的加密機(jī)制。通過解密獲取解密的字節(jié)碼序列,把破譯的字節(jié)碼序列寫成文件,即機(jī)密文件信息。
附圖說明
圖1是本發(fā)明實(shí)施例機(jī)密文件信息的編碼流程圖;
圖2是本發(fā)明實(shí)施例邊緣檢測算法提取輪廓與非輪廓像素點(diǎn)序列流程圖;
圖3是本發(fā)明實(shí)施例輪廓與非輪廓像素點(diǎn)序列對二進(jìn)制序列的劃分流程圖;
圖4是本發(fā)明實(shí)施例劃分二進(jìn)制序列嵌入輪廓與非輪廓像素點(diǎn)序列流程圖;
圖5是本發(fā)明實(shí)施例輪廓與非輪廓像素點(diǎn)序列提取機(jī)密文件加密后的二進(jìn)制序列流程圖;
圖6是本發(fā)明實(shí)施例二進(jìn)制序列的編碼轉(zhuǎn)換獲取機(jī)密文件流程圖。
具體實(shí)施方式
為使本發(fā)明的上述方法步驟、目的和特征能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對本發(fā)明實(shí)施例作進(jìn)一步詳細(xì)的說明。
本發(fā)明實(shí)施例中提供的實(shí)現(xiàn)基于邊緣檢測的灰度圖像的隱寫方法,是針對現(xiàn)有隨機(jī)最低有效位匹配算法的衍生,主要作用是機(jī)密信息在公開通信通道中隱蔽的安全的傳輸。實(shí)現(xiàn)了機(jī)密文件隱藏到灰度圖像,而人眼視覺無法察覺;在以圖像作為隱蔽防護(hù)層的前提下,通過與加密機(jī)制的結(jié)合更難破譯機(jī)密信息;接收方從載密圖像中獲取機(jī) 密文件,必須需要正確的解碼密鑰。
本發(fā)明實(shí)施例將從發(fā)送方與接收方進(jìn)行通信的過程進(jìn)行方法步驟的描述,即本發(fā)明實(shí)施例其主要分成發(fā)送方的加密過程與接收方的解密過程。
參見圖1所示,是本發(fā)明實(shí)施例中提供的機(jī)密文件信息的編碼過程,可以包括以下步驟:
步驟101:計(jì)算機(jī)以字節(jié)碼的方式讀取需要隱藏的機(jī)密文件,讀取之后產(chǎn)生的是待加密的字節(jié)碼序列。
步驟102:選擇某種加密機(jī)制,能夠人為的提供加密機(jī)制的密碼,通過加密機(jī)制與密碼對待加密的字節(jié)碼序列進(jìn)行加密,獲取加密后的字節(jié)碼序列。
步驟103:加密后的字節(jié)碼序列不能直接嵌入圖像像素點(diǎn)序列中,需要通過字節(jié)碼轉(zhuǎn)二進(jìn)制的轉(zhuǎn)換器轉(zhuǎn)換成二進(jìn)制序列,通過轉(zhuǎn)換器獲取待嵌入的二進(jìn)制序列。
參見圖2所示,是本發(fā)明實(shí)施例中提供的邊緣檢測算法提取灰度圖像輪廓與非輪廓像素點(diǎn)序列過程,可以包括以下步驟:
步驟201:計(jì)算機(jī)讀取灰度圖像,獲取灰度圖像的像素值為一個(gè)二維數(shù)組,對該二維數(shù)組的每一個(gè)值的高6位進(jìn)行提取,重新構(gòu)建一個(gè)二維數(shù)組,即構(gòu)成新的灰度圖像。
步驟202:對構(gòu)成的灰度圖像進(jìn)行邊緣檢測算法提取,于是獲取到新構(gòu)建灰度圖像經(jīng)過邊緣檢測算法處理的二值化圖像,其中二值化圖像為1的位置即對應(yīng)原灰度圖像的輪廓部位,二值化圖像為0的位 置即對應(yīng)原灰度圖像的非輪廓部位。
步驟203:根據(jù)二值化圖像0和1所在的位置與原灰度圖像像素點(diǎn)對應(yīng),提取原灰度圖像輪廓與非輪廓部位的像素點(diǎn),構(gòu)成輪廓與非輪廓像素點(diǎn)序列兩部分。
參見圖3所示,是本發(fā)明實(shí)施例中提供的輪廓與非輪廓像素點(diǎn)序列對二進(jìn)制序列的劃分過程,可以包括以下步驟:
步驟301:根據(jù)輪廓與非輪廓像素點(diǎn)序列的長度確定二進(jìn)制序列的長度,需要滿足劃分的二進(jìn)制序列不能超過輪廓與非輪廓像素點(diǎn)序列的長度,劃分之前需要把文件二進(jìn)制序列長度與后綴名二進(jìn)制序列的特定位置留出來。
步驟302:在讀取機(jī)密文件時(shí),需要獲取機(jī)密文件的后綴名,把獲取的后綴名傳遞到此處。
步驟303:獲取二進(jìn)制序列長度與文件后綴名之后,接下來就需要對獲取的內(nèi)容用二進(jìn)制編碼轉(zhuǎn)換器進(jìn)行二進(jìn)制轉(zhuǎn)換,并分別對輪廓與非輪廓部位待嵌入二進(jìn)制序列的構(gòu)建,即輪廓與非輪廓像素點(diǎn)序列待嵌入的二進(jìn)制序列由文件二進(jìn)制序列長度、后綴名與文件三部分構(gòu)建的二進(jìn)制序列。
參見圖4所示,是本發(fā)明實(shí)施例中提供的劃分的二進(jìn)制序列嵌入輪廓與非輪廓像素點(diǎn)序列過程,可以包括以下步驟:
步驟401:取出輪廓或非輪廓部位待嵌入二進(jìn)制序列中一個(gè)比特,以及輪廓與非輪廓像素點(diǎn)序列中一個(gè)像素值,傳入步驟402中,即隨機(jī)LSB匹配隱寫算法中。
步驟402:針對一個(gè)比特與一個(gè)像素值,預(yù)先對兩個(gè)值的奇偶性進(jìn)行判斷,如果兩個(gè)的奇偶性一致,這圖像的像素值不需要改變,如果兩個(gè)的奇偶性不一致,則需要改變。改變的過程:首先需要提取圖像像素值低兩位的信息,即X。如果X的值是介于0到3之間,則通過產(chǎn)生的隨機(jī)數(shù)進(jìn)行隨機(jī)加減1,如果X=0,則圖像像素值只能加1,如果X=3,則圖像像素值只能減1。
步驟403:按照步驟402所述的要求,對輪廓與非輪廓像素點(diǎn)序列的所有像素點(diǎn)都這樣處理,分別得到嵌入二進(jìn)制序列信息的輪廓與非輪廓像素點(diǎn)序列,最后對兩個(gè)序列進(jìn)行重組成矩陣,寫入載密的灰度圖像。
由上面的方法步驟說明發(fā)送者獲取到載密的灰度圖像,然后通過傳輸信道發(fā)送載密圖像給接收方,接收方得到載密圖像之后需要處理的方法步驟如下:
預(yù)先對載密圖像進(jìn)行邊緣提取,其方法步驟同發(fā)送者嵌入過程的邊緣提取,現(xiàn)在只是對載密的灰度圖像進(jìn)行處理,其過程可以參見圖2。
參見圖5所示,是本發(fā)明實(shí)施例中提供的輪廓與非輪廓像素點(diǎn)序列提取機(jī)密文件加密后的二進(jìn)制序列過程,可以包括以下步驟:
步驟501:在邊緣提取劃分好的輪廓與非輪廓像素點(diǎn)序列特定位置,通過奇偶檢驗(yàn)器進(jìn)行奇偶性判斷獲取兩部分嵌入的二進(jìn)制序列的長度與后綴名的二進(jìn)制流,再對獲取的二進(jìn)制流通過轉(zhuǎn)碼器進(jìn)行相應(yīng)的轉(zhuǎn)碼,得到輪廓與非輪廓部位嵌入的二進(jìn)制序列長度值和機(jī)密文件 后綴名字符串。
步驟502:通過上面輪廓與非輪廓部位嵌入的二進(jìn)制序列長度值,根據(jù)輪廓與非輪廓部位獲取的二進(jìn)制序列長度值,進(jìn)行指定長度的奇偶性判斷,獲取輪廓與非輪廓兩部分的二進(jìn)制序列,最后組合獲取的兩部分二進(jìn)制序列,即機(jī)密文件加密后的二進(jìn)制序列。
參見圖6所示,是本發(fā)明實(shí)施例中提供的二進(jìn)制序列的編碼轉(zhuǎn)換獲取機(jī)密文件過程,可以包括以下步驟:
步驟601:通過字節(jié)碼轉(zhuǎn)換器對機(jī)密文件的二進(jìn)制序列進(jìn)行轉(zhuǎn)碼,獲取到機(jī)密文件未解密的字節(jié)碼序列。
步驟602:把未解密的字節(jié)碼序列和解密的密鑰傳入同嵌入過程相同的加密器中,通過加密器的解密機(jī)制對未解密的字節(jié)碼序列進(jìn)行解密,獲取機(jī)密文件的字節(jié)碼序列,最終把字節(jié)碼序列結(jié)合上面獲取的機(jī)密文件后綴名寫入文件,即文件的還原。