📄 bpcstiqumimixinxi128.m
字号:
%秘密信息图像的提取
clear,clc
L=128;
Cmax=112;aerf=0.45;
F=Cmax*aerf;
GeS=(L^2)/8+((L/8)/8)^2*8+1;
QPG=[1 0 1 0 1 0 1 0;
0 1 0 1 0 1 0 1;
1 0 1 0 1 0 1 0;
0 1 0 1 0 1 0 1;
1 0 1 0 1 0 1 0;
0 1 0 1 0 1 0 1;
1 0 1 0 1 0 1 0;
0 1 0 1 0 1 0 1];%棋盘格矩阵
Z=imread('BPCSairplane.bmp');
Z=double(Z);
Z0=wpm0(Z);Z1=wpm1(Z);Z2=wpm2(Z);Z3=wpm3(Z);Z4=wpm4(Z);
Z5=wpm5(Z);Z6=wpm6(Z);Z7=wpm7(Z);
TTT=[Z0;Z1;Z2;Z3;Z4;Z5;Z6;Z7];
[m,n]=size(TTT);
M=m/8;N=n/8;
t=1;
for i=1:M
if t>GeS
break;
end
for j=1:N
if t>GeS
break;
end
if fuzadu(TTT(1+(i-1)*8:i*8,1+(j-1)*8:j*8))>F %-------------%复杂度子程序
TT(1:8,1+(t-1)*8:t*8)=TTT(1+(i-1)*8:i*8,(1+(j-1)*8):j*8);
t=t+1;
end
end
end
%下面先将8行的列阵分成附加信息的8个位平面的8行列阵块和秘密信息8个位平面的8行列阵块
FUJIA=TT(1:8,1:8);EE=TT(1:8,9:33*8);TT=TT(1:8,33*8+1:GeS*8);
%%%%
AA=bitxor(FUJIA,QPG);
A=reshape(AA,1,64);
%将上述阵块TT7-TT0变换成原秘密信息图像的八个位平面,EE为位置信息
for i=1:32
if A(i)==1
EE(1:8,1+(i-1)*8:i*8)=bitxor( EE(1:8,1+(i-1)*8:i*8),QPG);
end
end
EE7=EE(1:8,1:4*8);EE6=EE(1:8,4*8+1:8*8);EE5=EE(1:8,8*8+1:12*8);EE4=EE(1:8,12*8+1:16*8);
EE3=EE(1:8,16*8+1:20*8);EE2=EE(1:8,20*8+1:24*8);EE1=EE(1:8,24*8+1:28*8);EE0=EE(1:8,28*8+1:32*8);
EE7=reshape(EE7,16,16);EE6=reshape(EE6,16,16);EE5=reshape(EE5,16,16);EE4=reshape(EE4,16,16);
EE3=reshape(EE3,16,16);EE2=reshape(EE2,16,16);EE1=reshape(EE1,16,16);EE0=reshape(EE0,16,16);
E7=EE7';E6=EE6';E5=EE5';E4=EE4';E3=EE3';E2=EE2';E1=EE1';E0=EE0';
%%%%%%
a=L;b=L;
c=a/8;d=b/8;
TT7=TT(1:8,1:a*d);TT6=TT(1:8,a*d+1:2*a*d);TT5=TT(1:8,2*a*d+1:3*a*d);
TT4=TT(1:8,3*a*d+1:4*a*d);TT3=TT(1:8,4*a*d+1:5*a*d);TT2=TT(1:8,5*a*d+1:6*a*d);
TT1=TT(1:8,6*a*d+1:7*a*d);TT0=TT(1:8,7*a*d+1:8*a*d);
%第七位平面
T71=TT7(1:8,1:a);T72=TT7(1:8,a+1:2*a);T73=TT7(1:8,2*a+1:3*a);
T74=TT7(1:8,3*a+1:4*a);T75=TT7(1:8,4*a+1:5*a);T76=TT7(1:8,5*a+1:6*a);
T77=TT7(1:8,6*a+1:7*a);T78=TT7(1:8,7*a+1:8*a);
T79=TT7(1:8,8*a+1:9*a);T710=TT7(1:8,9*a+1:10*a);T711=TT7(1:8,10*a+1:11*a);
T712=TT7(1:8,11*a+1:12*a);T713=TT7(1:8,12*a+1:13*a);T714=TT7(1:8,13*a+1:14*a);
T715=TT7(1:8,14*a+1:15*a);T716=TT7(1:8,15*a+1:16*a);
T7=[T71;T72;T73;T74;T75;T76;T77;T78;T79;T710;T711;T712;T713;T714;T715;T716];
for i=1:c
for j=1:d
if E7(i,j)==1
T7(1+(i-1)*8:i*8,1+(j-1)*8:j*8)=bitxor( T7(1+(i-1)*8:i*8,1+(j-1)*8:j*8),QPG);
end
end
end
%第六位平面
T61=TT6(1:8,1:a);T62=TT6(1:8,a+1:2*a);T63=TT6(1:8,2*a+1:3*a);
T64=TT6(1:8,3*a+1:4*a);T65=TT6(1:8,4*a+1:5*a);T66=TT6(1:8,5*a+1:6*a);
T67=TT6(1:8,6*a+1:7*a);T68=TT6(1:8,7*a+1:8*a);
T69=TT6(1:8,8*a+1:9*a);T610=TT6(1:8,9*a+1:10*a);T611=TT6(1:8,10*a+1:11*a);
T612=TT6(1:8,11*a+1:12*a);T613=TT6(1:8,12*a+1:13*a);T614=TT6(1:8,13*a+1:14*a);
T615=TT6(1:8,14*a+1:15*a);T616=TT6(1:8,15*a+1:16*a);
T6=[T61;T62;T63;T64;T65;T66;T67;T68;T69;T610;T611;T612;T613;T614;T615;T616];
for i=1:c
for j=1:d
if E6(i,j)==1
T6(1+(i-1)*8:i*8,1+(j-1)*8:j*8)=bitxor( T6(1+(i-1)*8:i*8,1+(j-1)*8:j*8),QPG);
end
end
end
%第五位平面
T51=TT5(1:8,1:a);T52=TT5(1:8,a+1:2*a);T53=TT5(1:8,2*a+1:3*a);
T54=TT5(1:8,3*a+1:4*a);T55=TT5(1:8,4*a+1:5*a);T56=TT5(1:8,5*a+1:6*a);
T57=TT5(1:8,6*a+1:7*a);T58=TT5(1:8,7*a+1:8*a);
T59=TT5(1:8,8*a+1:9*a);T510=TT5(1:8,9*a+1:10*a);T511=TT5(1:8,10*a+1:11*a);
T512=TT5(1:8,11*a+1:12*a);T513=TT5(1:8,12*a+1:13*a);T514=TT5(1:8,13*a+1:14*a);
T515=TT5(1:8,14*a+1:15*a);T516=TT5(1:8,15*a+1:16*a);
T5=[T51;T52;T53;T54;T55;T56;T57;T58;T59;T510;T511;T512;T513;T514;T515;T516];
for i=1:c
for j=1:d
if E5(i,j)==1
T5(1+(i-1)*8:i*8,1+(j-1)*8:j*8)=bitxor( T5(1+(i-1)*8:i*8,1+(j-1)*8:j*8),QPG);
end
end
end
%第四位平面
T41=TT4(1:8,1:a);T42=TT4(1:8,a+1:2*a);T43=TT4(1:8,2*a+1:3*a);
T44=TT4(1:8,3*a+1:4*a);T45=TT4(1:8,4*a+1:5*a);T46=TT4(1:8,5*a+1:6*a);
T47=TT4(1:8,6*a+1:7*a);T48=TT4(1:8,7*a+1:8*a);
T49=TT4(1:8,8*a+1:9*a);T410=TT4(1:8,9*a+1:10*a);T411=TT4(1:8,10*a+1:11*a);
T412=TT4(1:8,11*a+1:12*a);T413=TT4(1:8,12*a+1:13*a);T414=TT4(1:8,13*a+1:14*a);
T415=TT4(1:8,14*a+1:15*a);T416=TT4(1:8,15*a+1:16*a);
T4=[T41;T42;T43;T44;T45;T46;T47;T48;T49;T410;T411;T412;T413;T414;T415;T416];
for i=1:c
for j=1:d
if E4(i,j)==1
T4(1+(i-1)*8:i*8,1+(j-1)*8:j*8)=bitxor( T4(1+(i-1)*8:i*8,1+(j-1)*8:j*8),QPG);
end
end
end
%第三位平面
T31=TT3(1:8,1:a);T32=TT3(1:8,a+1:2*a);T33=TT3(1:8,2*a+1:3*a);
T34=TT3(1:8,3*a+1:4*a);T35=TT3(1:8,4*a+1:5*a);T36=TT3(1:8,5*a+1:6*a);
T37=TT3(1:8,6*a+1:7*a);T38=TT3(1:8,7*a+1:8*a);
T39=TT3(1:8,8*a+1:9*a);T310=TT3(1:8,9*a+1:10*a);T311=TT3(1:8,10*a+1:11*a);
T312=TT3(1:8,11*a+1:12*a);T313=TT3(1:8,12*a+1:13*a);T314=TT3(1:8,13*a+1:14*a);
T315=TT3(1:8,14*a+1:15*a);T316=TT3(1:8,15*a+1:16*a);
T3=[T31;T32;T33;T34;T35;T36;T37;T38;T39;T310;T311;T312;T313;T314;T315;T316];
for i=1:c
for j=1:d
if E3(i,j)==1
T3(1+(i-1)*8:i*8,1+(j-1)*8:j*8)=bitxor( T3(1+(i-1)*8:i*8,1+(j-1)*8:j*8),QPG);
end
end
end
%第二位平面
T21=TT2(1:8,1:a);T22=TT2(1:8,a+1:2*a);T23=TT2(1:8,2*a+1:3*a);
T24=TT2(1:8,3*a+1:4*a);T25=TT2(1:8,4*a+1:5*a);T26=TT2(1:8,5*a+1:6*a);
T27=TT2(1:8,6*a+1:7*a);T28=TT2(1:8,7*a+1:8*a);
T29=TT2(1:8,8*a+1:9*a);T210=TT2(1:8,9*a+1:10*a);T211=TT2(1:8,10*a+1:11*a);
T212=TT2(1:8,11*a+1:12*a);T213=TT2(1:8,12*a+1:13*a);T214=TT2(1:8,13*a+1:14*a);
T215=TT2(1:8,14*a+1:15*a);T216=TT2(1:8,15*a+1:16*a);
T2=[T21;T22;T23;T24;T25;T26;T27;T28;T29;T210;T211;T212;T213;T214;T215;T216];
for i=1:c
for j=1:d
if E2(i,j)==1
T2(1+(i-1)*8:i*8,1+(j-1)*8:j*8)=bitxor( T2(1+(i-1)*8:i*8,1+(j-1)*8:j*8),QPG);
end
end
end
%第一位平面
T11=TT1(1:8,1:a);T12=TT1(1:8,a+1:2*a);T13=TT1(1:8,2*a+1:3*a);
T14=TT1(1:8,3*a+1:4*a);T15=TT1(1:8,4*a+1:5*a);T16=TT1(1:8,5*a+1:6*a);
T17=TT1(1:8,6*a+1:7*a);T18=TT1(1:8,7*a+1:8*a);
T19=TT1(1:8,8*a+1:9*a);T110=TT1(1:8,9*a+1:10*a);T111=TT1(1:8,10*a+1:11*a);
T112=TT1(1:8,11*a+1:12*a);T113=TT1(1:8,12*a+1:13*a);T114=TT1(1:8,13*a+1:14*a);
T115=TT1(1:8,14*a+1:15*a);T116=TT1(1:8,15*a+1:16*a);
T1=[T11;T12;T13;T14;T15;T16;T17;T18;T19;T110;T111;T112;T113;T114;T115;T116];
for i=1:c
for j=1:d
if E1(i,j)==1
T1(1+(i-1)*8:i*8,1+(j-1)*8:j*8)=bitxor( T1(1+(i-1)*8:i*8,1+(j-1)*8:j*8),QPG);
end
end
end
%第零位平面
T01=TT0(1:8,1:a);T02=TT0(1:8,a+1:2*a);T03=TT0(1:8,2*a+1:3*a);
T04=TT0(1:8,3*a+1:4*a);T05=TT0(1:8,4*a+1:5*a);T06=TT0(1:8,5*a+1:6*a);
T07=TT0(1:8,6*a+1:7*a);T08=TT0(1:8,7*a+1:8*a);
T09=TT0(1:8,8*a+1:9*a);T010=TT0(1:8,9*a+1:10*a);T011=TT0(1:8,10*a+1:11*a);
T012=TT0(1:8,11*a+1:12*a);T013=TT0(1:8,12*a+1:13*a);T014=TT0(1:8,13*a+1:14*a);
T015=TT0(1:8,14*a+1:15*a);T016=TT0(1:8,15*a+1:16*a);
T0=[T01;T02;T03;T04;T05;T06;T07;T08;T09;T010;T011;T012;T013;T014;T015;T016];
for i=1:c
for j=1:d
if E0(i,j)==1
T0(1+(i-1)*8:i*8,1+(j-1)*8:j*8)=bitxor( T0(1+(i-1)*8:i*8,1+(j-1)*8:j*8),QPG);
end
end
end
for i=1:a
for j=1:b
T(i,j)=2^7*T7(i,j)+2^6*T6(i,j)+2^5*T5(i,j)+2^4*T4(i,j)+2^3*T3(i,j)+2^2*T2(i,j)+2^1*T1(i,j)+2^0*T0(i,j);
end
end
T=uint8(T);
figure
imshow(T)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -