本文是該系列的第20篇。數(shù)字水印是一種將標識信息嵌入到載體當(dāng)中,且不影響載體使用的一種技術(shù),主要分為時域水印嵌入算法(將水印嵌入到時域采樣數(shù)據(jù)中)和變換域水印嵌入算法(先對音頻做變換,將水印嵌入到變換域系數(shù)中)。本文將介紹一種簡單的時域水印嵌入算法——LSB算法。
LSB算法
通常數(shù)字水印技術(shù)有不可感知性的要求,即嵌入數(shù)字水印后載體數(shù)據(jù)發(fā)生了變化,但是不會影響到該數(shù)據(jù)的使用,對使用者而言也不可察覺。
該算法將水印信息嵌入到數(shù)據(jù)的最低有效位(Least Significant Bit)部分,即將數(shù)據(jù)的LSB替換為需要加入的水印信息。這正是因為低位數(shù)據(jù)對整體數(shù)據(jù)的影響最小,這也導(dǎo)致嵌入的水印信息強度不高,否則會影響到載體的數(shù)據(jù)質(zhì)量。因此該算法僅限用于脆弱性數(shù)字水印(相較于魯棒性數(shù)字水印而言,無法承受大量失真)。
System Generator設(shè)計
該算法的實現(xiàn)很簡單,在Simulink中添加block按下圖連接:
數(shù)字水印嵌入部分,載體數(shù)據(jù)量化為Fix_12_11格式,水印信息量化為Fix_4_3格式,這里選擇兩首不同的音樂作為載體和水印。使用Concat拼接兩個數(shù)據(jù),水印信息作為LSB。由于Concat模塊只接收無符號整數(shù)輸入,因此需要使用Reinterpret分別轉(zhuǎn)換為UFix格式。Concat輸出的數(shù)據(jù)再由Reinterpret轉(zhuǎn)換為Fix_16_15數(shù)據(jù),導(dǎo)出到wav文件中。
數(shù)字水印提取部分,直接使用slice將音頻信號的低4Bits提取出即為數(shù)字水印信息。提取出的數(shù)據(jù)由Reinterpret轉(zhuǎn)換為Fix_4_3,寫入到音頻文件中。
系統(tǒng)采樣率為48000Hz,仿真時長10s即可。運行仿真后可以發(fā)現(xiàn),播放添加了水印后的載體音樂時,完全聽不出其中包含水印音樂;播放提取出的水印音樂,發(fā)現(xiàn)由于該算法的限制性,量化位寬較少,存在一定的噪聲干擾。
block使用方法
●Concat:該block用于拼接多個比特向量,類似于Verilog語法中的“{ }”。該模塊的輸入只能是無符號整數(shù),因此經(jīng)常和Reinterpret(在本系列第8篇中進行過詳細講述)配合使用。該模塊可以設(shè)置2~1024個輸入,拼接為1個輸出。
●Slice:該block用于提取輸入的二進制序列中的某些位作為輸出,輸出格式為無符號整數(shù)。該block的配置有多種提取方式可以選擇:
“Width of slice(number of bits)”設(shè)置提取出數(shù)據(jù)的位寬。當(dāng)選中“Boolean output”,如果截取的位寬為單比特,輸出類型會變?yōu)锽oolean。
Offset of top bit和Offset of bottom bit為計算截取高位和截取低位所需的偏置值。分別有一個Relative to設(shè)置計算偏置的方式。“Specify range as”中可以選擇三種提取數(shù)據(jù)的指定方式。
上面看起來比較繞,以實例的方式理解。假設(shè)輸入數(shù)據(jù)IN為Fix_16_8格式,Specify range as選擇Two bit location,即分別指定截取高位和截取低位:
- 兩者的Relative to都設(shè)置為“LSB of input”,top bit設(shè)置為3,bottom bit設(shè)置為0。提取結(jié)果為IN[3:0],LSB of input表示從低位開始計算偏置值(offset)。
- top bit設(shè)置為-3,對應(yīng)的relative to設(shè)置為“MSB of input”;bottom bit設(shè)置為0,對應(yīng)的relative to設(shè)置為“LSB of input”。提取結(jié)果為IN[13:0],MSB of input表示從高位開始計算偏置值(offset),偏置值必須是負數(shù)。
- Binary point of input,表示從小數(shù)點位置開始計算偏置值,設(shè)置為正數(shù)表示向高位計數(shù),設(shè)置為負數(shù)表示向低位計數(shù)。比如bottom bit不變,top bit設(shè)置為-3、Binary point of input,則提取IN[4:0];top bit設(shè)置為2、Binary point of input,則提取IN[9:0]。
Upper bit location+width、Lower bit location+width只需要設(shè)置截取高位或截取低位,只是截取長度由Width of slice指定。
編輯:hfy
-
數(shù)字水印
+關(guān)注
關(guān)注
0文章
43瀏覽量
15152 -
LSB算法
+關(guān)注
關(guān)注
0文章
7瀏覽量
5880
發(fā)布評論請先 登錄
基于音頻統(tǒng)計特性的數(shù)字水印嵌入算法
使用頻域LSB水印算法的魯棒性分析
利用數(shù)字水印技術(shù)驗證文本信息的篡改
一種改進的基于小波變換的數(shù)字水印算法
基于變換域的音頻數(shù)字零水印算法研究
基于余弦變換和小波變換的數(shù)字水印算法
多功能雙水印算法
基于音頻統(tǒng)計特性的數(shù)字水印嵌入算法
數(shù)字水印技術(shù)分析在電視領(lǐng)域的應(yīng)用
DCT域數(shù)字水印算法的FPGA實現(xiàn)
基于離散余弦的數(shù)字水印算法
圖像盲檢測穩(wěn)健數(shù)字水印算法

評論