📄 imagehide_rgb_rgb.m
字号:
%%%%%%%%%%% 载体是RGB 秘密图像是灰度图像 %%%%%%%%%%%%%%%
% 一定要找到 置图像低4位是0之后的图像没有太大的变化
% 载体和秘密图像大小相同
% original_carrier:原始的载体图像
% original_secret:原始的秘密图像
% carrier:程序中用到的载体图像
% secret:程序中用到的秘密图像
original_carrier=imread('rgb1.jpg');
original_secret=imread('rgb2.jpg');
data=original_carrier;
carrier=original_carrier;
secret=original_secret;
[row,col,rgb]=size(carrier);
carrier1=carrier(:,:,1);
carrier2=carrier(:,:,2);
carrier3=carrier(:,:,3);
secret1=secret(:,:,1);
secret2=secret(:,:,2);
secret3=secret(:,:,3);
for i=1:row %置载体图像R层低4位是0
for j=1:col
carrier1(i,j)=bitand(carrier1(i,j),240);
end
end
for i=1:row %置载体图像G层低4位是0
for j=1:col
carrier2(i,j)=bitand(carrier2(i,j),240);
end
end
for i=1:row %置载体图像B层低4位是0
for j=1:col
carrier3(i,j)=bitand(carrier3(i,j),240);
end
end
for i=1:row %置秘密图像R层低4位是0
for j=1:col
secret1(i,j)=bitand(secret1(i,j),240);
end
end
for i=1:row %置秘密图像G层低4位是0
for j=1:col
secret2(i,j)=bitand(secret2(i,j),240);
end
end
for i=1:row %置秘密图像B层低4位是0
for j=1:col
secret3(i,j)=bitand(secret3(i,j),240);
end
end
subplot(3,3,1),imshow(carrier) %显示分层图像
subplot(3,3,2),imshow(carrier1)
subplot(3,3,3),imshow(carrier2)
subplot(3,3,4),imshow(carrier3)
subplot(3,3,5),imshow(secret)
subplot(3,3,6),imshow(secret1)
subplot(3,3,7),imshow(secret2)
subplot(3,3,8),imshow(secret3)
secret1=bitshift(secret1,-4); %把秘密图像高4位右移
secret2=bitshift(secret2,-4); %把秘密图像高4位右移
secret3=bitshift(secret3,-4); %把秘密图像高4位右移
for i=1:row %图像隐藏
for j=1:col
carrier1(i,j)=bitor(carrier1(i,j),secret1(i,j));
end
end
for i=1:row %图像隐藏
for j=1:col
carrier2(i,j)=bitor(carrier2(i,j),secret2(i,j));
end
end
for i=1:row %图像隐藏
for j=1:col
carrier3(i,j)=bitor(carrier3(i,j),secret3(i,j));
end
end
% 把分层图像写回 并保存
data(:,:,1)=carrier1;
data(:,:,2)=carrier2;
data(:,:,3)=carrier3;
subplot(3,3,9),imshow(data)
imwrite(data,'imagehide_rgb_rgb.bmp')
imwrite(data,'imagehide_rgb_rgb.jpg')
%%%%%%%%%%%% 提取图像 %%%%%%%%%%%
A=imread('imagehide_rgb_rgb.bmp'); %如果读入jpg图像 提取出的信息会失真
[row,col,rgb]=size(A);
A1=A(:,:,1);
A2=A(:,:,2);
A3=A(:,:,3);
for i=1:row
for j=1:col
A1(i,j)=bitand(A1(i,j),15);
end
end
for i=1:row
for j=1:col
A2(i,j)=bitand(A2(i,j),15);
end
end
for i=1:row
for j=1:col
A3(i,j)=bitand(A3(i,j),15);
end
end
secret1=bitshift(A1,4);
secret2=bitshift(A2,4);
secret3=bitshift(A3,4);
secret(:,:,1)=secret1;
secret(:,:,2)=secret2;
secret(:,:,3)=secret3;
%比较隐藏前后图像的区别
figure,imshow(original_carrier) %原始载体图像
figure,imshow(original_secret) %原始秘密图像
figure,imshow(data) %隐藏后的载体图像
figure,imshow(secret) %提取的秘密图像
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -