⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fixlianghua.m

📁 实现小波数字水印
💻 M
字号:
clear;clc
o=imread('lena256.jpg');
N=10;
RM=32;CN=32;
figure
imshow(o)
o=double(o);
w=[1 0;0 1];
for i=1:4
    w=[w w;w w];
end
[CA1,CH1,CV1,CD1] = DWT2(o,'haar');
CA1=round(CA1);
CH1=round(CH1);
CV1=round(CV1);
CD1=round(CD1);
[CA2,CH2,CV2,CD2] = DWT2(CA1,'haar');
CA2=round(CA2);
CH2=round(CH2);
CV2=round(CV2);
CD2=round(CD2);
[CA3,CH3,CV3,CD3] = DWT2(CA2,'haar');
CA3=round(CA3);
CH3=round(CH3);
CV3=round(CV3);
CD3=round(CD3);
for i=1:RM
    for j=1:CN
        Range=[CH3(i,j),CV3(i,j),CD3(i,j)];
        [Rank CLoc]=sort(Range);
        NewRange=Rank(1):(Rank(3)-Rank(1))/(N-1):Rank(3);
        if w(i,j)==0
            Diff=abs(NewRange(2:2:N)-Rank(2)*ones(1,floor(N/2)));
            [Rank Loc]=sort(Diff);
            if CLoc(2)==1
                CH3(i,j)=NewRange(2*Loc(1));
                CH3(i,j)=round(CH3(i,j));
            elseif CLoc(2)==2
                CV3(i,j)=NewRange(2*Loc(1));
                CV3(i,j)=round(CV3(i,j));
            else
                CD3(i,j)=NewRange(2*Loc(1));
                CD3(i,j)=round(CD3(i,j));
            end
        else
            Diff=abs(NewRange(1:2:N)-Rank(2)*ones(1,ceil(N/2)));
            [Rank Loc]=sort(Diff);
            if CLoc(2)==1
                CH3(i,j)=NewRange(2*Loc(1)-1);
                CH3(i,j)=round(CH3(i,j));
            elseif CLoc(2)==2
                CV3(i,j)=NewRange(2*Loc(1)-1);
                CV3(i,j)=round(CV3(i,j));
            else
                CD3(i,j)=NewRange(2*Loc(1)-1);
                CD3(i,j)=round(CD3(i,j));
            end
        end                
    end
end
CA2=IDWT2(CA3,CH3,CV3,CD3,'haar');
CA2=round(CA2);
CA1=IDWT2(CA2,CH2,CV2,CD2,'haar');
CA1=round(CA1);
r=IDWT2(CA1,CH1,CV1,CD1,'haar');
r=round(r);
r=uint8(r);
figure
imshow(r)
r=double(r);
[CA1,CH1,CV1,CD1] = DWT2(r,'haar');
CA1=round(CA1);
CH1=round(CH1);
CV1=round(CV1);
CD1=round(CD1);
[CA2,CH2,CV2,CD2] = DWT2(CA1,'haar');
CA2=round(CA2);
CH2=round(CH2);
CV2=round(CV2);
CD2=round(CD2);
[CA3,CH3,CV3,CD3] = DWT2(CA2,'haar');
CA3=round(CA3);
CH3=round(CH3);
CV3=round(CV3);
CD3=round(CD3);
for i=1:RM
    for j=1:CN
        Range=[CH3(i,j),CV3(i,j),CD3(i,j)];
        [Rank CLoc]=sort(Range);
        NewRange=Rank(1):(Rank(3)-Rank(1))/(N-1):Rank(3);
        Diff1=min(abs(NewRange(2:2:N)-Rank(2)*ones(1,floor(N/2))));
        Diff2=min(abs(NewRange(1:2:N)-Rank(2)*ones(1,ceil(N/2))));
        if Diff1<Diff2
            wr(i,j)=0;
        else
            wr(i,j)=1;
        end
    end
end

cha=wr-w

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -