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

📄 imagehide_rgb_rgb.m

📁 彩色图像隐藏在彩色图像中
💻 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 + -