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

📄 opa.m

📁 opa是一种很好的基于调色板的密写技术。
💻 M
字号:
clear all
key=input('请输入密钥:   ');
[X,map]=imread('1.gif','gif');
figure;imshow(X,map)
title('原图像')
[a b]=size(map);
[m1 n]=size(X);
for i=1:a
    for j=1:a
        d(i,j)=sqrt((map(i,1)-map(j,1))^2+(map(i,2)-map(j,2))^2+(map(i,3)-map(j,3))^2);
    end
end
e=d';
e=sort(e);     
e=e';
for i=1:a
    for j=1:a
        if e(i,2)==d(i,j);
           k(i)=j;
        end
    end
end
c=zeros(1,256);
P=zeros(1,256);
for i=1:a
    findm=find(c(1,:)==0);
    if size(findm,2)==0  
        continue;
    end
    m=findm(1,1); 
    mi=find(c(1,:)==i);
    mki=find(c(1,:)==k(i));
    if size(mi,2)==0 & size(mki,2)==0
       c(m)=i;c(m+1)=k(i);
       P(i)=0;P(k(i))=1;
    elseif size(mi,2)==0 & size(mki,2)~=0
       c(m)=i;
       P(i)=1-P(k(i));
    elseif size(mi,2)~=0 & size(mki,2)==0
       c(m)=k(i);
       P(k(i))=1-P(i);
    end
end
f=fopen('secretinformation.txt','r'); 
A=fread(f); 
A
[e f]=size(A); 
if e*8>m*n
   disp('嵌入信息量过大,请重新选择嵌入信息');
end
B=A';
E=zeros(1,8*e);
i=8*e;
i
for j=1:e
    for t=1:8
        C(t)=bitget(B(j),t);
        D(i)=C(t);
        i=i-1;
    end
end
x=zeros(1,e);
x(1)=key;
for i=1:8*e-1
    x(i+1)=4*x(i)-4*x(i)^2;   
end
q=sort(x);                    
t=1;
for i=1:8*e
    for j=1:8*e
       if q(i)==x(j);
          r(t)=j;
          t=t+1;
       end   
    end
end              
for i=1:8*e
    E(i)=D(r(i));
end
X=reshape(X,1,m1*n);
for i=1:8*e
    if E(i)~=P(X(i))
        X(i)=k(X(i));
    end
end
X=reshape(X,m1,n);
imwrite(X,map,'嵌入秘密信息的b.TIFF','TIFF');
figure;imshow(X,map)
title('嵌入秘密信息后的图像')

⌨️ 快捷键说明

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