📄 lfsrchengxu.m
字号:
tic
I11=imread('lena.bmp');
%I1=rgb2gray(I);
size_obj=size(I11); % size_obj为目标图像矩阵的大小
%figure(1),imshow(I1);
I1=I11(:); %二维矩阵转换为一维矩阵
I2=double(I1); %uint8类型转为double类型
a=size(I2); % a(1)为I2的长度
lfsrsqence=rndgenm(a(1)*8,[32,7,5,3,2,1,0]); %调用生成LFSR伪随机序列的子函数rndgenm
time_1=toc;
lfsrsqence1=round(lfsrsqence); %生成的伪随机序列数变为0-1序列lfsrsqence1
tic
lfsrsqence2=zeros(a); %a=size(I2) %预先定义lfsrsqence2的大小可以防止溢出
j=1;z=0;
for i=1:a(1)*8 %这段程序是将生成的01伪随机序列八位截断然后转
if(mod(i,8)~=0) %换为十进制数存入
z=z+2^(8-mod(i,8))*lfsrsqence1(i);
else(mod(i,8)==0)
lfsrsqence2(j)=z+lfsrsqence1(i);
j=j+1; z=0;
end
end
E=bitxor(I2,lfsrsqence2); %对目标图像I2和生成的lfsr伪随机序列按位异或
E1=reshape(E,size_obj);
E2=uint8(E1);
%figure(2),imshow(E2); %显示经过伪随机序列按位异或的图像
%利用线性插值的方法将经过异或的的图像隐藏在同样大小的一幅载体图像中
%线性插值的隐藏的算法
%for i=1:sizeF(1)
% for j=1:sizeF(2)
% E(i,j)=0.5*P(i,j)*(F(i,j)-O(i,j))+O(i,j)
% end
%end
%
O=imread('bird.bmp'); %读入载体图像
O1=rgb2gray(O);
%figure(3),imshow(O1);
O2=double(O1);
%伪随机序列变为二维系数矩阵
lfsrsqence_matrix=reshape(lfsrsqence(:,1:140*140), size_obj);
F=0.2*lfsrsqence_matrix.*(E1-O2)+O2; %线性插值表达式
F1=uint8(F);
%figure(4), imshow(F1);
subplot(2,2,1),imshow(I11),title('目标图像');
subplot(2,2,2),imshow(E2),title('异或后图像');
subplot(2,2,3),imshow(O1),title('载体图像');
subplot(2,2,4),imshow(F1),title('隐藏图像');
toc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -