版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、基于變換域的數(shù)字水印技術(shù)的研究1. 引言1.1 數(shù)字水印技術(shù)提出的背景二十一世紀(jì)是數(shù)字時(shí)代,通信技術(shù)的迅速發(fā)展和計(jì)算機(jī)網(wǎng)絡(luò)的普遍運(yùn)用,使人們可以通過互聯(lián)網(wǎng)收發(fā)信息,可以隨時(shí)上傳自己創(chuàng)作的數(shù)字圖象、音樂、視頻等作品,可以進(jìn)行學(xué)術(shù)交流。然而,也正是由于網(wǎng)絡(luò)的這種便捷性、傳播迅速的優(yōu)點(diǎn)使其很容易被非法拷貝,導(dǎo)致數(shù)字產(chǎn)品的、完整性、有效性得不到保證,嚴(yán)重?fù)p害了創(chuàng)作者的利益。而一些具有特殊意義的數(shù)字信息,如涉與司法訴訟、政府機(jī)要等信息,更是遭到了不法分子地惡意攻擊和隨意篡改等,這一系列問題給當(dāng)今科學(xué)家?guī)砹司薮筇魬?zhàn)。基于以上類似問題,數(shù)字水印技術(shù)可以說是信息時(shí)代的特有產(chǎn)物,是一種可以在開放網(wǎng)絡(luò)環(huán)境下保護(hù)
2、和認(rèn)證來源與保障信息完整性的新型技術(shù),在音頻、圖像、視頻制品中迅速得到廣泛的研究和發(fā)展。1.2 數(shù)字水印的基本特點(diǎn)數(shù)字水印是加在數(shù)字圖象、音頻或視頻中的微弱信號(hào),這個(gè)信號(hào)是人們能夠建立產(chǎn)品所有權(quán)、辨認(rèn)購買者或提供數(shù)字產(chǎn)品的一些額外信息。具體說來,它們都具有以下共同的特征:1. 不可感知性對(duì)于數(shù)字水印的嵌入,應(yīng)該對(duì)觀察者沒有視覺障礙,理想情況應(yīng)該是水印圖像與原始圖像沒有絲毫差別。2. 魯棒性魯棒性是指一個(gè)數(shù)字水印能夠承受攻擊的能力,一般來說數(shù)字水印方法是針對(duì)特定的攻擊進(jìn)行設(shè)計(jì)。3. 安全性水印技術(shù)的安全性是其最重要的特性,由于它的商業(yè)性,其算法必須公開,算法的安全性完全取決于密鑰,而不對(duì)算法進(jìn)行
3、。4. 計(jì)算復(fù)雜度不同應(yīng)用中,對(duì)于水印的嵌入算法和提取算法的計(jì)算復(fù)雜度要不同的,復(fù)雜度直接與水印系統(tǒng)的實(shí)時(shí)性相關(guān)。5. 水印容量水印容量是指載體數(shù)據(jù)字中可嵌入水印信息位的多少,可以從幾兆到幾個(gè)比特不等。1.3 數(shù)字水印的應(yīng)用數(shù)字水印是以不可感知的方式嵌入到數(shù)字信息中的,總體來說它有以下應(yīng)用:數(shù)字產(chǎn)品產(chǎn)權(quán)保護(hù)這是數(shù)字水印最廣泛的應(yīng)用,將秘密的數(shù)字信號(hào)嵌入到有價(jià)值的數(shù)字文件中,這些數(shù)字信號(hào)是產(chǎn)權(quán)的標(biāo)識(shí),在不破壞數(shù)字文件的情況下不能被盜版者出去,起到了保護(hù)產(chǎn)權(quán)的作用。1. 數(shù)據(jù)庫標(biāo)識(shí)有時(shí)一些文件中提示數(shù)據(jù)的標(biāo)識(shí)信息往往比文件本身更重要或者一些音像文件需要將說明注釋(如字幕等)與音像本身結(jié)合起來,這就
4、可以通過數(shù)字水印技術(shù)加以解決。2. 文件容鑒定水印技術(shù)在鑒定數(shù)據(jù)建立者和鑒別數(shù)據(jù)容有著特殊的運(yùn)用,目的是檢測數(shù)據(jù)是否被修改過或是否經(jīng)過特殊的處理。3. 系統(tǒng)升級(jí)日常生活中常常涉與到舊裝系統(tǒng)升級(jí)情況,這可以通過將“增強(qiáng)層”嵌入到所發(fā)送的數(shù)據(jù)中來給傳統(tǒng)的信號(hào)發(fā)射系統(tǒng)升級(jí)。4. 商務(wù)交易中的票據(jù)防偽隨著高質(zhì)量圖像輸入輸出設(shè)備的發(fā)展,使得貨幣、支票以與其他票據(jù)的偽造變得更加容易。目前,美國、日本以與荷蘭都已開始研究用于票據(jù)防偽的數(shù)字水印技術(shù)。5. 媒體偵破這一運(yùn)用的目的是提取對(duì)原始信號(hào)進(jìn)行處理過的信息。例如,鑒定方法可以發(fā)現(xiàn)一幅圖像被篡改過,但無法發(fā)現(xiàn)是怎樣篡改的。媒體偵破技術(shù)就可以指出圖像的哪部分被
5、篡改了,指出被插入到原圖像中的新對(duì)象等等。1.4 數(shù)字水印技術(shù)的研究動(dòng)態(tài)隨著多媒體技術(shù)和因特網(wǎng)技術(shù)的迅猛發(fā)展,一系列有關(guān)產(chǎn)權(quán)保護(hù)和信息安全的問題等亟待人們解決。數(shù)字水印技術(shù)便是二十世紀(jì)九十年代初出現(xiàn)的為解決這些問題的一門嶄新的技術(shù),也是近幾十年來國外專家和學(xué)者研究的一大熱點(diǎn)。1. 數(shù)字水印技術(shù)的研究現(xiàn)狀1) 空間域數(shù)字水印研究最初提出的數(shù)字水印嵌入方法是在空間域上實(shí)現(xiàn)的。 1995年,Btuyndoncky等提出了一個(gè)基于空域分塊的方法,通過改變均值來嵌入水印。1996年,Patchwork等人提出了一種算法(Patchwork算法),該算法隨機(jī)選取圖像的N對(duì)像素點(diǎn),通過增加其中一個(gè)點(diǎn)的亮度值
6、而相應(yīng)降低另一個(gè)點(diǎn)的亮度來隱藏信息。1998年,Darmstaedter等人提出了一種新的空域水印算法,該算法是基于圖像的8×8塊的空間域分解進(jìn)行的。不過上述的一些空域法普遍存在著可嵌入水印能量不好控制、魯棒性差等缺點(diǎn),現(xiàn)在已經(jīng)很少有人使用,人們逐漸將水印的嵌入和檢測轉(zhuǎn)到頻域上進(jìn)行。2) 頻域數(shù)字水印研究頻域法大體有三類:DFT域、DCT域和DWT域。Ruanaidh和Pun利用傅立葉域?qū)θ中缘男D(zhuǎn),平移和縮放變換具有不變性的特點(diǎn),將水印嵌入到傅立葉域來達(dá)到對(duì)這些攻擊的魯棒性。1999年,Hsu和Wu等人提出了基于可視化模型的算法,該算法具有很強(qiáng)的魯棒性。2000年,黃繼武、易開樣
7、等人還提出了一種DCT域數(shù)字水印算法:首先把圖像分成8×8的不重疊像素塊,經(jīng)過分塊DCT變換后,得到有DCT系數(shù)組成的頻率塊,然后隨機(jī)選取一些頻率塊,水印信號(hào)嵌入到由密鑰控制選擇的一些DCT系數(shù)中。2004年,王向陽等提出了一種DCT域自適應(yīng)彩色圖像二維數(shù)字水印算法,將灰度圖像嵌入到原始彩色圖像中。其實(shí) ,很多國外研究人員提出的其他DCT域數(shù)字水印算法,采用的多是基于DCT的8×8圖像塊??偟膩碚f,基于圖像特征的方法是探索性的,很難用目前現(xiàn)有的模型進(jìn)行理論分析,限制了這種方法在需要有嚴(yán)格性能規(guī)定的實(shí)際商業(yè)中的應(yīng)用。2. 數(shù)字水印技術(shù)的前景與意義從國際、國對(duì)數(shù)字水印研究現(xiàn)狀和
8、重視程度,可見數(shù)字水印對(duì)社會(huì)的應(yīng)用是多么重要,所以它的研究前景是十分廣闊的。數(shù)字水印技術(shù)是近十年來橫跨信號(hào)處理、數(shù)字通信、密碼學(xué)、計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)等多學(xué)科的新興技術(shù),具有潛在的應(yīng)用市場和良好的應(yīng)用前景。從研究意義來看,對(duì)它的研究具有重要的學(xué)術(shù)、經(jīng)濟(jì)和軍事價(jià)值。一方面,它將促進(jìn)多媒體技術(shù)、網(wǎng)絡(luò)技術(shù)、通信技術(shù)、信號(hào)處理技術(shù)等多門新興技術(shù)的有機(jī)結(jié)合,促進(jìn)多媒體網(wǎng)絡(luò)的進(jìn)一步繁榮;另一方面,它將有助于多媒體信息保護(hù)與其沖突問題的解決。同時(shí),它將促進(jìn)隱蔽通信技術(shù)、信息安全技術(shù)的提高。2. 數(shù)字水印技術(shù)概況數(shù)字水印技術(shù)是利用數(shù)字產(chǎn)品普遍存在的冗余數(shù)據(jù)與隨機(jī)性,將水印信息嵌入在數(shù)字產(chǎn)品本身中,從而起到保護(hù)數(shù)字產(chǎn)
9、品或者完整性的一種技術(shù)。2.1 數(shù)字水印的分類 數(shù)字水印技術(shù)根據(jù)不同的根據(jù)有不同的分類方法,一般有如下分類:依據(jù)其特性來分可以將數(shù)字水印分為魯棒數(shù)字水印和脆弱水印兩種。前一種要求嵌入的水印對(duì)常用的編輯處理或惡意攻擊有一定的抵抗性;而后一種則要求對(duì)信息的改動(dòng)有很強(qiáng)的敏感性。按水印的用途分類可將其分為水印、圖像認(rèn)證水印、隱藏標(biāo)識(shí)水印、防止復(fù)印水印等。按檢測的過程來劃分?jǐn)?shù)字水印有非盲水印系統(tǒng)和盲水印系統(tǒng)。一般而言,非盲水印的魯棒性較強(qiáng),而其應(yīng)用受到存儲(chǔ)成本的限制。不過,目前學(xué)術(shù)界研究的數(shù)字水印大多數(shù)是盲水印。根據(jù)容劃分水印又可以分為有意義水印和無意義水印。二者區(qū)別在于前者本身也是個(gè)圖像或者音頻片段的
10、編碼;而后者卻是一個(gè)序列號(hào)。按數(shù)字水印的隱藏的位置劃分,數(shù)字水印又有空(時(shí))域數(shù)字水印、頻域數(shù)字水印、時(shí)/頻域數(shù)字水印和時(shí)間/尺度域數(shù)字水印。2.2 數(shù)字水印系統(tǒng)的模型現(xiàn)在學(xué)術(shù)界對(duì)數(shù)字水印算法的理解都是將一些不易察覺的具有隨機(jī)特性的數(shù)據(jù)嵌入到圖像頻域或空域的系數(shù)上。從信號(hào)處理的角度看,嵌入水印可以看成是在強(qiáng)背景下迭加一個(gè)弱信號(hào),由于人類視覺系統(tǒng)的分辨率受到一定的限制,只要迭加的信號(hào)幅度不超過HVS的對(duì)比門限,人眼就無法感覺到信號(hào)的存在,所以可以通過對(duì)原始圖像進(jìn)行一定調(diào)整,在不影響視覺效果的情況下嵌入一些水印信息。數(shù)字水印系統(tǒng)的一般模型如圖1所示:圖1 數(shù)字水印系統(tǒng)基本模型水印嵌入器的輸入量有三
11、個(gè):水印信號(hào)M,宿主信號(hào)S和密鑰K。水印信號(hào)M是指原始水印(圖像或一個(gè)數(shù)字序列)通過一定的方法經(jīng)過調(diào)制將嵌入到宿主信號(hào)中的數(shù)字信號(hào)。宿主信號(hào)S是指被嵌入水印的信號(hào)(原始信號(hào))。密鑰K則指用于提高水印系統(tǒng)安全性的密碼信息,它獨(dú)立于宿主信號(hào)。密鑰有私有密鑰和公共密鑰之分,前者指攻擊者在明確了水印嵌入方法但又不知道密鑰的情況下,水印不會(huì)被破壞或盜??;后者是指攻擊者對(duì)宿主信號(hào)(如容標(biāo)識(shí)、語言字幕等)不感興趣的情況下,密鑰也就不存在性,可以作為公共密鑰。2.3 數(shù)字水印算法1. 水印嵌入算法數(shù)字水印技術(shù)涉與到了多門學(xué)科:信號(hào)處理、數(shù)字通信、密碼學(xué)、模式識(shí)別等,研究人員從各個(gè)角度對(duì)水印嵌入算法進(jìn)行了研究。
12、以下簡要介紹幾種典型的算法。1)空域水印嵌入算法空域水印嵌入算法包括最低有效位算法LSB、Patchwork 方法、紋理映射編碼方法等。其中最低有效位算法LSB是指首先把一個(gè)密鑰輸入一個(gè)m-序列發(fā)生器來產(chǎn)生水印信號(hào),然后將其重新排列成2維水印信號(hào),并按象素點(diǎn)逐一插入到原始圖像象素值的最低位。由于水印信號(hào)被安排在了最底位上,是不可見的,基于同樣的原因,可以輕易的被移去,所以它的魯棒性很差。而Patchwork 方法是一種基于統(tǒng)計(jì)的數(shù)字水印嵌入方法,是通過增加一個(gè)象素點(diǎn)的亮度值,再相應(yīng)的減少另一個(gè)象素點(diǎn)的亮度值來隱藏信息。紋理映射編碼方法則是將數(shù)字信息隱藏于數(shù)字圖象的任意紋理部分,該算法對(duì)于濾波、
13、壓縮和旋轉(zhuǎn)等操作具有抵抗能力。2)變換域水印嵌入算法變換域中能量分布集中,有利于保證水印的不可見性,提高了水印的魯棒性,所以這一算法得到了廣泛的應(yīng)用。圖2是變換域水印算法的過程圖2 變換域水印嵌入過程圖變換域算法中有一種典型的算法DCT域數(shù)字水印算法,該算法是通過對(duì)選定的DCT系數(shù)進(jìn)行微小變換以滿足特定的關(guān)系,來表示一個(gè)比特的信息。在水印信號(hào)提取時(shí),則選取一樣的DCT系數(shù),并根據(jù)系數(shù)之間的關(guān)系抽取比特信息。其特點(diǎn)是數(shù)據(jù)改變幅度較小,且透明性好,但是其抵抗幾何變換等攻擊的能力較弱。另外基于DFT和DWT算法與上述算法具有相似的原理。 目前DWT域的算法還不多見,但小波域具有良好的空頻分解特性,而
14、且嵌入式零樹小波編碼將在新一代的壓縮標(biāo)準(zhǔn)中被采用,迎合著國際壓縮標(biāo)準(zhǔn),小波域的水印算法具有良好的發(fā)展前景。2. 水印檢測算法水印檢測是上述嵌入過程的逆過程,以下詳細(xì)介紹一下水印相關(guān)檢測技術(shù)。待測試圖像與原始圖像的差為: (2-1)對(duì)進(jìn)行域變換,再利用下式提取水印序列: (2-2)得到了可提取的待測試序列: (2-3)待測序列中假設(shè)有n個(gè)數(shù)據(jù)值與原始水印序列中對(duì)應(yīng)位上的值不一樣,則定義誤碼率:(2-4)則有相關(guān)系數(shù):(2-5)從而可以得到相關(guān)系數(shù)和誤碼率的關(guān)系:(2-6)根據(jù)誤碼率的值可判斷圖像中是否含有水印信號(hào),從而達(dá)到保護(hù)的目的。判定準(zhǔn)則為:事先設(shè)定閾值。若,可以判定被測圖像中含有水??;否則
15、,沒有水印。閾值的選擇要同時(shí)考慮虛警概率和漏警概率。虛警概率是指待測圖像中不包含水印而檢測器輸出結(jié)果卻表明含有水印的概率;漏警概率是指待測圖像中包含水印而檢測器輸出結(jié)果卻表明不含有水印的概率。增大,則漏警概率降低而虛警概率提高;反之亦然。若與不相關(guān),的概率等于具有Gaussian分布的隨機(jī)變量超過其均值T倍方差的概率。圖3是典型的水印檢測/提取系統(tǒng)圖3 水印檢測提取系統(tǒng)3. MATLAB軟件的介紹MATLAB語言是一種非常強(qiáng)大的工程語言,被廣泛應(yīng)用于包括信號(hào)與圖象處理、控制系統(tǒng)設(shè)計(jì)、通信、系統(tǒng)仿真等諸多領(lǐng)域。3.1 MATLAB研究數(shù)字水印的優(yōu)點(diǎn)MATLAB語言有不同于其他高級(jí)語言特點(diǎn),它在研
16、究數(shù)字水印有如下特點(diǎn):1. 編程效率高M(jìn)ATLAB語言是用數(shù)學(xué)形式的語言編寫程序,用MATLAB編寫程序猶如在演算紙上排列公式與求解問題。由于它編寫簡單,所以編程效率高,易學(xué)易懂。 2.用戶使用方便與其他語言相比,MATLAB能在同一畫面上進(jìn)行靈活操作,快速排除輸入程序中的書寫錯(cuò)誤、語法錯(cuò)誤甚至語意錯(cuò)誤,從而加快了用戶編寫、修改和調(diào)試程序的速度,便于操作。3. 擴(kuò)充能力強(qiáng),交互性好MATLAB語言庫函數(shù)豐富,用戶還可以根據(jù)自己的需要方便地建立和擴(kuò)充新的庫函數(shù),提高M(jìn)ATLAB使用效率和擴(kuò)充功能。良好的交互性使程序員可以使用以前編寫過的程序,減少重復(fù)性工作。4. 移植性好,開放性好MATLAB是
17、用C語言編寫的,而C語言的可移植性很好。于是MATLAB可以很方便地移植到能運(yùn)行C語言的操作平臺(tái)上。5. 語言簡單,涵豐富MATLAB語言中最基本最重要的成分是函數(shù),同一函數(shù)名,不同數(shù)目的輸入變量與不同數(shù)目的輸出變量,代表著不同的含義。這不僅使MATLAB的庫函數(shù)功能更豐富,而且大大減少了需要的磁盤空間,使得MATLAB編寫的M文件簡單、短小而高效。6. 方便的繪圖功能MATLAB軟件中有一系列繪圖函數(shù),在運(yùn)用MATLAB軟件時(shí)只需要調(diào)用不同的繪圖函數(shù),即可在圖上標(biāo)出圖題、XY軸標(biāo)注。7. 功能強(qiáng)大的工具箱是MATLAB的另一特色。MATLAB工具箱中的信號(hào)處理、控制系統(tǒng)、神經(jīng)網(wǎng)絡(luò)、圖象處理、
18、魯棒控制、非線性系統(tǒng)控制設(shè)計(jì)、系統(tǒng)辨識(shí)、最優(yōu)化、模糊邏輯、小波、通信、統(tǒng)計(jì)(statistics等工具箱),這些工具箱給各個(gè)領(lǐng)域的研究和工程應(yīng)用提供了有力的工具。 8. MATLAB的缺點(diǎn)它和其他高級(jí)程序相比,程序的執(zhí)行速度較慢。由于MATLAB的程序不用編譯等預(yù)處理,也不生成可執(zhí)行文件,程序?yàn)榻忉寛?zhí)行,所以速度較慢。3.2 MATLAB函數(shù)介紹在研究水印技術(shù)時(shí),我們處理的圖像數(shù)據(jù)是二維信號(hào),而聲音是一維信號(hào),所以在這里,我門只簡單介紹與水印有關(guān)的函數(shù)。1. 數(shù)據(jù)輸入輸出函數(shù)imread()和imwrite():可以讀寫bmp, jpg/jpeg, tif/tiff, png, hdf, pc
19、x, wxd格式文件。讀索引文件時(shí),還可以得到相應(yīng)的調(diào)色板數(shù)據(jù)。2. 圖象顯示imshow():顯示一幅圖像;imfinfo():可以得到讀入圖像的信息。如文件的大小、格式、格式版本號(hào)、圖像的高度、寬度、顏色類型(真彩色,灰度圖還是索引圖)等。3. 變換域函數(shù)對(duì)信號(hào)采用不同的變換,是實(shí)現(xiàn)頻域法水印的至關(guān)重要的一步,MATLAB中的一維信號(hào)和二維信號(hào)分別提供了各種變換和逆變換函數(shù)。 1) 離散余弦變換(DCT)(1) dct(),dct2():分別實(shí)現(xiàn)一維信號(hào)和二維信號(hào)的DCT(離散余弦變換);(2) idct(),idct2():分別實(shí)現(xiàn)一維信號(hào)和二維信號(hào)的IDCT(逆離散余弦變換);2) 離
20、散傅立葉變換(DFT)(1) fft(),fft2():分別實(shí)現(xiàn)一維信號(hào)和二維信號(hào)的DFT(離散傅立葉變換);(2) ifft(),ifft2():分別實(shí)現(xiàn)一維信號(hào)和二維信號(hào)的IDFT(逆離散傅立葉變換);4. 攻擊函數(shù)對(duì)算法進(jìn)行攻擊測試是對(duì)水印魯棒性檢測的一種重要手段,一個(gè)好的水印算法必須經(jīng)過各種攻擊測試才能對(duì)之做出客觀的評(píng)價(jià)。MATLAB中的許多函數(shù)可以直接用來做攻擊測試:1)旋轉(zhuǎn):rotate()可以對(duì)圖像進(jìn)行任意角度的旋轉(zhuǎn);2)剪裁:imcrop()可以按精確定位的各點(diǎn)坐標(biāo)進(jìn)行剪裁;3)濾波:filter()和filter2()可實(shí)現(xiàn)對(duì)一維信號(hào)和二維信號(hào)的濾波;4)加各種噪聲:imno
21、ise()可以對(duì)圖像加入各種噪聲,如白噪聲、椒鹽噪聲等。4. 基于DCT域的數(shù)字水印技術(shù)離散余弦變換,簡稱DCT,是一種實(shí)數(shù)域變換,其變換核為實(shí)數(shù)的余弦函數(shù),計(jì)算速度較快,是一種近似最佳變換,很適合于做圖象壓縮和隨機(jī)信號(hào)處理,它對(duì)常用的圖象壓縮有較強(qiáng)的魯棒性。基于DCT域的數(shù)字水印算法,一般而言有兩種算法。一種是直接對(duì)整幅圖像進(jìn)行DCT計(jì)算,選取合適頻段的系數(shù),嵌入水印。另一種是,首先將整幅圖像分成塊,對(duì)每一塊分別進(jìn)行DCT計(jì)算,在每一塊中選取合適頻段的系數(shù),將水印信息分散嵌入到每一塊所選取的DCT系數(shù)中。這種方法稱為分塊DCT,這種方法非常適合于8×8的圖像塊DCT變換。目前,DC
22、T域的水印方法大多數(shù)是采用分塊DCT方法。4.1 二維DCT概述一般而言,數(shù)字圖象,其二維DCT變換用矩陣表示,其定義式如下式所示: (4-1)二維IDCT定義如下: (4-2)其中 并且 (4-3)我們最常用到的是8×8分塊DCT,也就是首先將大小為M×N的圖像分成的非重疊的大小為8×8的塊,然后對(duì)每一塊作DCT。根據(jù)式(4-1)和式(4-2),8×8DCT的定義如下: (4-4)8×8IDCT的定義如下: (4-5)其中, 并且 (4-6)4.2 基于DCT域數(shù)字水印嵌入算法DCT域的水印嵌入過程,就是首先對(duì)宿主圖像S進(jìn)行分塊DCT運(yùn)算,選
23、取出要嵌入的DCT系數(shù)C,并且對(duì)宿主圖像用HVS模型進(jìn)行分析,得到感知系數(shù)掩蔽模板,用其來控制水印嵌入強(qiáng)度,再將編碼后的水印信號(hào)W,用一定方式嵌入到選好的系數(shù)中。用嵌入水印的系數(shù)替代原來位置的系數(shù),再進(jìn)行逆DCT(Inverse Discrete Cosine Transform,IDCT)變換,就得到了含有水印的圖像X。DCT域水印系統(tǒng)的水印嵌入過程框圖如圖4所示:圖4 DCT域水印嵌入過程方框圖水印嵌入步驟如下:1. 將宿主圖像分成8×8的塊,每一塊都進(jìn)行DCT變換,得到與宿主圖象一樣尺寸的DCT域系數(shù)矩陣。2. 產(chǎn)生兩個(gè)不相關(guān)的偽隨機(jī)序列,并設(shè)定一個(gè)密鑰key。3. 將每個(gè)8&
24、#215;8的DCT系數(shù)矩陣,從每一塊的中頻段取出個(gè)系數(shù)。4. 然后嵌入水印,嵌入規(guī)則為當(dāng)水印圖像元素為0時(shí),按照式子(其中alpha為尺度因子,mark為隨機(jī)序列,為原圖像的分塊DCT系數(shù)),將一個(gè)隨機(jī)序列與原始圖像塊的幅度譜對(duì)應(yīng)元素進(jìn)行乘性疊加;為1時(shí),用另一個(gè)偽隨機(jī)序列與幅度譜對(duì)應(yīng)元素進(jìn)行乘性疊加。5. 用得到的新的DCT系數(shù)對(duì)原來位置的DCT系數(shù)進(jìn)行置換。6. 對(duì)新的DCT系數(shù)矩陣進(jìn)行DCT逆變換,得到了嵌入水印信號(hào)的圖像。4.3 基于DCT域數(shù)字水印檢測提取算法DCT域水印的驗(yàn)證過程(即包括水印的檢測和提取過程),就是將待測圖像Y(注意此時(shí)的圖像也許已經(jīng)遭受了圖象處理或惡意攻擊)進(jìn)行
25、DCT運(yùn)算;然后按著嵌入水印時(shí)選取的DCT系數(shù),選取其含有水印的系數(shù),進(jìn)行水印提取,然后利用相關(guān)檢測法判斷水印是否存在。如果水印檢測器輸出結(jié)果顯示水印存在,則根據(jù)需要可以用水印解碼器對(duì)提取的水印進(jìn)行解碼,恢復(fù)水印。水印檢測提取過程如圖5圖5 DCT域數(shù)字水印檢測提取框圖水印檢測提取步驟如下:1. 對(duì)含有水印圖像進(jìn)行8×8的塊DCT變換。2. 對(duì)每一塊的DCT系數(shù)進(jìn)行“之”字型排列,從我們已知的嵌入位置取出可能含有水印的系數(shù),將所有提取出的系數(shù),按順序組成新的系數(shù)序列。3. 用密鑰生成水印信號(hào)4. 將含水印的系數(shù)序列與水印信號(hào)進(jìn)行相關(guān)計(jì)算,得到歸一化相關(guān)系數(shù)。4.4 實(shí)驗(yàn)結(jié)果與分析以下
26、是尺度因子alpha=30時(shí)的實(shí)驗(yàn)結(jié)果,以與受到各種攻擊后所提取到的水印圖像與其與原始水印圖像的相關(guān)系數(shù):圖6 原始圖像和嵌入水印后的圖像此時(shí),alpha=30圖7 沒有受到攻擊的圖像與提取到的水印圖像此時(shí)相關(guān)系數(shù)=1圖8 加入白噪聲后的圖像、原始水印和提取的水印圖像此時(shí)相關(guān)系數(shù)=0.99969圖9 高斯低通濾波后的圖像與提取的水印圖像此時(shí)相關(guān)系數(shù)=0.99058圖10 剪切后的圖像與提取的水印圖像此時(shí)相關(guān)系數(shù)=0.93909圖11 旋轉(zhuǎn)10后的圖像與提取的水印圖像此時(shí)相關(guān)系數(shù)=0.48383從以上結(jié)果可以看出:當(dāng)圖像(宿主信息)受到加噪、高斯低通濾波、剪切等攻擊后,其可視度、提取的水印圖像與
27、原始水印圖像的相似度(都在90%以上)都是非常令人滿意的;當(dāng)受到旋轉(zhuǎn)攻擊后,其提取的水印圖像與原始水印圖像的相似度(不足50%)卻令人感到失望,不過仍可證明水印信息的存在。5 基于傅立葉域變換的數(shù)字水印技術(shù)5.1 傅立葉變換概述傅立葉變換(Fourier Transform)是線性系統(tǒng)分析的一個(gè)有力工具,是研究信號(hào)的頻譜方法,它架起了時(shí)域和頻域之間的橋梁。使我們能夠定量分析諸如數(shù)字化系統(tǒng)、采樣點(diǎn)、電子放大器、卷積濾波器、噪聲等的作用,把傅立葉變換的理論同其物理解釋相結(jié)合,將大大有助于解決大多數(shù)圖象處理問題。Fourier分析理論十分完善,既可以處理連續(xù)信號(hào)也可以處理離散信號(hào)。計(jì)算機(jī)只能處理離散
28、信號(hào),且在數(shù)字圖象處理中,輸入圖像和輸出圖像通常都是二維的,一般表示成二維數(shù)字矩陣,因此這里直接討論二維離散傅立葉變換(DFT)和二維快速傅立葉變換(FFT)。1. 二維離散傅立葉變換DFT(Discrete Fourier Transform)二維離散傅立葉變換對(duì)定義式如下: (5-1) (5-2)二維離散傅立葉變換的傅立葉譜、相位、功率譜分別如下: 傅立葉譜: (5-3) 相位: (5-4) 功率譜: (5-5)式子(5-1)可以分離為:(5-6)式子(5-2)可以分離為:(5-7)由上兩式可知,二維傅立葉變換可由連續(xù)兩次一維傅立葉變換得到,從而將二維DFT分解為水平和垂直兩部分運(yùn)算,上式
29、中方括號(hào)中的項(xiàng)表示在圖像的行上計(jì)算的DFT,方括號(hào)外邊的求和則實(shí)現(xiàn)結(jié)果數(shù)組在列上的DFT,這種分解使我們可以用一維FFT來快速實(shí)現(xiàn)二維DFT。2. 二維快速傅立葉變換FFT(Fast Fourier Transform)FFT的基本思想是:令序列的長度為,如果不滿足,在尾部補(bǔ)零,沒有任何影響。按n奇偶把分解為兩個(gè)N/2點(diǎn)的子序列:(5-8)(5-9)那么 (5-10)將(5-8)和(5-9)式代入上式得: (5-11)上式右邊的兩部分恰好是長度(周期)為N/2的的傅立葉變換,所以: (5-12)(5-13)這樣一個(gè)長度為N的DFT就分解為兩個(gè)長度為N/2的DFT,然后進(jìn)行N/2次復(fù)數(shù)的蝶式運(yùn)算
30、,再運(yùn)用分解-遞歸思想,分解次,每一次均有N/2個(gè)蝶式運(yùn)算,所以FFT的時(shí)間復(fù)雜度為。FFT在圖像運(yùn)用中的思想是,先將原圖像進(jìn)行轉(zhuǎn)置,按行對(duì)轉(zhuǎn)置后的圖像矩陣做一維FFT,將此變換所得的中間矩陣再轉(zhuǎn)置,再按對(duì)轉(zhuǎn)置后的中間矩陣做一維FFT,最后得到的就是二維FFT。5.2 基于傅立葉域的數(shù)字水印嵌入算法這里的嵌入算法大抵同前面所講的嵌入過程,唯一不同的是傅立葉變換中涉與到復(fù)數(shù)運(yùn)算,所以在嵌入過程中還需要計(jì)算一下其變換后的幅度值方可嵌入,嵌入算法的步驟如下:1. 將宿主圖像分成8×8的塊,每一塊都進(jìn)行DFT變換,得到與宿主圖象一樣尺寸的DFT域圖象系數(shù)矩陣。2. 產(chǎn)生兩個(gè)不相關(guān)的偽隨機(jī)序列
31、,并設(shè)定一個(gè)密鑰key。3. 將每個(gè)8×8的DFT系數(shù)矩陣,從每一塊的中頻段取出個(gè)系數(shù)。4. 由于DFT域的幅度譜具有對(duì)稱性,為了水印嵌入后保持這種對(duì)稱性,也為了確?;謴?fù)圖像像素值為實(shí)數(shù),嵌入水印時(shí)采用對(duì)稱嵌入。嵌入規(guī)則為當(dāng)水印圖像元素為0時(shí),按照式子(其中alfa為尺度因子,mark為隨機(jī)序列,為原圖像的分塊DFT系數(shù)),將一個(gè)隨機(jī)序列與原始圖像塊的幅度譜對(duì)應(yīng)元素進(jìn)行乘性疊加;為1時(shí),用另一個(gè)偽隨機(jī)序列與幅度譜對(duì)應(yīng)元素進(jìn)行乘性疊加。5. 用得到的新的DFT系數(shù)對(duì)原來位置的DFT系數(shù)進(jìn)行置換。6. 對(duì)每一圖像塊進(jìn)行DFT逆變換,得到含水印圖像。5.3 基于傅立葉域的數(shù)字水印檢測提取算
32、法這里的檢測提取算法過程大抵同前面所講的DCT域數(shù)字水印檢測提取算法,提取算法步驟如下:1. 將宿主圖像分成8×8的塊,每一塊都進(jìn)行DFT變換,得到與宿主圖像一樣尺寸的DFT域圖象系數(shù)矩陣。2. 對(duì)每一塊的DFT系數(shù)進(jìn)行“之”字型排列,從我們已知的嵌入位置取出可能含有水印的系數(shù),將所有提取出的系數(shù),按順序組成新的系數(shù)序列。3. 計(jì)算嵌入水印圖像塊的幅度譜與兩個(gè)偽隨機(jī)序列的相關(guān)性,假設(shè)嵌入的水印圖像矩陣為0時(shí)疊加的是隨機(jī)序列A,為1時(shí)疊加的是隨機(jī)序列B,則提取時(shí)如果嵌入水印幅度譜與隨機(jī)序列A的相關(guān)性大于其B的相關(guān)性,那么這個(gè)位置嵌入的是水印圖像矩陣0元素。按這個(gè)規(guī)則即可提取出水印圖像。
33、4. 將含水印的系數(shù)序列與水印信號(hào)進(jìn)行相關(guān)計(jì)算,得到歸一化相關(guān)系數(shù)。5.4 實(shí)驗(yàn)結(jié)果與分析以下是尺度因子alpha=260時(shí)的實(shí)驗(yàn)結(jié)果,以與受到各種攻擊后所提取到的水印圖像與其與原始水印圖像的相關(guān)系數(shù):圖12 原始圖像與嵌入水印后的圖像圖13 沒有受到攻擊的圖像和直接提取的水印圖像此時(shí)相關(guān)系數(shù)=1圖14 加入白噪聲后的圖像、原始水印圖像與提取的水印圖像此時(shí)相關(guān)系數(shù)=0.96566圖15 高斯低通濾波后的圖像與提取的水印圖像此時(shí)相關(guān)系數(shù)=0.97311圖16 剪切后的圖像與提取的水印圖像此時(shí)相關(guān)系數(shù)=0.96907圖17 旋轉(zhuǎn)后的圖像與提取的水印圖像此時(shí)相關(guān)系數(shù)=0.91301從以上結(jié)果可以看出
34、,由于DFT域?qū)θ中缘男D(zhuǎn)、平移和縮放變換具有不變性的特點(diǎn),基于DFT域的數(shù)字水印技術(shù)要比基于DCT域的數(shù)字水印技術(shù)的魯棒性要強(qiáng)的多,特別是對(duì)于旋轉(zhuǎn)攻擊,前者的優(yōu)勢更加突出!結(jié) 論本文首先對(duì)數(shù)字水印技術(shù)進(jìn)行了簡單的概述,介紹了近些年來,國外學(xué)者在這一方面所做出的努力和成就,并對(duì)其進(jìn)行了一下客觀的展望。其次,分別從數(shù)字水印可能受到的攻擊、數(shù)字水印技術(shù)的嵌入、提取和檢測四個(gè)方面展開了研究。在研究過程中,通過改變尺度因子,進(jìn)而改變水印信息的嵌入強(qiáng)度,然后比較嵌入水印信息后宿主圖像的可視度來確定最佳尺度因子。經(jīng)過實(shí)驗(yàn)觀察,尺度因子越大嵌入水印后宿主圖像的可視度就越小,即圖像越模糊不清,卻有利于提高其
35、魯棒性;反之亦然。對(duì)于數(shù)字水印技術(shù),除了通過改進(jìn)算法來提高魯棒性外,我們還可以從密碼學(xué)角度通過提高攻破密鑰所需要的代價(jià)來保護(hù)我們所傳送的信息。另外,還可以仿照互聯(lián)網(wǎng)過建立標(biāo)準(zhǔn)的協(xié)議和方法來進(jìn)一步改變現(xiàn)狀等等。總之,這是一門嶄新而富有挑戰(zhàn)的學(xué)科,而且,隨著網(wǎng)絡(luò)的發(fā)展其前景也是非常樂觀的,它需要各個(gè)領(lǐng)域的專家聯(lián)合攻關(guān)共同努力才能取得理想的效果。同時(shí),也希望自己能在這一領(lǐng)域有所作為!參考文獻(xiàn)1 朱丹丹.圖像數(shù)字水印技術(shù)要析J .師學(xué)院學(xué)報(bào).-:2008年2月第29卷第2期:392 靜.數(shù)字水印算法檢測標(biāo)準(zhǔn)的研究J .電子科技大學(xué)學(xué)報(bào).-:2007年6月第36卷第3期:5673 耿永軍,朱雪芹.基于離
36、散余弦變換的數(shù)字水印算法J .大學(xué)學(xué)報(bào).-:20054 慧珍.變換域數(shù)字水印算法研究J .華僑大學(xué)碩士學(xué)位論文.-:2006:16175 龐小紅.圖像數(shù)字水印理論與技術(shù)研究.工程大學(xué)博士學(xué)位論文.-:2006:29306 曾滿紅.傅立葉明文水印與零水印算法的研究.燕山大學(xué)碩士學(xué)位論文.-:2005:16177 龐小紅.圖像數(shù)字水印理論與技術(shù)研究.工程大學(xué)博士學(xué)位論文.-:2006:348 Rafael C.Gonzalez,Richad E.Woods.數(shù)字圖像處理(阮秋琦,阮宇智等譯)M. -:電子工業(yè),20039 飛思科技產(chǎn)品研發(fā)中心.MATLAB 6.5輔助圖象處理M .-:電子工業(yè),2
37、003附錄A(基于DCT域的數(shù)字水印算法程序)% 嵌入算法%clear all; clc;% 讀取水印圖像%omark=double(imread('muxiao.bmp')/255;mo=size(omark,1);no=size(omark,2);%以下生成水印信息%mark=omark;alpha=30;rand1=randn(1,8);rand2=randn(1,8);% 讀取宿主圖像 %cimage=imread('lena.bmp');figure(1);subplot(2,3,1),imshow(cimage,),title(原始的宿主圖像);mc
38、,nc=size(cimage);cda0=blkproc(cimage,8,8,'dct2');% 嵌入水印%cda1=cda0; for i=1:mo for j=1:no x=(i-1)*8;y=(j-1)*8; if mark(i,j)=1 k=rand1; else k=rand2; end cda1(x+1,y+8)=cda0(x+1,y+8)+alpha*k(1); cda1(x+2,y+7)=cda0(x+2,y+7)+alpha*k(2); cda1(x+3,y+6)=cda0(x+3,y+6)+alpha*k(3); cda1(x+4,y+5)=cda0(x
39、+4,y+5)+alpha*k(4); cda1(x+5,y+4)=cda0(x+5,y+4)+alpha*k(5); cda1(x+6,y+3)=cda0(x+6,y+3)+alpha*k(6); cda1(x+7,y+2)=cda0(x+7,y+2)+alpha*k(7); cda1(x+8,y+1)=cda0(x+8,y+1)+alpha*k(8); endend% 嵌入水印后圖象 %wimage=blkproc(cda1,8,8,'idct2'); wimage_1=uint8(wimage);imwrite(wimage_1,'withmark.bmp'
40、;,'bmp');subplot(2,3,2),imshow(wimage,),title(嵌入水印后圖象);%進(jìn)行攻擊測試%disp(1->加入白噪聲);disp(2->高斯低通濾波);disp(3->剪切圖像);disp(4->旋轉(zhuǎn)攻擊);disp(5->直接檢測)begin=input(請(qǐng)選擇攻擊(1-5):)switch begin% 加入白噪聲% case 1Aimage1=wimage;Wnoise=20*randn(size(Aimage1);Aimage1=Aimage1+Wnoise;subplot(2,3,4),imshow(A
41、image1,),title(加入白噪聲后的圖象);att=Aimage1;imwrite(att,'whitenoiseimage.bmp');%高斯低通濾波% case 2Aimage2=wimage;H=fspecial('gaussian',4,4,0.5);Aimage2=imfilter(Aimage2,H);subplot(2,3,4),imshow(Aimage2,),title(高斯低通濾波后的圖象);att=Aimage2;imwrite(att,'gaussianimage.bmp')%剪切攻擊% case 3Aimage3
42、=wimage;Aimage3(1:128,1:128)=256;subplot(2,3,4),imshow(Aimage3,),title(剪切后的圖象);att=Aimage3;imwrite(att,'cutpartimage.bmp');%旋轉(zhuǎn)攻擊 % case 4Aimage4=wimage;Aimage4=imrotate(Aimage4,10,'bilinear','crop');Aimage_4=mat2gray(Aimage4);subplot(2,3,4),imshow(Aimage_4,),title(旋轉(zhuǎn)10 度后的圖象)
43、;att=Aimage_4;imwrite(att,'rotatedimage.bmp');% 沒有受到攻擊 % case 5subplot(2,3,4),imshow(wimage,),title(直接提取的圖像);att=wimage;imwrite(att,'directimage.bmp');end% 提取水印 %tmark_0=att;tmark_0=blkproc(tmark_0,8,8,'dct2');pass=zeros(1,8);for i=1:mo for j=1:no x=(i-1)*8;y=(j-1)*8; pass(1)
44、=tmark_0(x+1,y+8); pass(2)=tmark_0(x+2,y+7); pass(3)=tmark_0(x+3,y+6); pass(4)=tmark_0(x+4,y+5); pass(5)=tmark_0(x+5,y+4); pass(6)=tmark_0(x+6,y+3); pass(7)=tmark_0(x+7,y+2); pass(8)=tmark_0(x+8,y+1); if (corr2(pass,rand1)>corr2(pass,rand2) tmark_1(i,j)=1; else tmark_1(i,j)=0; end endend% 計(jì)算NC(歸一
45、化相關(guān)系數(shù))%g_mark=double(tmark_1);o_mark=double(omark);m,n=size(g_mark);nc_0=0;nc_1=0;nc_2=0;for i=1:m for j=1:n nc_0=nc_0+g_mark(i,j)*o_mark(i,j); nc_1=nc_1+o_mark(i,j)*o_mark(i,j); nc_2=nc_2+g_mark(i,j)*g_mark(i,j); endendNC=nc_0/sqrt(nc_1*nc_2);%顯示提取水印 %subplot(2,3,5),imshow('muxiao.bmp'),tit
46、le(原始水印圖像);subplot(2,3,6),imshow(tmark_1,);name=提取得水印圖像;title(strcat(num2str(name),'NC=',num2str(NC);附錄B(基于FFT域的數(shù)字水印算法程序)%嵌入水印算法%clear all; clc;% 讀取水印圖象% omark=double(imread('muxiao.bmp')/255;mo=size(omark,1);no=size(omark,2);% 以下生成水印信息%mark=omark;alpha=200;R1=randn(1,8);rand1=round(
47、R1);R2=randn(1,8);rand2=round(R2);%讀取宿主圖像%cimage=imread('lena.bmp');figure(1);subplot(2,3,1),imshow(cimage,),title('原始的宿主圖像');mc,nc=size(cimage);cimage=double(cimage);fft0=blkproc(cimage,8,8,'fft2');%嵌入水印%fft_abs=abs(fft0);fft_angle=angle(fft0);fft1=fft_abs;for ii=1:mo for jj
48、=1:no x=(ii-1)*8;y=(jj-1)*8; if mark(ii,jj)=1 k=rand1; else k=rand2; end fft1(x+1,y+8)=fft_abs(x+1,y+8)+alpha*k(1); fft1(x+2,y+7)=fft_abs(x+2,y+7)+alpha*k(2); fft1(x+3,y+6)=fft_abs(x+3,y+6)+alpha*k(3); fft1(x+4,y+5)=fft_abs(x+4,y+5)+alpha*k(4); fft1(x+5,y+4)=fft_abs(x+5,y+4)+alpha*k(5); fft1(x+6,y+3
49、)=fft_abs(x+6,y+3)+alpha*k(6); fft1(x+7,y+2)=fft_abs(x+7,y+2)+alpha*k(7); fft1(x+8,y+1)=fft_abs(x+8,y+1)+alpha*k(8); endendfft_abs_0=fft1;fft_abs_1=(fft_abs_0.*exp(i*fft_angle);wimage_0=blkproc(fft_abs_1,8,8,'ifft2');wimage=abs(wimage_0);%顯示嵌入水印圖象 %wimage_1=uint8(wimage);imwrite(wimage_1,
50、9;withmark.bmp','bmp');subplot(2,3,2),imshow(wimage,),title('嵌入水印后的圖象');%進(jìn)行各種攻擊%disp('1->加入白噪聲');disp('2->高斯低通濾波');disp('3->剪切圖像');disp('4->旋轉(zhuǎn)圖象');disp('5->直接檢測');begin=input('請(qǐng)選擇攻擊(1-5)');switch begin%加入白噪聲% case 1Ai
51、mage1=wimage;Wnoise=12*randn(size(Aimage1);Aimage1=Aimage1+Wnoise;subplot(2,3,4),imshow(Aimage1,),title('加入白噪聲后的圖象');att=Aimage1;imwrite(att,'whitenoiseimage.bmp');% 高斯低通濾波% case 2Aimage2=wimage;H=fspecial('gaussian',4,4,0.6);Aimage2=imfilter(Aimage2,H);subplot(2,3,4),imshow(Aimage2,),title('高斯低通濾波后的圖象');att=Aim
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 合格的企業(yè)合同 管理
- 通信工程專業(yè)合同條款
- 《蜜蜂導(dǎo)學(xué)案》課件
- 2025年衡陽貨運(yùn)從業(yè)資格證考試試題及答案
- 2025年廣東從業(yè)資格證貨運(yùn)題庫答案
- 公園建筑施工合同
- 精密儀器煙囪安裝合同模板
- 大數(shù)據(jù)項(xiàng)目招投標(biāo)要點(diǎn)
- 超市廁所改造施工合同范本
- 高速公路照明安全管理辦法
- 雍琦版-《法律邏輯學(xué)》課后習(xí)題答案(共78頁)
- 咸水沽污水廠生物池清淤施工組織方案
- 二甘醇二苯甲酸酯(DEDB)
- 數(shù)字化變電站的IEC61850建模
- 管道閉水試驗(yàn)記錄表自動(dòng)計(jì)算軟件
- 學(xué)校綜合督導(dǎo)匯報(bào)ppt課件
- 人流咨詢?cè)捫g(shù)
- 鐵路建設(shè)征地拆遷補(bǔ)償標(biāo)準(zhǔn)(附表)
- 農(nóng)村祠堂上梁說辭
- GB31644-2018食品安全國家標(biāo)準(zhǔn)復(fù)合調(diào)味料
- 建筑施工現(xiàn)場安全檢查的程序及要點(diǎn)
評(píng)論
0/150
提交評(píng)論