本發(fā)明屬于圖像加密技術(shù)領(lǐng)域,尤其涉及一種圖像的編碼加密方法及裝置。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,數(shù)字圖像在開(kāi)放網(wǎng)絡(luò)環(huán)境下的傳輸存在著巨大的安全隱患。例如,包含有重要信息或隱私信息的圖像有可能被截取、篡改或擅自公開(kāi),從而導(dǎo)致嚴(yán)重的后果,給數(shù)字圖像的擁有者造成巨大的損失。因此,數(shù)字圖像的安全性傳輸問(wèn)題得到了人們?cè)絹?lái)越多的關(guān)注,圖像的加密技術(shù)也因此得到了逐步的發(fā)展。
目前,對(duì)于數(shù)字圖像的加密主要是通過(guò)數(shù)據(jù)加密標(biāo)準(zhǔn)(Data Encryption Standard,DES)算法和高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)算法來(lái)實(shí)現(xiàn)。雖然此類(lèi)算法可以應(yīng)用于數(shù)字圖像的加密過(guò)程當(dāng)中,但并未考慮到數(shù)字圖像的壓縮問(wèn)題,并非為專門(mén)針對(duì)數(shù)字圖像信息特點(diǎn)的加密算法。此外,現(xiàn)有加密算法的計(jì)算量過(guò)大,加密過(guò)程復(fù)雜,從而使得后期圖像編碼時(shí)的編碼效率較低。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的在于提供一種圖像的編碼加密方法及裝置,旨在解決現(xiàn)有技術(shù)中圖像加密算法的計(jì)算量過(guò)大、加密過(guò)程復(fù)雜、后期圖像編碼時(shí)的編碼效率較低的問(wèn)題。
本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種圖像的編碼加密方法,包括:
獲取原始圖像數(shù)據(jù);
生成關(guān)于所述原始圖像數(shù)據(jù)的多個(gè)量化系數(shù)序列,每個(gè)所述量化系數(shù)序列對(duì)應(yīng)所述原始圖像數(shù)據(jù)中的一個(gè)子數(shù)據(jù)塊;
以非重復(fù)整數(shù)序列作為密鑰序列,分別對(duì)所述量化系數(shù)序列進(jìn)行加密處理;
對(duì)加密后的所述量化系數(shù)序列進(jìn)行編碼,得到所述原始圖像數(shù)據(jù)的編碼加密數(shù)據(jù)。
本發(fā)明實(shí)施例的另一目的在于提供一種圖像的編碼加密裝置,包括:
獲取單元,用于獲取原始圖像數(shù)據(jù);
第一生成單元,用于生成關(guān)于所述原始圖像數(shù)據(jù)的多個(gè)量化系數(shù)序列,每個(gè)所述量化系數(shù)序列對(duì)應(yīng)所述原始圖像數(shù)據(jù)中的一個(gè)子數(shù)據(jù)塊;
加密單元,用于以非重復(fù)整數(shù)序列作為密鑰序列,分別對(duì)所述量化系數(shù)序列進(jìn)行加密處理;
編碼單元,用于對(duì)加密后的所述量化系數(shù)序列進(jìn)行編碼,得到所述原始圖像數(shù)據(jù)的編碼加密數(shù)據(jù)。
在本發(fā)明實(shí)施例中,以多個(gè)量化系數(shù)序列表示一個(gè)原始圖像的數(shù)據(jù),僅利用非重復(fù)整數(shù)序列來(lái)作為密鑰序列,即可完成對(duì)多個(gè)量化系數(shù)序列的加密處理,從而得到了原始圖像的加密數(shù)據(jù)。只有在同時(shí)獲得所有量化系數(shù)序列的加密數(shù)據(jù)以及獲得密鑰序列時(shí),才能解密出原始圖像數(shù)據(jù),因此加密過(guò)程簡(jiǎn)單、計(jì)算量小、加密效率高。本發(fā)明實(shí)施例提供的圖像的編碼加密方法能夠?qū)iT(mén)應(yīng)用于數(shù)字圖像領(lǐng)域,保證了圖像像素間的相關(guān)性不受破壞,有利于數(shù)字圖像后期編碼時(shí)的壓縮處理,由于在圖像數(shù)據(jù)的原有編碼環(huán)節(jié)中直接對(duì)圖像數(shù)據(jù)進(jìn)行了加密,且加密數(shù)據(jù)較小,因此降低了編碼的數(shù)據(jù)量,由此也進(jìn)一步提高了圖像的編碼效率。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的圖像的編碼加密方法的實(shí)現(xiàn)流程圖;
圖2是本發(fā)明實(shí)施例提供的圖像的編碼加密方法S102的具體實(shí)現(xiàn)流程圖;
圖3是本發(fā)明實(shí)施例中對(duì)應(yīng)R、G、B維度的三個(gè)色彩平面數(shù)據(jù)轉(zhuǎn)換為對(duì)應(yīng)Y、U、V維度的三個(gè)色彩平面數(shù)據(jù)的示意圖;
圖4是本發(fā)明實(shí)施例提供的Y維度色彩平面數(shù)據(jù)中,一個(gè)子數(shù)據(jù)塊經(jīng)過(guò)DCT變換以及量化后得到的量化系數(shù)矩陣的示意圖;
圖5是本發(fā)明實(shí)施例提供的通過(guò)zig-zag方式掃描量化系數(shù)矩陣的示意圖;
圖6是本發(fā)明另一實(shí)施例提供的圖像的編碼加密方法的實(shí)現(xiàn)流程圖;
圖7是本發(fā)明另一實(shí)施例提供的圖像的編碼加密方法S603的具體實(shí)現(xiàn)流程圖;
圖8是本發(fā)明另一實(shí)施例提供的對(duì)一個(gè)標(biāo)準(zhǔn)序列中的各個(gè)整數(shù)進(jìn)行置亂,以生成非重復(fù)整數(shù)序列的示意圖;
圖9是本發(fā)明又一實(shí)施例提供的圖像的編碼加密方法S603的具體實(shí)現(xiàn)流程圖;
圖10是本發(fā)明又一實(shí)施例提供的量化系數(shù)序列中系數(shù)的加密示意圖;
圖11是本發(fā)明實(shí)施例提供的圖像的編碼加密裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
在本發(fā)明實(shí)施例中,以多個(gè)量化系數(shù)序列表示一個(gè)原始圖像的數(shù)據(jù),僅利用非重復(fù)整數(shù)序列來(lái)作為密鑰序列,即可完成對(duì)多個(gè)量化系數(shù)序列的加密處理,從而得到了原始圖像的加密數(shù)據(jù)。只有在同時(shí)獲得所有量化系數(shù)序列的加密數(shù)據(jù)以及獲得密鑰序列時(shí),才能解密出原始圖像數(shù)據(jù),因此加密過(guò)程簡(jiǎn)單、計(jì)算量小、加密效率高。本發(fā)明實(shí)施例提供的圖像的編碼加密方法能夠?qū)iT(mén)應(yīng)用于數(shù)字圖像領(lǐng)域,保證了圖像像素間的相關(guān)性不受破壞,有利于數(shù)字圖像后期編碼時(shí)的壓縮處理,由于在圖像數(shù)據(jù)的原有編碼環(huán)節(jié)中直接對(duì)圖像數(shù)據(jù)進(jìn)行了加密,且加密數(shù)據(jù)較小,因此降低了編碼的數(shù)據(jù)量,由此也進(jìn)一步提高了圖像的編碼效率。
圖1示出了本發(fā)明實(shí)施例提供的圖像的編碼加密方法的實(shí)現(xiàn)流程圖,為了便于說(shuō)明,僅示出了與本實(shí)施例相關(guān)的部分。
在S101中,獲取原始圖像數(shù)據(jù)。
在本實(shí)施例中,原始圖像數(shù)據(jù)具體為位圖的圖像數(shù)據(jù),也可稱為點(diǎn)陣圖像的數(shù)據(jù)。由于位圖是由一個(gè)個(gè)稱為像素的點(diǎn)組成,這些點(diǎn)可以進(jìn)行不同的排列和染色以構(gòu)成圖像。因此,位圖的圖像數(shù)據(jù)能夠相對(duì)容易地獲得其量化系數(shù)序列。
應(yīng)當(dāng)注意的是,本發(fā)明實(shí)施例提供的圖像的編碼加密方法除了應(yīng)用于位圖圖像數(shù)據(jù)之外,還能應(yīng)用其他圖像數(shù)據(jù)當(dāng)中,包括矢量圖圖像數(shù)據(jù)等??梢栽诰幋a加密處理的過(guò)程中,利用預(yù)設(shè)的算法先將任意的圖像數(shù)據(jù)統(tǒng)一轉(zhuǎn)化為基于位圖的原始圖像數(shù)據(jù)。
特別地,所述原始圖像數(shù)據(jù)采用YUV色彩模式。其中,“Y”表示亮度;“U”和“V”表示色度,用以描述原始圖像的色彩及飽和度,從而指定原始圖像中像素點(diǎn)的顏色。
由于目前RGB色彩模式是工業(yè)界的顏色標(biāo)準(zhǔn),RGB代表紅、綠、藍(lán)三個(gè)維度的顏色,這個(gè)標(biāo)準(zhǔn)幾乎包括了人類(lèi)視力所能感知的所有顏色,是目前運(yùn)用最廣的顏色系統(tǒng)之一。因此,作為本發(fā)明的一個(gè)實(shí)施例,所述獲取原始圖像數(shù)據(jù)包括:獲取基于RGB色彩空間的待處理圖像數(shù)據(jù);對(duì)所述待處理圖像數(shù)據(jù)進(jìn)行色彩空間的轉(zhuǎn)換,以獲取基于YUV色彩空間的原始圖像數(shù)據(jù)。
基于YUV色彩空間的原始圖像數(shù)據(jù)即為上述采用YUV色彩模式的原始圖像數(shù)據(jù)。對(duì)基于RGB色彩空間的待處理圖像數(shù)據(jù)進(jìn)行色彩空間的轉(zhuǎn)換,通過(guò)如下轉(zhuǎn)換公式來(lái)實(shí)現(xiàn):
上式中,R、G、B表示任一像素點(diǎn)的色彩值分別在紅、綠、藍(lán)三個(gè)色彩維度中的分量值,即紅色值、綠色值以及藍(lán)色值。Y、U、V表示該像素點(diǎn)經(jīng)過(guò)色域轉(zhuǎn)換后,分別在Y、U、V三個(gè)色彩維度中的分量值。
依照該轉(zhuǎn)換公式來(lái)對(duì)待處理圖像數(shù)據(jù)中的每個(gè)像素點(diǎn)進(jìn)行處理,得到每個(gè)像素點(diǎn)分別在YUV三個(gè)色彩維度中的分量值。經(jīng)過(guò)轉(zhuǎn)換處理后,所有像素點(diǎn)色彩分量值的集合構(gòu)成了基于YUV色彩空間的原始圖像數(shù)據(jù)。
在S102中,生成關(guān)于所述原始圖像數(shù)據(jù)的多個(gè)量化系數(shù)序列,每個(gè)所述量化系數(shù)序列對(duì)應(yīng)所述原始圖像數(shù)據(jù)中的一個(gè)子數(shù)據(jù)塊。
原始圖像數(shù)據(jù)可分成多個(gè)子數(shù)據(jù)塊,為了對(duì)每個(gè)子數(shù)據(jù)塊進(jìn)行分析處理,以一個(gè)量化系數(shù)序列來(lái)表示一個(gè)子數(shù)據(jù)塊。
作為本發(fā)明的一個(gè)實(shí)施例,如圖2所示,S102具體為:
在S201中,分別獲取所述原始圖像數(shù)據(jù)在各個(gè)色彩維度的色彩平面數(shù)據(jù)。
原始圖像數(shù)據(jù)采用YUV色彩模式,因此原始圖像數(shù)據(jù)包含三個(gè)色彩維度。將原始圖像數(shù)據(jù)分成三個(gè)色彩平面數(shù)據(jù),每個(gè)色彩平面數(shù)據(jù)表示原始圖像數(shù)據(jù)在單一色彩維度中的色彩數(shù)據(jù)值,且每個(gè)色彩平面數(shù)據(jù)包含了原始圖像中所有像素點(diǎn)在該色彩維度中的色彩分量。
如圖3所示,RGB色彩模式下的待處理圖像數(shù)據(jù)可看做由R、G、B維度的三個(gè)色彩平面構(gòu)成的圖像數(shù)據(jù),將待處理圖像數(shù)據(jù)進(jìn)行色彩空間的轉(zhuǎn)換后,得到由Y、U、V維度的三個(gè)色彩平面構(gòu)成的原始圖像數(shù)據(jù)。
在S202中,將每個(gè)所述色彩平面數(shù)據(jù)分割成預(yù)設(shè)大小的多個(gè)子數(shù)據(jù)塊。
色彩平面數(shù)據(jù)包含多個(gè)最小數(shù)據(jù)單元,將固定數(shù)量的最小數(shù)據(jù)單元作為一個(gè)子數(shù)據(jù)塊,其中,每個(gè)子數(shù)據(jù)的大小為8X8。因此,一個(gè)Y平面數(shù)據(jù)、U平面數(shù)據(jù)或V平面數(shù)據(jù)均由多個(gè)所述子數(shù)據(jù)塊組成。
在S203中,通過(guò)DCT(Discrete Cosine Transform,離散余弦變換)分析所述子數(shù)據(jù)塊,采集所述子數(shù)據(jù)塊在頻域中的各個(gè)色彩分量。
利用DCT變換公式對(duì)每個(gè)8x8子數(shù)據(jù)塊中的每行數(shù)據(jù)進(jìn)行變換,然后再對(duì)每列數(shù)據(jù)進(jìn)行變換。由于子數(shù)據(jù)塊中的大部分能量均集中于頻率域的一個(gè)小范圍內(nèi),因此,在本實(shí)施例中,通過(guò)DCT變換,將空域上的子數(shù)據(jù)塊轉(zhuǎn)換為頻域上的子數(shù)據(jù)塊,從而能夠在頻域中獲取每個(gè)子數(shù)據(jù)塊的色彩分量,滿足后續(xù)色彩分量量化過(guò)程中的靈敏度需求。
在S204中,根據(jù)預(yù)設(shè)的色彩量化表,量化所述各個(gè)色彩分量。
量化時(shí),Y維度的色彩平面數(shù)據(jù)使用亮度量化表來(lái)量化其平面中的色彩分量,U、V維度的色彩平面數(shù)據(jù)使用色度量化表來(lái)量化其平面中的色彩分量。同一色彩平面數(shù)據(jù)中的色彩分量為最小數(shù)據(jù)單元在同一維度下的色彩分量。如,Y維度的色彩平面數(shù)據(jù)中僅包含有Y維度下的色彩分量。
在本實(shí)施例中,亮度量化表和色度量化表均存儲(chǔ)在系統(tǒng)中。作為一個(gè)示例,采用的兩個(gè)色彩量化表可如表1所示:
表1
在Y維度的色彩平面數(shù)據(jù)對(duì)應(yīng)的頻域中,對(duì)每個(gè)最小數(shù)據(jù)單元內(nèi)像素點(diǎn)的色彩分量進(jìn)行量化,即對(duì)其亮度值進(jìn)行量化。將該像素點(diǎn)的亮度值對(duì)應(yīng)的DCT系數(shù)除以該像素點(diǎn)對(duì)應(yīng)的量化步長(zhǎng),并將計(jì)算結(jié)果取整,從而獲得量化后的亮度值。該過(guò)程實(shí)現(xiàn)了將色彩分量的連續(xù)取值近似為離散值。其中,該量化步長(zhǎng)為表1中亮度量化表內(nèi)的元素值,且8X8亮度量化表中的元素與8X8子數(shù)據(jù)塊中的最小數(shù)據(jù)單元一一對(duì)應(yīng)。
在U、V維度的色彩平面數(shù)據(jù)中,每個(gè)子數(shù)據(jù)塊的色彩分量量化原理與在Y維度的色彩平面數(shù)據(jù)中每個(gè)子數(shù)據(jù)塊的色彩分量量化原理相同,區(qū)別僅在于U、V維度的色彩分量的量化步長(zhǎng)由色度量化表來(lái)給定,量化的是最小數(shù)據(jù)單元中像素點(diǎn)的色度值。
在S205中,分別生成每個(gè)所述子數(shù)據(jù)塊的量化系數(shù)矩陣,每一個(gè)所述量化系數(shù)矩陣中包含有多個(gè)系數(shù),所述系數(shù)為所述子數(shù)據(jù)塊中所述色彩分量的量化值。
在8X8的子數(shù)據(jù)塊中,每個(gè)色彩分量的量化值均作為一個(gè)系數(shù),每個(gè)子數(shù)據(jù)塊對(duì)應(yīng)形成了一個(gè)8X8的量化系數(shù)矩陣。
圖4示出了Y維度的色彩平面數(shù)據(jù)中,一個(gè)子數(shù)據(jù)塊經(jīng)過(guò)DCT變換以及量化后得到的量化系數(shù)矩陣,可看出,該矩陣中包含有64個(gè)系數(shù)。
在S206中,將一個(gè)所述量化系數(shù)矩陣中所有所述系數(shù)構(gòu)成的一個(gè)序列輸出為一個(gè)量化系數(shù)序列。
提取量化系數(shù)矩陣中的所有系數(shù),并對(duì)其進(jìn)行排列,得到一個(gè)量化系數(shù)序列。
作為本發(fā)明的一個(gè)實(shí)施例,如圖5所示,利用zig-zag方式對(duì)所示量化系數(shù)矩陣進(jìn)行掃描,以得到量化系數(shù)序列。
利用zig-zag掃描的方式,保證了量化系數(shù)矩陣中低頻的色彩分量量化值能夠先被讀取,高頻的色彩分量量化值后被讀取,從而增加行程中連續(xù)“0”的個(gè)數(shù)。
具體地,對(duì)于8X8的量化系數(shù)矩陣,獲取其內(nèi)部的所有量化系數(shù)后,得到的量化系數(shù)序列中包含有64個(gè)元素。其中,量化系數(shù)序列中的第一個(gè)值為DC系數(shù)(直流分量),后面的63個(gè)值為AC系數(shù)(交流分量)。
在S103中,以非重復(fù)整數(shù)序列作為密鑰序列,分別對(duì)所述量化系數(shù)序列進(jìn)行加密處理。
非重復(fù)整數(shù)序列表示該序列中的元素僅為整數(shù),且該序列中不包含有重復(fù)的元素。
作為本發(fā)明的另一個(gè)實(shí)施例,在步驟S103之前,所述方法還包括:生成非重復(fù)整數(shù)序列。
隨機(jī)生成一個(gè)元素個(gè)數(shù)與量化系數(shù)序列中系數(shù)個(gè)數(shù)相同的非重復(fù)整數(shù)序列,作為該量化系數(shù)序列的密鑰序列。利用該密鑰序列來(lái)對(duì)量化系數(shù)序列進(jìn)行加密處理。非重復(fù)整數(shù)序列的生成過(guò)程如圖6所示,具體如下:
在S601中,獲取預(yù)設(shè)的所述非重復(fù)整數(shù)序列的上限值與下限值,所述上限值與下限值之間的差值為所述量化系數(shù)序列的長(zhǎng)度值減一。
為了確定非重復(fù)整數(shù)序列中各個(gè)整數(shù)的取值范圍,先設(shè)定該取值范圍中的最大值和最小值,即為所述非重復(fù)整數(shù)序列的上限值與下限值。由于非重復(fù)整數(shù)序列的長(zhǎng)度只要與需要加密的量化系數(shù)序列的長(zhǎng)度相同即可,因此,令上限值與下限值之間的差值為所述量化系數(shù)序列的長(zhǎng)度值減一。
在本實(shí)施例中,由于獲取到的每個(gè)子數(shù)據(jù)塊的量化系數(shù)序列的長(zhǎng)度為64,因此,非重復(fù)整數(shù)序列的長(zhǎng)度也為64。
在S602中,生成包含所述上限值與下限值之間所有整數(shù)的標(biāo)準(zhǔn)序列,所述標(biāo)準(zhǔn)序列中的各個(gè)所述整數(shù)以升序排序,且每個(gè)整數(shù)對(duì)應(yīng)一個(gè)與排序順序相關(guān)的第一序號(hào)。
上限值與下限值之間的所有整數(shù)可以依次列出,且列出的所有整數(shù)的個(gè)數(shù)總和為量化系數(shù)序列中系數(shù)的總和。生成一個(gè)升序排列的標(biāo)準(zhǔn)序列,該序列中包含有該上限值與下限值之間的所有整數(shù),包括上限值與下限值。每個(gè)整數(shù)擁有一個(gè)序號(hào),該序號(hào)用以表示該整數(shù)處于序列中的哪個(gè)位置。可使用數(shù)字下標(biāo)的方式來(lái)標(biāo)記該序號(hào),且最前的序號(hào)為零,此后每個(gè)序號(hào)依次遞增。
例如,上限值為9,下限值為2,則包含上限值與下限值之間所有整數(shù)的標(biāo)準(zhǔn)序列為A={2,3,4,5,6,7,8,9},其中,“2”和“6”在該標(biāo)準(zhǔn)序列中的第一序號(hào)分別為0和5,即A[0]=2,A[5]=6。
在S603中,將所述標(biāo)準(zhǔn)序列進(jìn)行置亂處理,并將置亂后的所述標(biāo)準(zhǔn)序列輸出為所述非重復(fù)整數(shù)序列。
由于各個(gè)整數(shù)依照升序的順序排列在標(biāo)準(zhǔn)序列中。因此,為了對(duì)量化系數(shù)序列中的各個(gè)系數(shù)進(jìn)行加密置亂處理,需要先對(duì)作為密鑰序列的標(biāo)準(zhǔn)序列進(jìn)行置亂。以使該標(biāo)準(zhǔn)序列中的各個(gè)組成元素能夠依照無(wú)規(guī)則的方式重新排序。
具體地,如圖7所示,S603包括:
在S701中,生成第一區(qū)間中的一個(gè)隨機(jī)數(shù),所述第一區(qū)間的起始點(diǎn)為零,終止點(diǎn)為一個(gè)變化值,且所述終止點(diǎn)的初始值為所述上限值與下限值之間的差值。
在本實(shí)施例中,先生成一個(gè)起始點(diǎn)為零的第一區(qū)間,隨著標(biāo)準(zhǔn)序列中各個(gè)整數(shù)位置的不斷調(diào)整,該區(qū)間的長(zhǎng)度不斷縮小,且每次縮小的長(zhǎng)度為一個(gè)元素的長(zhǎng)度,該過(guò)程通過(guò)調(diào)整第一區(qū)間終止點(diǎn)的數(shù)值來(lái)實(shí)現(xiàn)。初始狀態(tài)下,第一區(qū)間的長(zhǎng)度等于非重復(fù)整數(shù)序列的長(zhǎng)度,因此,第一區(qū)間的右端點(diǎn)或終止點(diǎn)的值為非重復(fù)整數(shù)序列的上限值與下限值之間的差值。
通過(guò)隨機(jī)數(shù)生成器或算法來(lái)生成第一區(qū)間中的一個(gè)隨機(jī)數(shù),該隨機(jī)數(shù)為大于等于零,小于等于終止點(diǎn)的任一整數(shù)。
例如,所述非重復(fù)整數(shù)序列的長(zhǎng)度為L(zhǎng),則初始狀態(tài)下的第一區(qū)間為[0,L-1]。其中,第一區(qū)間終止點(diǎn)的初始值為L(zhǎng)-1,是一個(gè)變化值。生成的隨機(jī)數(shù)為i,則i∈[0,L-1],且i∈Ζ。
在S702中,判斷所述隨機(jī)數(shù)是否與所述終止點(diǎn)相同。
在S703中,當(dāng)所述隨機(jī)數(shù)與所述終止點(diǎn)不同時(shí),將所述標(biāo)準(zhǔn)序列中第一整數(shù)與第二整數(shù)的排序順序互換后,令所述終止點(diǎn)減一,并重新生成第一區(qū)間中的另一個(gè)隨機(jī)數(shù),重復(fù)執(zhí)行判斷,直至所述終止點(diǎn)為零。
當(dāng)前時(shí)刻生成的一個(gè)隨機(jī)數(shù)與當(dāng)前時(shí)刻下第一區(qū)間的終止點(diǎn)不相等時(shí),將標(biāo)準(zhǔn)序列中特定的兩個(gè)整數(shù)的位置進(jìn)行對(duì)換。
在本實(shí)施例中,所述的兩個(gè)整數(shù)稱為第一整數(shù)以及第二整數(shù)。具體地,第一整數(shù)的第一序號(hào)與當(dāng)前生成的隨機(jī)數(shù)相同,第二整數(shù)的第一序號(hào)與當(dāng)前時(shí)刻的終止點(diǎn)相同。即,從標(biāo)準(zhǔn)序列中將序號(hào)等于隨機(jī)數(shù)的第一整數(shù)和序號(hào)等于終止點(diǎn)的第二整數(shù)選取出來(lái)后,交換第一整數(shù)和第二整數(shù)的位置。交換完成后,第一整數(shù)擁有第二整數(shù)原有的序號(hào),第二整數(shù)擁有第一整數(shù)原有的序號(hào)。
順序互換執(zhí)行完畢,令第一區(qū)間中終止點(diǎn)的數(shù)值減一,從而得到更新后的第一區(qū)間。
若此時(shí)第一區(qū)間的終止點(diǎn)為零,則執(zhí)行步驟S705。否則,重復(fù)執(zhí)行步驟S701。
例如,當(dāng)隨機(jī)數(shù)i不等于終止點(diǎn)L-1時(shí),從標(biāo)準(zhǔn)序列A中獲取序號(hào)為隨機(jī)數(shù)i的第一整數(shù)A[i],獲取序號(hào)為變化值L-1的第二整數(shù)A[L-1],交換二者的位置。此后,第一整數(shù)的序號(hào)變?yōu)榱薒-1,第二整數(shù)的序號(hào)變?yōu)榱薸,減一后的終止點(diǎn)為L(zhǎng)-2。再次執(zhí)行S701時(shí),生成第一區(qū)間中的另一個(gè)隨機(jī)數(shù),此時(shí),該隨機(jī)數(shù)應(yīng)當(dāng)滿足i∈[0,L-2]。
在S704中,當(dāng)所述隨機(jī)數(shù)與所述終止點(diǎn)相同時(shí),令所述終止點(diǎn)減一,并重新生成第一區(qū)間中的另一個(gè)隨機(jī)數(shù),重復(fù)執(zhí)行判斷,直至所述終止點(diǎn)為零。
當(dāng)前時(shí)刻生成的一個(gè)隨機(jī)數(shù)等于當(dāng)前時(shí)刻下第一區(qū)間的終止點(diǎn)時(shí),所述第一整數(shù)與第二整數(shù)為相同位置的一個(gè)整數(shù),因此無(wú)需置換,直接令所述終止點(diǎn)減一。若此時(shí)的終止點(diǎn)為零,則執(zhí)行步驟S705。否則,重復(fù)執(zhí)行步驟S701。
在S705中,將置亂后的所述標(biāo)準(zhǔn)序列輸出為所述非重復(fù)整數(shù)序列。
本實(shí)施例中,不同時(shí)刻下生成的隨機(jī)數(shù)不同,獲取得到的標(biāo)準(zhǔn)序列中的第一整數(shù)以及第二整數(shù)均不同,因此,通過(guò)不斷地調(diào)整第一整數(shù)與第二整數(shù)的位置順序,能夠?qū)⒃旧蚺判虻臉?biāo)準(zhǔn)序列置亂,得到所述非重復(fù)整數(shù)序列。該序列內(nèi)部包含的所有整數(shù),其相互之間的位置無(wú)序可依,具有隨機(jī)的特點(diǎn),加大了后續(xù)原始圖像數(shù)據(jù)的解密難度。
示例性地,圖8示出了對(duì)一個(gè)標(biāo)準(zhǔn)序列中各個(gè)整數(shù)進(jìn)行置亂的示意圖。假設(shè)該標(biāo)準(zhǔn)序列A為{0,1,2,3,4},初始狀態(tài)下的第一區(qū)間為[0,4],則可以看出:
如圖8-1所示,在生成第一個(gè)隨機(jī)數(shù)i=3的情況下,由于3不等于第一區(qū)間的終止點(diǎn)4,因此,交換A[i]和A[L-1]的位置,即交換A[3]以及A[4]的位置,并令第一區(qū)間的終止點(diǎn)4變?yōu)?;
如圖8-2所示,在第二次重新生成隨機(jī)數(shù)i=0的情況下,由于0不等于此時(shí)第一區(qū)間的終止點(diǎn)3,因此,交換A[0]以及A[3]的位置,即交換0和4的位置,并令第一區(qū)間的終止點(diǎn)變?yōu)?;
如圖8-3所示,在第三次重新生成隨機(jī)數(shù)i=2的情況下,由于2等于此時(shí)第一區(qū)間的終止點(diǎn)2,因此,不交換任何整數(shù)的位置,直接令第一區(qū)間的終止點(diǎn)變?yōu)?;
如圖8-4所示,在第四次重新生成隨機(jī)數(shù)i=0的情況下,由于0不等于此時(shí)第一區(qū)間的終止點(diǎn)1,因此,交換A[0]以及A[1]的位置,即交換4和1的位置,并令第一區(qū)間的終止點(diǎn)變?yōu)?.
如圖8-5所示,由于此時(shí)第一區(qū)間的終止點(diǎn)已為0,因此,不再重復(fù)執(zhí)行生成隨機(jī)數(shù)以及判斷的動(dòng)作。將當(dāng)前的序列輸出為非重復(fù)標(biāo)準(zhǔn)序列,即{1,4,2,0,3}。
作為本發(fā)明的又一實(shí)施例,圖9示出了本發(fā)明實(shí)施例提供的圖像的編碼加密方法S603的具體實(shí)現(xiàn)流程,詳述如下:
在S901中,在所述量化系數(shù)序列中,分別獲取各個(gè)所述系數(shù)的第二序號(hào),所述第二序號(hào)表示所述系數(shù)在所述量化系數(shù)序列中的排序順序。
在本實(shí)施例中,可以利用相同的密鑰序列來(lái)加密不同的量化系數(shù)序列,也可以利用不同的密鑰序列來(lái)加密不同的量化系數(shù)序列。使用不同的密鑰序列時(shí),需要重復(fù)執(zhí)行上述非重復(fù)整數(shù)序列的生成過(guò)程,從而得到多個(gè)不同的密鑰序列。
量化系數(shù)序列中的每個(gè)系數(shù)同樣擁有一個(gè)與位置順序相關(guān)的序號(hào),該序號(hào)稱為第二序號(hào)??墒褂脭?shù)字下標(biāo)的方式來(lái)表示該序號(hào),且最前的序號(hào)為零,此后每個(gè)序號(hào)依次遞增。
在S902中,對(duì)于所述量化系數(shù)序列中的每一個(gè)系數(shù),讀取所述密鑰序列中所述第一序號(hào)與該系數(shù)的所述第二序號(hào)相同的所述整數(shù)的數(shù)值。
由于密鑰序列中的各個(gè)整數(shù)都具有一一對(duì)應(yīng)的第一序號(hào),因此,為了查找某個(gè)整數(shù)的數(shù)據(jù),需要先找到該整數(shù)的第一序號(hào),從而從該序號(hào)對(duì)應(yīng)的存儲(chǔ)單元中讀取該整數(shù)的數(shù)值。
在S903中,對(duì)所述系數(shù)在所述量化系數(shù)序列中的排序進(jìn)行調(diào)整,以使調(diào)整后所述系數(shù)的所述第二序號(hào)為所述整數(shù)的數(shù)值。
將讀取到的密鑰序列中的整數(shù)的數(shù)值作為對(duì)應(yīng)于該系數(shù)新的第二序號(hào),即把該系數(shù)在量化系數(shù)序列的排序調(diào)整為對(duì)應(yīng)于該數(shù)值的位置順序。
示例性地,在圖10中,以量化系數(shù)序列中的前五個(gè)系數(shù)為例,對(duì)該量化系數(shù)序列的加密置亂過(guò)程進(jìn)行描述,具體地:
如圖10所示,量化系數(shù)序列中的前五個(gè)系數(shù)分別為2,3,-2,1,5,且對(duì)應(yīng)的排序?yàn)閏q0,cq1,cq2,cq3,cq4,則排序中的數(shù)字0,1,2,3,4即為上述數(shù)字下標(biāo),用以表示每個(gè)系數(shù)在該序列中的位置順序。
對(duì)于系數(shù)2,其排序?yàn)閏q0,第二序號(hào)為0,因此,密鑰序列中與該系數(shù)的第二序號(hào)相同的第一序號(hào)也為0。此時(shí),讀取密鑰序列A中第一序號(hào)為0的整數(shù)A[0],A[0]對(duì)應(yīng)的數(shù)值即為1。將系數(shù)2的排序從0變?yōu)檎麛?shù)A[0]的數(shù)值1,即將其位置排序cq0調(diào)整為cq1。
對(duì)于系數(shù)3,其排序?yàn)閏q1,第二序號(hào)為1,因此,密鑰序列中與該系數(shù)的第二序號(hào)相同的第一序號(hào)也為1。此時(shí),讀取密鑰序列A中第一序號(hào)為1的整數(shù)A[1],A[1]對(duì)應(yīng)的數(shù)值即為4。將系數(shù)3的排序從1變?yōu)檎麛?shù)A[1]的數(shù)值4,即將其位置排序cq1調(diào)整為cq4。
對(duì)每個(gè)系數(shù)執(zhí)行如上所示的操作后,可得到置亂后的量化系數(shù)序列,該序列即為加密后的量化系數(shù)序列。
本發(fā)明實(shí)施例中,由于圖像數(shù)據(jù)的解密過(guò)程需要先執(zhí)行DCT逆變換來(lái)恢復(fù)出原始圖像數(shù)據(jù)。而非法分子執(zhí)行加密數(shù)據(jù)的DCT逆變換時(shí),將會(huì)因量化系數(shù)之間的對(duì)應(yīng)關(guān)系不匹配,從而導(dǎo)致恢復(fù)出的圖像數(shù)據(jù)異常,得不到正確的原始圖像數(shù)據(jù),從而起到對(duì)原始圖像的加密保護(hù)作用,保證了原始圖像的安全傳輸。
在S104中,對(duì)加密后的所述量化系數(shù)序列進(jìn)行編碼,得到所述原始圖像數(shù)據(jù)的編碼加密數(shù)據(jù)。
依照通用的標(biāo)準(zhǔn)編碼算法,對(duì)加密后的每個(gè)量化系數(shù)序列進(jìn)行編碼,從而得到JPEG(Joint Photographic Experts Group)圖像數(shù)據(jù)。
在本發(fā)明實(shí)施例中,以多個(gè)量化系數(shù)序列表示一個(gè)原始圖像的數(shù)據(jù),僅利用非重復(fù)整數(shù)序列來(lái)作為密鑰序列,即可完成對(duì)多個(gè)量化系數(shù)序列的加密處理,從而得到了原始圖像的加密數(shù)據(jù)。只有在同時(shí)獲得所有量化系數(shù)序列的加密數(shù)據(jù)以及獲得密鑰序列時(shí),才能解密出原始圖像數(shù)據(jù),因此加密過(guò)程簡(jiǎn)單、計(jì)算量小、加密效率高。本發(fā)明實(shí)施例提供的圖像的編碼加密方法能夠?qū)iT(mén)應(yīng)用于數(shù)字圖像領(lǐng)域,保證了圖像像素間的相關(guān)性不受破壞,有利于數(shù)字圖像后期編碼時(shí)的壓縮處理,由于在圖像數(shù)據(jù)的原有編碼環(huán)節(jié)中直接對(duì)圖像數(shù)據(jù)進(jìn)行了加密,且加密數(shù)據(jù)較小,因此降低了編碼的數(shù)據(jù)量,由此也進(jìn)一步提高了圖像的編碼效率。
應(yīng)理解,在本發(fā)明實(shí)施例中,上述各過(guò)程的序號(hào)的大小并不意味著執(zhí)行順序的先后,各過(guò)程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對(duì)本發(fā)明實(shí)施例的實(shí)施過(guò)程構(gòu)成任何限定。
對(duì)應(yīng)于本發(fā)明實(shí)施例所提供的圖像的編碼加密方法,圖11示出了本發(fā)明實(shí)施例提供的圖像的編碼加密裝置的結(jié)構(gòu)框圖。為了便于說(shuō)明,僅示出了與本實(shí)施例相關(guān)的部分。
參照?qǐng)D11,該裝置包括:
獲取單元111,用于獲取原始圖像數(shù)據(jù)。
第一生成單元112,用于生成關(guān)于所述原始圖像數(shù)據(jù)的多個(gè)量化系數(shù)序列,每個(gè)所述量化系數(shù)序列對(duì)應(yīng)所述原始圖像數(shù)據(jù)中的一個(gè)子數(shù)據(jù)塊。
加密單元113,用于以非重復(fù)整數(shù)序列作為密鑰序列,分別對(duì)所述量化系數(shù)序列進(jìn)行加密處理。
編碼單元114,用于對(duì)加密后的所述量化系數(shù)序列進(jìn)行編碼,得到所述原始圖像數(shù)據(jù)的編碼加密數(shù)據(jù)。
可選地,所述第一生成單元112包括:
第一獲取子單元,用于分別獲取所述原始圖像數(shù)據(jù)在各個(gè)色彩維度的色彩平面數(shù)據(jù)。
分割子單元,用于將每個(gè)所述色彩平面數(shù)據(jù)分割成預(yù)設(shè)大小的多個(gè)子數(shù)據(jù)塊。
采集子單元,用于通過(guò)離散余弦變換分析所述子數(shù)據(jù)塊,采集所述子數(shù)據(jù)塊在頻域中的各個(gè)色彩分量。
量化子單元,用于根據(jù)預(yù)設(shè)的色彩量化表,量化所述各個(gè)色彩分量。
第一生成子單元,用于分別生成每個(gè)所述子數(shù)據(jù)塊的量化系數(shù)矩陣,每一個(gè)所述量化系數(shù)矩陣中包含有多個(gè)系數(shù),所述系數(shù)為所述子數(shù)據(jù)塊中所述色彩分量的量化值。
輸出子單元,用于將一個(gè)所述量化系數(shù)矩陣中所有所述系數(shù)構(gòu)成的一個(gè)序列輸出為一個(gè)量化系數(shù)序列。
可選地,所述裝置還包括:
第二生成單元,用于生成非重復(fù)整數(shù)序列,包括:
第二獲取子單元,用于獲取預(yù)設(shè)的所述非重復(fù)整數(shù)序列的上限值與下限值,所述上限值與下限值之間的差值為所述量化系數(shù)序列的長(zhǎng)度值減一。
第二生成子單元,用于生成包含所述上限值與下限值之間所有整數(shù)的標(biāo)準(zhǔn)序列,所述標(biāo)準(zhǔn)序列中的各個(gè)所述整數(shù)以升序排序,且每個(gè)整數(shù)對(duì)應(yīng)一個(gè)與排序順序相關(guān)的第一序號(hào)。
置亂子單元,用于將所述標(biāo)準(zhǔn)序列進(jìn)行置亂處理,并將置亂后的所述標(biāo)準(zhǔn)序列輸出為所述非重復(fù)整數(shù)序列。
可選地,所述置亂子單元具體用于:
生成第一區(qū)間中的一個(gè)隨機(jī)數(shù),所述第一區(qū)間的起始點(diǎn)為零,終止點(diǎn)為一個(gè)變化值,且所述終止點(diǎn)的初始值為所述上限值與下限值之間的差值;
判斷所述隨機(jī)數(shù)是否與所述終止點(diǎn)相同;
當(dāng)所述隨機(jī)數(shù)與所述終止點(diǎn)不同時(shí),將所述標(biāo)準(zhǔn)序列中第一整數(shù)與第二整數(shù)的排序順序互換后,令所述終止點(diǎn)減一,并重新生成第一區(qū)間中的另一個(gè)隨機(jī)數(shù),重復(fù)執(zhí)行判斷,直至所述終止點(diǎn)為零;
當(dāng)所述隨機(jī)數(shù)與所述終止點(diǎn)相同時(shí),令所述終止點(diǎn)減一,并重新生成第一區(qū)間中的另一個(gè)隨機(jī)數(shù),重復(fù)執(zhí)行判斷,直至所述終止點(diǎn)為零;
將置亂后的所述標(biāo)準(zhǔn)序列輸出為所述非重復(fù)整數(shù)序列;
其中,所述第一整數(shù)的第一序號(hào)與所述隨機(jī)數(shù)相同,所述第二整數(shù)的第一序號(hào)與所述終止點(diǎn)相同。
可選地,所述加密單元113包括:
第三獲取子單元,用于在所述量化系數(shù)序列中,分別獲取各個(gè)所述系數(shù)的第二序號(hào),所述第二序號(hào)表示所述系數(shù)在所述量化系數(shù)序列中的排序順序。
讀取子單元,用于對(duì)于所述量化系數(shù)序列中的每一個(gè)系數(shù),讀取所述密鑰序列中所述第一序號(hào)與該系數(shù)的所述第二序號(hào)相同的所述整數(shù)的數(shù)值。
調(diào)整子單元,用于對(duì)所述系數(shù)在所述量化系數(shù)序列中的排序進(jìn)行調(diào)整,以使調(diào)整后所述系數(shù)的所述第二序號(hào)為所述整數(shù)的數(shù)值。
本領(lǐng)域普通技術(shù)人員可以意識(shí)到,結(jié)合本文中所公開(kāi)的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來(lái)實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來(lái)執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對(duì)每個(gè)特定的應(yīng)用來(lái)使用不同方法來(lái)實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。
所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng)、裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。
所述功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。