IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> LSB信息隐藏算法实验内容(matlab) 嵌入1~3个位平面并提取 -> 正文阅读

[人工智能]LSB信息隐藏算法实验内容(matlab) 嵌入1~3个位平面并提取

作者:recommend-item-box type_blog clearfix

LSB信息隐藏算法实验内容(matlab)

1.将载体图片分成8个位平面,并显示。
2.制作水印图片,可以嵌入1个位平面的、2个位平面的、3个位平面的。
3.使用LSB信息隐藏算法,分别嵌入1bit/pixel、2bit/pixel、3bit/pixel,并显示伪装图像。
4.提取嵌入的秘密信息。

将载体图片分成八个位平面,并显示。

  1. 载体图片

在这里插入图片描述

  1. 相关代码

    %% 第一张 风车
    imgW = imread('7.bmp');
    imgW=imresize(imgW,0.5);
    imgWsize=size(imgW);
    %提取bitplane
    bitPlaneW=zeros(imgWsize(1),imgWsize(2),8);
    for i =1:8
    for ro=1:imgWsize(1)
        for co=1:imgWsize(2)
        bitPlaneW(ro,co,i)=bitget(imgW(ro,co), i);
        end        
    end    
    end
    % 绘制bitplane
    figure;
    for i =1:8
    subplot(2,4,i)
    imshow(uint8(255*bitPlaneW(:,:,i)))
    title(['Bitplane' num2str(i)])
    end
    
  2. 八位平面展示

在这里插入图片描述

制作水印图片,嵌入1个位平面、嵌入2个位平面、嵌入3个位平面

  1. 选择Lena图片作为想要隐藏的图片

在这里插入图片描述

  • 相关代码段

  • 分别读入载体照片和插入照片

    %% 第一张 摩天轮
    img = imread('7.bmp');
    img=imresize(img,0.5);
    imgsize=size(img);
    %提取bitplane比特平面
    bitPlane=zeros(imgsize(1),imgsize(2),8);
    for i =1:8
        for ro=1:imgsize(1)% ro: row图片行号,y
            for co=1:imgsize(2) %co: column图片,x
            bitPlane(ro,co,i)=bitget(img(ro,co), i);
            end        
        end    
    end
    % 绘制bitplane
    figure;
    for i =1:8
        subplot(2,4,i)
        imshow(uint8(255*bitPlane(:,:,i)))
        title(['Bitplane' num2str(i)])
    end
    %%  lena
    imgW = imread('9.bmp');
    imgW=imresize(imgW,0.5);
    imgWsize=size(imgW);
    [length,width,~]=size(imgW);
    %提取bitplane
    bitPlaneW=zeros(imgWsize(1),imgWsize(2),8);
    for i =1:8
        for ro=1:imgWsize(1)
            for co=1:imgWsize(2)
            bitPlaneW(ro,co,i)=bitget(imgW(ro,co), i);
            end        
        end    
    end
    % 绘制bitplane
    figure;
    for i =1:8
        subplot(2,4,i)
        imshow(uint8(255*bitPlaneW(:,:,i)))
        title(['Bitplane' num2str(i)])
    end
    
  • 构造新的照片

    • 嵌入1个位平面
    	%% 构造新的bitPlane
    	newbitPlane=bitPlane;
    	newbitPlane(:,:,1) = bitPlaneW(:,:,8);
    
    • 嵌入2个位平面
    %% 构造新的bitPlane
    newbitPlane=bitPlane;
    newbitPlane(:,:,2) = bitPlaneW(:,:,8);
    newbitPlane(:,:,1) = bitPlaneW(:,:,7);
    
    • 嵌入3个位平面
    %% 构造新的bitPlane
    newbitPlane=bitPlane;
    newbitPlane(:,:,3) = bitPlaneW(:,:,8);
    newbitPlane(:,:,2) = bitPlaneW(:,:,7);
    newbitPlane(:,:,1) = bitPlaneW(:,:,6);
    
  • 合成新图片及提取水印

    %% 产生新图片(含水印)
    newimg=zeros(256,256);
    for i =1:8
        newimg=newimg+newbitPlane(:,:,i)*2^(i-1);
    end
    newimg=uint8(newimg);
    figure;
    imshow(newimg),title('含水印的新图片');
    
    %% 效果展示
    %提取bitplane
    bitPlaneRec=zeros(imgsize(1),imgsize(2),8);
    for i =1:8
        for ro=1:imgsize(1)
            for co=1:imgsize(2)
            bitPlaneRec(ro,co,i)=bitget(newimg(ro,co), i);
            end        
        end    
    end
    % 绘制bitplane
    figure;
    for i =1:8
        subplot(2,4,i)
        imshow(uint8(255*bitPlaneRec(:,:,i)))
        title(['Bitplane' num2str(i)])
    end
    
    
  • 加水印的效果图

  • 嵌入1个位平面

    • 嵌入2个位平面

    • 嵌入3个位平面

提取嵌入的秘密信息

  1. 提取图片的信息
%% 水印提取过程
%提取bitplane
bitPlaneRec=zeros(imgsize(1),imgsize(2),8);
for i =1:8
    for ro=1:imgsize(1)
        for co=1:imgsize(2)
        bitPlaneRec(ro,co,i)=bitget(newimg(ro,co), i);
        end        
    end    
end
% 绘制bitplane
figure;
for i =1:8
    subplot(2,4,i)
    imshow(uint8(255*bitPlaneRec(:,:,i)))
    title(['Bitplane' num2str(i)])
end

% 复原水印图
newimgW=zeros(imgsize(1),imgsize(2));
for i = 1 % 两个位平面时i=1:2  / 3个位平面时 i=1:3
    newimgW=newimgW+bitPlaneRec(:,:,i)*2^(4+i);
end

figure;imshow(uint8(newimgW)),title('提取出的图片')
  • 从嵌入1个位平面图中提取图片

  • 从嵌入2个位平面图中提取图片

  • 从嵌入3个位平面图中提取图片

小结讨论

  • 了解了LSB信息隐藏算法的原理。通过图片的权重分配,使得权重较小的位置可以藏匿我们想要的信息

  • 对于低位来说:嵌入1个位平面时,受影响的值只有01;嵌入2个位平面时,受影响的值有04;嵌入3个位平面时,受影响的值也仅有011。这相对于常规图片的0255来说影响不大。

  • 而对于高位:嵌入1个位平面时,受影响的像素值就高达0127;嵌入2个位平面时,受影响的像素值达到了0190;嵌入3个位平面时,受影响的值更是涨到0~221。可以说具有举足轻重的地位。

  • 那么我们将嵌入照片的高位嵌入载体照片的地位,便可以保存嵌入照片的众多信息的同时对载体照片影响微乎其微。由此可以实现信息隐藏。
    平面时,受影响的值有04;嵌入3个位平面时,受影响的值也仅有011。这相对于常规图片的0~255来说影响不大。

  • 而对于高位:嵌入1个位平面时,受影响的像素值就高达0127;嵌入2个位平面时,受影响的像素值达到了0190;嵌入3个位平面时,受影响的值更是涨到0~221。可以说具有举足轻重的地位。

  • 那么我们将嵌入照片的高位嵌入载体照片的地位,便可以保存嵌入照片的众多信息的同时对载体照片影响微乎其微。由此可以实现信息隐藏。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-22 14:41:05  更:2021-09-22 14:42:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:42:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码