主頁 > 後端開發 > 基于ODBTC編碼的水印演算法

基于ODBTC編碼的水印演算法

2020-10-06 01:23:59 後端開發

進入資訊化時代以來,人們越來越依靠計算機來獲取和利用資訊,而數字化后的多媒體資訊具有資料的海量性,與當前硬體技術所能提供的計算機存盤資源和網路帶寬之間存在很大的差距,這樣就對資訊的存盤和傳輸造成了很大困難,成為阻礙人們獲取和利用資訊的一個瓶頸問題,

影像資訊作為計算機上一個最重要的資源,對其有效的進行影像壓縮處理無疑會給人們帶來巨大的好處,但傳統的影像塊截斷編碼(block truncation codingBTC)雖是一種極低復雜度的編碼演算法,但是當影像分塊較大的時候,BTC編碼演算法會存在較為明顯的塊效應,且壓縮效果較差等缺陷,針對這個問題,本文在傳統的BTC編碼演算法基礎之上提出了一種有序抖動塊截斷編碼(Order dither block truncation codingODBTC),該演算法不僅具有BTC編碼演算法的低復雜度特性,而且通過抖動矩陣來有效改善影像的壓縮質量,

本文在ODBTC影像壓縮編碼的基礎之上提出一種基于位平面的DCT域數字水印嵌入提取演算法,該演算法在嵌入水印之前,首先將水印影像進行位平面分解,然后在ODBTC編碼之后影像位平面進行DCT域的水印嵌入,并對嵌入水印后的位平面進行DCT逆變換,從而獲得獲得水印嵌入的效果,最后通過解碼,得到嵌入水印的宿主影像,進一步通過MATLAB平臺進行演算法的仿真實驗,仿真結果表明在ODBTC編碼的基礎之上,基于位平面分解的數字水印演算法具有良好的塊效應,并對加噪,旋轉,壓縮等攻擊具有較強的魯棒性,

隨著社會和科技的進步,數字化技術和網路技術也發展迅速,數字影像、數字音頻、數字視頻等各種多媒體數字作品在政府、軍隊、醫院、學校等重要機構和領域得到了廣泛的應用,利用數字媒體技術可以得到更多的復制品,但同時也容易被盜版者傳播或復制,因而會給數字媒體的著作權保護作業帶來嚴重的影響,如果數字產品的著作權問題得不到有效的保護,這將會給創作者和水印的所有者造成巨大的經濟損失,同時也將會對削弱數字作業者的創作積極性,因而資訊產業的發展將受到很大的阻礙,因此,如何更好地保護多媒體數字產品的著作權和資訊安全已經成為當前我們面臨的一項重大的挑戰,而數字水印技術可以有效地解決以上這些有關著作權保護等的問題[1],

數字水印技術源于資訊隱藏技術,并由資訊隱藏技術發展而來,為多個學科的交叉研究領域,數字水印技術通過將一些標識資訊直接或間接嵌入和表示于數字載體之中,在不影響原載體的使用價值的基礎之上,保證了水印資訊自身的不易探知性和不易修改性,與此同時,通過特定手段提取出的水印資訊又可確認資訊的創建者和購買者進而達到著作權保護等目的[2],

進入資訊化時代以來,人們越來越依靠計算機來獲取和利用資訊,而數字化后的多媒體資訊具有資料的海量性,與當前硬體技術所能提供的計算機存盤資源和網路帶寬之間存在很大的差距,這樣就對資訊的存盤和傳輸造成了很大困難,成為阻礙人們獲取和利用資訊的一個瓶頸問題,而影像資訊作為計算機上一個最重要的資源,對其有效的壓縮處理無疑會給人們帶來巨大的好處,然而傳統的塊截斷編碼(即BTC編碼)雖是具有極低復雜度的演算法,但是在影像分塊較大時具有明顯的快效應,壓縮效果較差,而有序抖動塊截斷編碼(即ODBTC)則在繼承傳統BTC編碼演算法低復雜度的同時,因其演算法中抖動矩陣的設計,有效的改善了影像壓縮質量,

與此同時隨著互聯網技術的快速發展,人民生活水平的不斷提高,物質生活水平的不斷跟近,與之相對,人們對于精神文化的需求也不斷增長,然而由于煩累的社會勞動和作業,由于現代社會時間的緊湊和緊張,隨著富裕階層人口的不斷擴張和道路擁擠現象的不斷加劇,使得現實意義上的物質追求越來越難以滿足,然而與此同時,另一個問題卻也不斷突顯,即盜版橫行,而千萬文化創造者的合法權益無法得到保護,如何在保證互聯網文化的繁榮的基礎之上保護文化創造者的著作權以及保護文化創造者的合法利益,所以一個尖銳的問題擺在我們面前:面對如此龐大的影像資訊,如何實作其在互聯網上的快速傳播,并保證其著作權不受侵犯,這使得數字水印研究的展開顯得尤為意義重大,其研究意義主要包括如下幾個方面:

1).社會意義,數字水印技術作為人們數字作品著作權保護的一種有效方法,可 以保護被侵權者的合法權益,同時也是懲治侵權者的有力證據,使得社會更加安定和諧,促進社會發展,

2).技術意義,數字水印作為隱藏學的一個重要分支,其技術意義非凡,數字 水印技術的不斷發展激勵著整個隱藏學的進步,數字水印也是一門與多種學科相交叉的學科,其包含了密碼學、隱藏學、演算法設計等多種學科,數字水印技術的發展也促進著其他學科的共同發展,

3).經濟意義,數字水印技術在人們的數字產品受到著作權侵害時能夠形成有效 的保護,使人們的經濟損失降到最低,同時也會為從事這方面研究的專家及機構帶來一定的收益,一旦得到廣泛應用,甚至是促進整個國家經濟的發展,

數字水印(Digital Watermarking)技術是將一些標識資訊(即數字水印)直接嵌入數字載體當中(包括多媒體、檔案、軟體等)或是間接表示(修改特定區域的結構),且不影響原載體的使用價值,也不容易被探知和再次修改,但可以被生產方識別和辨認,通過這些隱藏在載體中的資訊,可以達到確認內容創建者、購買者、傳送隱秘資訊或者判斷載體是否被篡改等目的,數字水印是保護資訊安全、實作防偽溯源、著作權保護的有效辦法,是資訊隱藏技術研究領域的重要分支和研究特性,要求被嵌入水印資訊必須滿足三個條件:一是要求對原始載體物件的內容不產生影響,且不能被肉眼所察覺,即滿足不可見性;二是要求嵌入的水印資訊難以被損壞或清除,且能夠提取出水印資訊,即滿足魯棒性;三是要求這一嵌入和提取程序必須是通過在提前知道秘鑰的前提下才能完成的,即滿足安全性,也就是說,數字水印技術應該同時具備較強的不可見性、魯棒性和安全性等,理想的數字水印演算法應該能夠隱藏盡可能多的資料資訊,而不被肉眼所察覺,并且能夠抵抗各種攻擊,

目前,數字水印的劃分有多種型別,具體來講主要包括如下幾個方面:

第一、根據數字水印的特性差異性可以將數字水印分為魯棒數字水印和脆弱數字水印兩類,

1).魯棒水印(Robust Watermarking)主要用于在數字作品中標識著作權資訊,利用這種水印技術在多媒體內容的資料中嵌入創建者、所有者的標示資訊,或者嵌入購買者的標示(即序列號),在發生著作權糾紛時,創建者或所有者的資訊用于標示資料的著作權所有者,而序列號用于追蹤違反協議而為盜版提供多媒體資料的用戶,用于著作權保護的數字水印要求有很強的魯棒性和安全性,除了要求在一般影像處理(如:濾波、加噪聲、替換、壓縮等)中生存外,還需能抵抗一些惡意攻擊,

2).脆弱水印(Fragile Watermarking),與魯棒水印的要求相反,脆弱數字水印主要用于完整性保護和認證,這種水印同樣是在內容資料中嵌入不可見的資訊,當內容發生改變時,這些水印資訊會發生相應的改變,從而可以鑒定原始資料是否被篡改,根據脆弱水印的應用范圍,脆弱水印又可分為選擇性和非選擇性脆弱水印,非選擇性脆弱水印能夠鑒別出位元位的任意變化,選擇性脆弱水印能夠根據應用范圍選擇對某些變化敏感,例如,影像的選擇性脆弱水印可以實作對同一幅影像的不同格式轉換不敏感,而對影像內容本身的處理(如:濾波、加噪聲、替換、壓縮等)又有較強的敏感性,即:既允許一定程度的失真,又要能將特定的失真情況探測出來,

第二、根據數字水印的附載媒體進行劃分,可以將數字水印劃分為影像水印、音頻水印、視頻水印、文本水印以及用于三維網格模型的網格水印等,隨著數字技術的發展,會有更多種類的數字媒體出現,同時也會產生相應的水印技術,

第三、根據檢測程序劃分,按水印的檢測程序可以將數字水印劃分為盲水印和非盲水印,非盲水印在檢測程序中需要原始資料或者預留資訊,而盲水印的檢測不需要任何原始資料和輔助資訊,一般來說,非盲水印的魯棒性比較強,但其應用需要原始資料的輔助而受到限制,盲水印的實用性強,應用范圍廣,非盲水印中,新出現的半盲水印能夠以少量的存盤代價換來更低的誤檢率、漏檢率,提高水印演算法的性能,目前學術界研究的數字水印大多數是盲水印或者半盲水印,

第四、根據內容劃分,數字水印的內容可以將水印劃分為有意義水印和無意義水印,有意義水印是指水印本身也是某個數字影像或數字音頻片段的編碼;無意義水印則只對應于一個序列,有意義水印的優勢在于,如果由于受到攻擊或其他原因致使解碼后的水印破損,人們仍然可以通過視覺觀察確認是否有水印,但對于無意義水印來說,如果解碼后的水印序列有若干碼元錯誤,則只能通過統計決策來確定信號中是否含有水印,

第五、根據用途劃分不同的應用需求造就了不同的水印技術,按水印的用途,我們可以將數字水印劃分為票證防偽水印、著作權保護水印、篡改提示水印和隱蔽標識水印,

第六、根據隱藏位置劃分,我們可以將其劃分為時(空)域數字水印、頻域數字水印、時/頻域數字水印和時間/尺度域數字水印,時(空)域數字水印是直接在信號空間上疊加水印資訊,而頻域數字水印、時/頻域數字水印和時間/尺度域數字水印則分別是在DCT變換域、時/頻變換域和小波變換域上隱藏水印,

數字水印具有如下幾個方面的特征:

1).不可見性:又稱隱蔽性,是指嵌入水印后的影像與原始載體影像在視覺上的相似度,兩者之間應感覺不到差別,對于一個優秀的水印演算法,嵌入水印后的影像不能有視覺質量上的下降,與原始載體影像相比,肉眼是分辨不出來兩者的,

2).魯棒性:又稱穩健性,是指經歷多種無意或有意的信號處理,如壓縮、裁剪、列印、 濾波等以及一些蓄意的攻擊后,數字水印仍能保持完整性或仍能被準確檢測和提取,然而,魯棒性并不是在所有的水印作品中都被要求的,相反,脆弱性水印中魯棒性是被強制要求避免的,如真偽鑒別,

3).可容性:即原始載體影像嵌入水印資訊的容量程度,又稱之為影像感知容量,指原始載體影像在不發生形變或畸變的前提下可嵌入的水印資訊量,可容性取決于原始載體影像的統計特性、冗余度、失真程度以及水印嵌入和提取演算法是否能充分利用載體影像等,

4).可證性:對于多媒體數字產品來說,證明著作權的存在和歸屬至關重要,數字水印就是著作權所有者證明其擁有該數字產品著作權的有力證據,符號、文字、圖形等產品標識資訊都可以作為水印嵌入到著作權所有者的載體資訊中,并可以通過計算機隨時將這些資訊從著作權所有者的載體中提取出來,

5).安全性:一個密鑰唯一地對應一個水印,不可能出現多個不同的密鑰對應同一個水印,而且,未經授權不能隨意改動或是提取出水印資訊,保證授權者能夠準確無誤地提取出正確且唯一的水印資訊,

其中,不可見性、魯棒性、安全性和水印容量是數字水印主要特征,其中不可見性和魯棒性是數字水印性能評估最主要的依據,數字影像水印演算法要求在人們視覺感官上沒有察覺的前提下,在載體數字影像中秘密地嵌入足夠多的水印資訊,而且理想的水印演算法要求,嵌入水印后的載體影像在受到各種攻擊后仍然能夠從中提取出有效的水印,即保證水印具有良好的魯棒性,其中,不可見性和魯棒性是一對矛盾體,互相影響,不可見性越好,魯棒性越差,因此,尋找兩者之間的平衡點是數字水印的關鍵,同時,評價水印演算法的優劣也需要一個標準,這個可通過以下兩種評價標準實作,

從信號處理角度來看,嵌入載體物件的水印信號可以視為是在強信號中嵌入一個弱信號,當嵌入的水印信號的強度小于人類視覺系統的對比度門限時或聽覺系統對聲音的感知門限,人類視覺系統和聽覺系統就感覺不到信號的存在,對比度門限和時間、頻率及視覺系統空間特性有著非常密切的關系,所以,如果在視覺效果不備改變的情況下,我們可以通過對原始影像做適當的修改來嵌入水印資訊,從通信的角度來說,水印資訊的嵌入程序可以看作是利用擴頻通信原理,在寬帶信道上進行窄帶信號的傳輸,水印信號本身的能量很弱,一旦分散到信道中就很難被檢測出來,

一般來說,水印系統的通用模型包括兩個階段,即水印的嵌入演算法和水印的提取演算法,水印嵌入演算法的目標是使水印在魯棒性和不可見性之間找到一個較好的折衷,水印提取階段主要是設計一個相應于水印嵌入程序的提取演算法,水印檢測演算法一般是以基于統計原理的檢驗結果來判斷水印是否存在,它的目標是使錯判概率和漏判概率盡量小,提取演算法是通過提取出來的水印與原始水印進行比較,從而進行判斷水印是否存在,值得一提的是,目前大多數水印在嵌入和提取程序中都采用了密鑰,其目的是為了給惡意攻擊者增加去除水印的難度,這樣只有掌握了密鑰的人才能讀出水印,

根據水印系統的型別進行分類,主要包括如下幾種常見的水印型別,

第一、私有水印系統,檢測水印時需要原始影像,由于這種水印方案只傳遞很小的水印資訊,且檢測時要求訪問原始影像,因此比其它的水印方案魯棒性強,

第二、半公開水印,檢測水印時需要一個依賴于原始影像的密鑰,這種水印一般不認為是公開的,它的應用范圍受到了較大的限制,

第三、公開水印,即盲水印,其檢測時既不需要原始影像也不需要嵌入的水印,但能從測驗影像中提取出水印資訊,

對影像水印嵌入演算法的魯棒性分析方面,主要考慮如下幾個方面的引數[14,15]:

第一、嵌入資訊的數量,這是一個重要的引數,因為它直接影響水印的魯棒性,對同一種水印方法而言,要嵌入的資訊越多,水印的魯棒性越差,

第二、水印嵌入強度,水印嵌入強度(對應于水印的魯棒性)和水印的可見性之間存在著一個折衷,增加魯棒性就要增加水印嵌入強度,相應的也會增加水印的可見性,

第三、影像的尺寸和特性,雖然尺寸小的含有水印的影像沒有多少商業價值,但一個水印軟體應該能夠從小圖片中恢復出水印,這樣可以有效地防止水印的馬賽克攻擊,除了影像尺寸外,影像的特性也對水印的魯棒性產生重要影響,如對掃描的自然影像具有高魯棒性的水印方案在應用于合成影像時,魯棒性會大大削弱,一個合理的基準測驗所能適應的影像尺寸應該很大,并且應能使用不同型別的測驗影像,

第四、秘密資訊(如密鑰),盡管秘密資訊的數量不直接影響水印的可見性和魯棒性,但對系統的安全性起重要作用,和其它的安全系統一樣,水印系統密鑰空間須足夠大,以使窮舉攻擊法失效,

離散余弦變換域水印演算法主要是在影像的DCT變換域的低、中頻系數上來疊加水印資訊,一般人眼的感覺最重要的像素是集中在低、中頻區域,通常的影像處理操作不會改變低、中頻段的資料,因為在離散余弦變換域上對影像資訊進行量化是JPEG演算法的核心,所以水印資訊在經過量化程序后,可以抵抗一定程度的有損壓縮,再則,DCT變換域系數的特征具有統計分布的數學模型,我們可以從理論上對水印的資訊量進行估計,由于DCT變換的影像數字水印在做IDCT時會散布到整個影像中,所以水印資訊受到中值濾波、裁剪和壓縮等攻擊的影響不大,因此DCT域的水印具有較高的魯棒性和不可見性,基于以上的種種優點,DCT域影像數字水印演算法已成為國內外研究的熱點問題[16]

離散余弦變換(DCT)是對實信號定義的一種變換,變換后在頻域中得到的也是一個實信號,相比DFT而言DCT可以減少一半以上的計算,DCT還有一個很重要的性質:大多書自然信號的能量都集中在離散余弦變換后的低頻部分,因而DCT在資料壓縮中得到了廣泛的使用,由于DCT是從DFT推匯出來的另一種變換,因此許多DFT的屬性在DCT中仍然是保留下來的,基本原理是:將原影像分割多個無重疊像素塊,并為每個像素塊單獨設計2電平量化器,之后基于每個像素塊的特性進行電平重建,以達到壓縮編碼的目的[17]

離散余弦變換包括一維離散余弦變換和二維離散余弦變換,其中,一維離散余弦變換是由N.Ahmed等人于1974年提出,假設為信號序列集合,其DCT的正變換定義為:

為了有效的計算DCT,許多演算法被提出,一般DCT快速演算法分為兩種:間接演算法和直接演算法,兩種演算法都是集中在蝶型結構上,且目的都是為了減少乘法和加法的計算量,間接演算法是利用DCT和DFT,DHT等正交變換之間的關系,用DFT或DHT快速演算法來計算DCT,間接演算法程序簡單,主要作業是處理演算法間的轉換,因此往往需要加一些額外的操作步驟,由于將其他變換的快速演算法應用在DCT中總有其自身的局限性,所以現在演算法上已很少有人采用間接演算法來計算DCT,直接演算法包括DCT變換矩陣分解,遞回演算法兩種技術,不同之處在于矩陣分解是利用稀疏矩陣分解法將變換矩陣分解,而遞回演算法是由較低階DCT矩陣遞回產生較高階DCT矩陣,可以說遞回演算法是分解演算法的逆演算法,但遞回演算法較矩陣分解演算法有良好的數值穩定性,

DCT變換有其獨有的特點,首先水印信號經過離散余弦變換后,變換系數變成了不相關,再經過IDCT變換影像進行重構,出現的誤差不會造成積累,它像噪聲一樣被分散到影像塊中的每個像素中,并且變換能將資料塊中的能量壓縮到部分低頻變換系數中去,

基于DCT域的數字水印演算法,對于給定影像存在兩種DCT變換方法:一類是直接對整幅影像進行DCT計算,選取合適的系數,嵌入水印,另一類是,首先將整幅影像分塊,對每一塊進行DCT計算,在每一塊中選取合適的頻段系數,將水印資訊分散嵌入到所選取的每一塊DCT系數中,這種方法稱為分塊DCT,通常塊大小采用8×8像素點,

3.1 有序抖動序列設計

一般來說,藍色噪聲分布為人眼提供了最佳的影像質量Ulichney1993中提出了一種產生均勻有序抖動陣列的方法,該方法假設抖動陣列的大小為M×N,其中每個元素都有自己的從0(M×N-1)的整數順序,然后將這些順序歸一化為影像中相當閾值的像素值,其具體步驟如下所示:

第一階段是產生一個初始的二進制模式,其中使用高斯低通濾波器來檢查少數像素密度,少數像素從最緊密的簇移動到最大的空隙,重復該程序,直到少數像素從最緊密的簇移動,并且最大的空位置是先前最緊密的簇位置,

第二階段涉及三個步驟,首先,使用一個常數A來表示初始的二進制模式中少數像素的數量,然后通過在最大的無效位置插入少數像素,在A和中途點(M×N)/ 2之間輸入值,最后,通過在最緊密的位置插入多數像素,從中途點輸入所有大多數像素的值,

3.2 BTC編碼的基本原理

塊截斷編碼是一種有效的、快速的有損影像壓縮方法,與矢量量化和變換編碼相比,塊截斷編碼更加容易實作,因為它具有運算量低,所需存貯量小,簡單、快速的低復雜度實作演算法,以及良好的抗信道干擾特性等優點,所以長期以來在實時影像傳輸領域中一直受到人們的重視,實質上塊截斷編碼是一個1位元自適應矩保持(Moment-preserving quantizer)量化器,它能夠保持信號樣本的一階矩和二階矩,使譯碼影像在一定程度上保持了原影像的區域統計特性,然而標準塊截斷編碼演算法和絕對矩塊截斷編碼演算法所能達到的位元率均為2位元/像素,同時其壓縮比也不高,因此,為了進一步提高壓縮比、減少位元率,并提高重建影像的質量隨后又陸續出現了許多關于塊截斷編碼的改進演算法和自適應的或混合的塊截斷編碼方案,例如,用中值濾波器,矢量量化,插值或預測等方法來對輸出量化器的資料進行編碼,然而,壓縮比的增加,位元率的減少都是以重建影像失真度的增大或演算法復雜度的增加為代價的[19],

在標準的塊截斷編碼中,將影像分段成為n×n無重疊影像塊,4×4為典型塊,并為各資料塊而單獨設計的2電平(1bit)量化器,量化門限和二個重建電平隨一個影像塊的區域統計特征而變化,因此該編碼實際上是一個區域二進制處理程序,這種資料塊的表達方式是由一個n×n位元映像所組成,該n×nbit代表了有關各像素的重建電平和確定兩個重建電平的附加資訊,而譯碼是個簡單的處理程序,它在作為每位元映像的各像素位置,選定一個合適的重建值而完成譯碼,

根據上述原理可知,BTC編解碼的整體流程圖如下所示:

在公式3.6和公式3.7中,變數表示的是原始影像;變數表示的是解壓縮后的影像,

在實驗中采用三幅圖象,Lena,claire1和monkey影像,它們的大小分別為256×256、256×256以及512×512,解析度為8位元/像素,每幅圖象都被分成若干塊大小為4×4的塊,

(a)原始影像 (b)4X4 (c)8X8 (d)16X16

3.2測驗影像1

(a)原始影像 (b)4X4 (c)8X8 (d)16X16

3.3測驗影像2

(a)原始影像 (b)4X4 (c)8X8 (d)16X16

3.4測驗影像3

在影像進行ODBTC編碼之后,可以獲得影像的編碼后的位平面,在此位平面,進行水印的嵌入和提取操作,下面首先對水印的嵌入操作進行介紹,基于ODBTC編碼后的DCT域影像位平面分解的水印嵌入演算法流程圖如下圖所示:

步驟1、根據本文第三章節所介紹的原理進行影像的ODBTC編碼處理;

步驟2、對水印影像進行處理,獲得其相應的位平面,將原始的水印影像轉換為8個位平面影像,影像的位平面可以通過如下的示意圖示示:

4.2位平面分解圖

從圖4.1可知,對水印資訊計算其位平面,通過處理之后,將一個水印影像轉換為8個位平面,一幅數字影像的每一個像素都是以多位元的方式存在的,而每一個像素通常為8(像素值0255),所謂位平面的含義便是將每一個像素值都分解為8個位寬的二進制值,所有同權值的位構成的平面稱為一個位平面,

步驟3、對影像ODBTC編碼之后的影像位平面進行二維分塊DCT變換,

步驟4二維分塊DCT變換后的水印影像進行基于隨機序列水印嵌入操作,具體處理公式如下所示:

(4.1)

公式4.1中,變數w表示的是水印影像;變數f表示的是原始DCT域影像;變數f'表示的是嵌入水印后的DCT域影像,

步驟5、進行二維DCT逆變換,獲得嵌入水印后的影像;

水印嵌入之后,則進行水印的提取操作,基于ODBTC編碼后的DCT域影像位平面分解的水印提取演算法流程圖如下圖所示:

根據該流程圖,水印提取演算法的詳細步驟如下:

步驟1、對影像進行DCT變換,獲得DCT域的嵌入水印影像;

步驟2產生和嵌入水印相同的隨機序列,由于水印在嵌入的時候,是根據隨機序列的極性進行水印的嵌入,因此,我們在水印提取的時候,充分考慮了這個特性,

步驟3、將DCT變換后的嵌入水印影像和隨機序列做相關運算,從而獲得水印資訊的嵌入位置和水印資訊,該步驟是水印提取的核心步驟,其主要利用了隨機序列的相關特性來實作的,

首先,隨機序列具有四大特性,分別為隨機序列中高低電平出現的次數大致相等;隨機序列具有良好的相關特性;隨機序列中連續出現的高電平或低電平被稱為游程,而長度為n(n為自然數)的游程出現的次數占總游程數的1/2;隨機隨意將一個序列位移得到的新序列與原序列比較,只有一半的元素相同,

這里,我們首先對整個水印的嵌入和提取程序進行MATLAB仿真,仿真結果如下圖所示:

(a)原始影像 (b)水印 (c)嵌入水印的影像 (d)提取的水印

4.5水印嵌入和提取程序的MATLAB仿真

從圖4.5的仿真結果可知,通過本文提出的演算法,可以較好的提取水印資訊,且嵌入水印后的影像基本不受水印的影響,下面將通過各種攻擊測驗來分析水印的魯棒性,

·噪聲攻擊

噪聲攻擊是指通過對嵌入水印后的影像加入不同噪聲干擾大小的噪聲,進行水印的提取,并分析提取水印影像質量效果,這里添加高斯白噪聲的大小為SNR=[-10,-5,0,5,10,15,20]

(a)PSNR指標 (b) NC指標

4.6在不同噪聲攻擊下的影像水印提取仿真效果

(a)SNR=-5噪聲攻擊下的水印提取效果

(b)SNR=5噪聲攻擊下的水印提取效果

(b)SNR=20噪聲攻擊下的水印提取效果

4.7在不同噪聲攻擊下的影像水印提取仿真效果

從圖4.6和圖4.7的仿真結果可知,當噪聲大小SNR大于5db之后,提取的水印效果基本處于穩定狀態,并獲得了較好的水印提取效果,因此本文研究的水印提取演算法具有較好的抗噪聲魯棒性,

·旋轉攻擊

旋轉攻擊是指通過對嵌入水印后的影像進行一定角度的旋轉,然后再進行水印的提取,并分析提取水印影像質量效果,

(a)PSNR指標 (b) NC指標

4.8在不同旋轉攻擊下的影像水印提取仿真效果

·壓縮攻擊

壓縮攻擊是指通過對嵌入水印后的影像進行一定程度的像素大小的壓縮,然后再進行水印的提取,并分析提取水印影像質量效果,壓縮大小為12.5%25%50%100%,仿真結果如下圖所示:

本章提出一種基于一種特別的基于ODBTC編碼的水印演算法,即在嵌入水印之前,先將水印進行位平面分解,而后在ODBTC編碼之后解碼之前形成的原影像位平面的DCT變換域上進行水印嵌,即在嵌入水印之前,先對位平面影像進行DCT變換域處理,而在嵌入之后,再做逆DCT變換,獲得水印嵌入的效果,而之后通過解碼,便可以獲得嵌入水印的宿主影像,而事實證明,此演算法在面對加噪,旋轉,壓縮等干擾攻擊時,有較高的魯棒性,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/158428.html

標籤:python

上一篇:Actor-Critic:強化學習中的參與者-評價者演算法簡介

下一篇:通過python完成 青書學堂刷課 青書視頻 青書教材 課件學習

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more