【圖像隱藏】基於DWT與SVD算法實現數字水印嵌入提取附Matlab代碼

2022-02-07 天天Matlab

收錄於話題 #圖像處理matlab源碼 420個

1 簡介

研究數字圖像版權保護問題,由於數字媒體在網上易被複製篡改.針對單純奇異值分解或小波變換水印算法均存在抵抗攻擊差的難題,為了更好的保護數字圖像版權,提了一種奇異值分解與小波變換相結合的數字水印算法.首先對水印圖像進行置亂處理並對原始圖像進行分塊,從中找到符合要求的最佳水印嵌入子塊,然後對所選擇的最佳子塊進行小波變換,對子塊的低頻係數進行奇異值分解,最後將水印嵌入各子塊的奇異值中進行仿真.結果表明,水印算法能夠很好的抵抗多種攻擊,水印具有很好的魯棒性和不可見性,克服了奇異值分解和小波變換水印算法缺陷,為設計提供了依據.

隨著網際網路普及,信息通訊技術的飛速發展,多媒體技術得到了充分的應用。但是開放的網際網路使這些多媒體信息的傳輸變得不安全,而數字水印技術恰恰能保護這些多媒體信息的傳輸。數字水印技術通過一定的嵌入算法將一些可以用來標識多媒體數據的來源、版本、作者等標誌性信息嵌入到多媒體數據中來保護多媒體數據的版權,但是不影響原始數據的使用和價值,並且不易被人察覺 。根據嵌入位置的不同,數字水印算法分為空域和變換域水印算法。一般而言,變換域水印算法穩健性較好,主要的變換域有離散餘弦變換 ( discrete cosine transform DCT)、離散小波變換 ( discrete wavelet transform DWT)和離散傅立葉變換 ( discrete fourier transform DFT)。在變換域中奇異值分解(singular value decomposition SVD) 是一種將矩陣對角化的方法。圖像的奇異值有較好的穩定性,利用這個原理可將水印信息嵌入到圖像經過奇異值變換後的係數。 1 離散餘弦變換和奇異值分解 1.1 離散餘弦變換 離散餘弦變換(Discrete Cosine Transform, DCT)是 一組不同 頻率和幅值的餘弦函數和來近似衣服圖像,實際上是傅立葉變換的實數部分。由於離散餘弦變量對於衣服圖像,其大部分可視化信息都集中在少數的變換係數上。因此,離散餘弦變量是數據壓縮常用的一個變換編碼方法,它能將高相關數據能量集中,使得它非常適用於圖像壓縮。一維離散信號f(x) 的離散餘弦正變換為: 二維離散信號 f(x) 的離散餘弦正變換為: 1.2 奇異值分解( SVD)

矩陣經過SVD 分解得到 1個奇異值矩陣 2個正交矩陣。圖像的奇異值有很強的穩定性,圖像受到輕微的擾動時不會有顯著改變。利用奇異值的這種特性,如果將水印嵌入在載體圖像 SVD 分解後的奇異值上,當攻擊者對含水印圖像進行攻擊擾亂時,我們仍能從分解的奇異值中提取出水印信息。並且,奇異值對應於圖像的亮度特性,而非視覺特性,因此,在奇異值上嵌入水印能保證水印的透明性,保障了水印算法的隱蔽性與安全性。奇異值表徵圖像矩陣元素的相互關係,在輕微擾動時不會發生變化,因此,在奇異值上嵌入水印不會損害圖像的幾何特性。SVD 分解是線性代數中一種非常重要的分解方式其定義如 下。設矩陣 A RRm×n,R表示實數域, m×n表示矩陣大小, A進行 SVD 處理的公式為 A = USVT (3) 式中: U V 都是正交矩陣,S是對角矩陣,奇異值就是矩陣 S 的對角線元素 且這些對角線元素滿足 : σ1≥σ2≥σ3≥…σr≥σr+1 =…= σm =0 (其中 ,r表示 A的秩 )。 2 列印和掃描的應用分析 圖像水印應用這種應用的挑戰包括建立一種魯棒的水印技術,以從印刷媒體中提取水印。該技術應該能夠抵抗由於列印過程而發生的數字到模擬轉應該能夠抵抗由於列印過程而發生的數字到模擬轉換,然後是掃描列印的水印圖像時發生的模擬換,然後是掃描列印的水印圖像時發生的模擬 - 數數字轉換。字轉換。在列印過程中,帶水印的圖像是模擬格式。在列印過程中,帶水印的圖像是模擬格式。為了提取水印,應使用列印掃描過程中的掃描儀或為了提取水印,應使用列印掃描過程中的掃描儀或列印凸輪過程中的相機(移動相機或數位相機)通列印凸輪過程中的相機(移動相機或數位相機)通過捕獲過程將模擬數據數位化過捕獲過程將模擬數據數位化。。由於引入的攻擊,由於引入的攻擊,包括幾何攻擊(例如旋轉,縮放,切割和剪切)以包括幾何攻擊(例如旋轉,縮放,切割和剪切)以及由設備引起的扭曲,列印和捕獲過程可能具有挑及由設備引起的扭曲,列印和捕獲過程可能具有挑戰性。戰性。這些失真通常是由在行動電話中存儲圖像時這些失真通常是由在行動電話中存儲圖像時的列印和壓縮過的列印和壓縮過程引起的。一些研究已經研究了這程引起的。一些研究已經研究了這些仍處於初期階段的應用些仍處於初期階段的應用。


2 部分代碼

function varargout = main(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name',       mfilename, ...

                   'gui_Singleton',  gui_Singleton, ...

                   'gui_OpeningFcn', @main_OpeningFcn, ...

                   'gui_OutputFcn',  @main_OutputFcn, ...

                   'gui_LayoutFcn',  [] , ...

                   'gui_Callback',   []);

if nargin & isstr(varargin{1})

    end

end

axes(handles.axes5);

imshow(WNN);

title('提取的水印信息');

global WNN;

function pushbutton6_Callback(hObject, eventdata, handles)

global WNN;

global WWW;

watermark_ww=im2bw(WNN);

[a b c]=size(watermark_ww);

N=a*b;

key1=0.2345;

mm(1)=key1;

mu=4;

for i=1:N-1

    mm(i+1)=mu*mm(i)-mu*mm(i)^2;

end

mm=mod(1000*mm,256);

mm=uint8(mm);

mm=im2bw(mm);

n=1;

for i=1:a

    for j=1:b

        WWW(i,j)=bitxor(mm(n),watermark_ww(i,j));

        n=n+1;

    end

end

axes(handles.axes7);

imshow(WWW);

title('解密水印');

function edit1_CreateFcn(hObject, eventdata, handles)

if ispc

    set(hObject,'BackgroundColor','white');

else

    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

function edit1_Callback(hObject, eventdata, handles)

function axes4_ButtonDownFcn(hObject, eventdata, handles)

function axes4_CreateFcn(hObject, eventdata, handles)

function axes6_ButtonDownFcn(hObject, eventdata, handles)

function pushbutton9_Callback(hObject, eventdata, handles)

close(gcbf);

function pushbutton3_ButtonDownFcn(hObject, eventdata, handles)

3 仿真結果

4 參考文獻

[1]張紅, 馬彩文, 董永英,等. 基於DWT-SVD的數字水印嵌入方法[J]. 科學技術與工程, 2005, 5(20):1540-1544.

博主簡介:擅長智能優化算法、神經網絡預測、信號處理、元胞自動機、圖像處理、路徑規劃、無人機等多種領域的Matlab仿真,相關matlab代碼問題可私信交流。

部分理論引用網絡文獻,若有侵權聯繫博主刪除。

相關焦點

  • 【信號隱藏】基於奇異值分解svd和小波變換算法求解水印嵌入提取附Matlab代碼
    1 簡介針對現有水印算法在嵌入過程中通常會對原始音頻信號產生破壞的問題,設計了一種基於離散小波變換
  • 【圖像加密】基於DCT(離散餘弦變換)與SVD(奇異值分解)域自適應嵌入水印matlab源碼
    大多數情況下,視頻頻譜的幅度隨著頻率的升高而降低。其中 低頻頻譜在幾乎相等的概率下獲得0到最高的電平。與此相對照,高頻頻譜通常得到的是低電平及稀少的高電平。顯然,低頻頻譜具有較高的熵值,高頻頻譜具有較低的熵值。據此,可對視頻的低頻分量和高頻分量分別處理,獲得高頻的壓縮值。
  • 【信號隱藏】基於奇異值分解svd實現音頻水印嵌入提取含攻擊matlab代碼
    收錄於話題 #信號處理應用matlab; cur_col=cur_col-1; %move diagonally left down cur_index=cur_index+1; elseif cur_row~=1 & cur_col~=num_cols & mod(cur_row+cur_col,2)==0 out(cur_row,cur_col
  • 圖像特徵提取學習筆記 | 使用低秩 SVD 的圖像壓縮實例!
    最近關注尋找一些非典型算法嘗試從一幅圖像中提取一些特徵用於機器學習分類,看到Mathworks公司主頁上的這個實例,深受啟發,也許從圖像對應的矩陣分解理論能適當地降維待處理的圖像數據並抽取有意義的特徵用於基於圖神經網絡的分類研究。轉發於此,備忘!
  • 基於COM的Matlab參數處理與圖像嵌入在VC中的實現
    請注意,下面將省略COM初始化及實例化等相同代碼。 (3) 需要重點說明的是該方法的擴展性。通常Excel文件中保存多個工作區,有時用戶可能需要打開同一Excel文件中不同工作區中的數據,常規方法實現過於複雜,但對於本文介紹的方法可以通過修改添加幾條語句即可實現。
  • 【表情識別】基於卷積神經網絡CNN實現人臉表情識別附matlab代碼
    1 簡介人臉表情蘊含著豐富的情感信息,在人際交往溝通中起非常關鍵的作用,如何讓計算機正確的識別理解人臉表情信息是一項具有重要意義且極具挑戰性的工作
  • 基於二值圖像的邊界提取和4方向鏈碼表示
    尚振宏等從數字直線的鏈碼特徵得到啟發,以線段元為基本單位進行直線的構造,準確地檢測出圖像中物體邊界中的直線。餘霞等將二維鏈碼編碼擴展到三維空間,對三維心血管進行編碼,實現對不同時刻的三維心血管圖像中心血管中軸線的匹配。Freeman鏈碼技術是一種用來刻畫數字圖像的邊界的方法。該方法首先需要定義一個方向坐標,常用的兩個方向坐標是如圖1的四方向和八方向坐標。
  • 【圖像識別】基於模板匹配算法實現手寫英文字母識別matlab代碼
    matlab源碼 331個
  • 結合實例與代碼談數字圖像處理都研究什麼?
    這裡面其實還包含了插值算法(這是某些幾何變換所必須的),例如最鄰近插值法、雙線性插值法等等)  幾何變換同時和圖像的濾鏡特效是緊密聯繫的,某些特效的實現本質上就是某種類型的幾何變換。例如      5、圖像復原  廣義上來說——圖像降噪,圖像去霧,圖像去模糊 都屬於這個範疇  去噪實例是我用MagicHouse實現的中值濾波處理椒鹽噪聲的效果。此外,一些基於非局部均值的降噪算法是當前研究的熱點(例如BM3D、NLM等)
  • Matlab實現圖像閾值分割(含代碼)
    使用matlab實現閾值分割,實現兩種方法,一是人工選擇閾值進行分割,而是自動選擇閾值進行分割。
  • 基於K-means聚類算法的MATLAB圖像分割
    K-means算法在每次迭代中都要考察每個樣本的分類是否正確,若不正確,則需要調整。K-means聚類算法簡捷,具有很強的搜索力,適合處理數據量大的情況,在數據挖掘和圖像處理領域中得到了廣泛的應用。採用K-means進行圖像分割,將圖像的每個像素點的灰度或者RGB作為樣本(特徵向量),因此整個圖像構成了一個樣本集合(特徵向量空間),從而把圖像分割任務轉換為對數據集合的聚類任務。
  • 數學推導+純Python實現機器學習算法28:奇異值分解SVD
    Python SVD實現     Python中numpy和scipy兩個科學計算庫都直接提供了SVD的實現方式,所以我們這裡就不再基於numpy手寫SVD的實現過程了。下面基於numpy.linalg線性代數模塊下的svd函數來看一個計算實例。
  • 【圖像識別】基於PCA+LDA算法人臉識別matlab代碼
    matlab源碼 347個
  • 從零開始實現穿衣圖像分割完整教程(附python代碼演練)
    我們只實現了簡單的功能。 假設感興趣的人站在圖像的中間。原文連結:https://towardsdatascience.com/dress-segmentation-with-autoencoder-in-keras-497cf1fd169a閱讀過本文的人還看了以下:分享《深度學習入門:基於Python的理論與實現》高清中文版PDF+原始碼
  • 數據洩露頻發,數據水印技術如何做到事後溯源追責?
    另外,疫情期間收集的個人信息由於內部人員主動外發原因導致的數據洩露頻頻發生,比如2020年1月,超7000武漢返鄉人員的個人信息被洩露,其中包括公民的身份證號碼,電話號碼,具體家庭住址,列車信息等;同年7月,山東青島膠州中心醫院6000餘人的就診名單發生洩露,涉及患者的詳細個人信息。數據的價值性與變現能力導致數據黑灰產愈發猖獗,暗網每天活躍著各類洩露數據的交易。
  • 結合實例談數字圖像處理都研究什麼?
    這裡面其實還包含了插值算法(這是某些幾何變換所必須的),例如最鄰近插值法、雙線性插值法等等)幾何變換同時和圖像的濾鏡特效是緊密聯繫的,某些特效的實現本質上就是某種類型的幾何變換。例如    廣義上來說——圖像降噪,圖像去霧,圖像去模糊 都屬於這個範疇去噪實例是我用MagicHouse實現的中值濾波處理椒鹽噪聲的效果。此外,一些基於非局部均值的降噪算法是當前研究的熱點(例如BM3D、NLM等)
  • 主成分分析(PCA)及其MATLAB的實現方法
    收錄於話題 #matlab算法一:特徵分解(Eigen Decomposition)1.先對A 進行中心化(整體平移數據,使數據中心在( 0 , 0 ) :
  • 大神帶你玩轉matlab圖像處理(6)——Hough變換
    所以說有些知識說不定你那天就能夠使用到,秉持著「技多不壓身」的原則,本期跟隨過冷水了解一點點圖像處理方面的知識吧!之前公眾號作者:小豬豬有連載大神帶你玩轉matlab圖像處理推文。關於圖像處理的基礎知識過冷水就不再重複講解了,在其基礎上繼續深入學習數字圖像的轉變。
  • 圖像全參考測算(中)——SSIM 實現與細節
    理解:英文截取自 wiki 定義,SSIM 是一種預測數位電視、電影圖像以及其他類型數字圖像或視頻的感知質量的方法。這個基本模型是由德克薩斯大學奧斯汀分校的圖像和視頻工程實驗室(LIVE)開發的,並與紐約大學計算視覺實驗室(LCV)共同進一步開發。滑鐵盧大學的圖像和視覺計算實驗室已經開發了該模型的進一步變體,並已商業化。
  • 【圖像識別】基於計算機視覺實現路面裂縫檢測識別系統matlab代碼
    matlab源碼 354個