LSB图像信息隐藏

介绍

本节对了解信息隐藏中最常用的LSB算法特点和原理,设计并实现一种基于图像的LSB隐藏算法。

原理描述

替换技术就是利用人的感观系统对特定的随机noise不敏感原理,通过使用秘密信息比特替换随机noise,从而实现信息隐藏。图像高位平面对图像感官质量起主要作用,去除图像最低几个位平面并不会造成画面质量的明显下降。利用这个原理可用水印信息替代载体图像位平面以实现信息嵌入。

本算法选用最低位平面来嵌入水印信息。最低位平面对图像的视觉效果影响最轻微,但很容易受noise影响和攻击,可采用冗余嵌入的方式来增强robustness加以解决,即在一个区域中嵌入相同的信息,提取时根据此区域中的所有像素判断。在此,贴出隐藏算法和提取算法源代码,作为参考。

参考代码

隐藏算法hisd_lsb:

function o = hide_lsb(block,data,I)

si =size(I);
lend =length(data);

%image sparce of N*M 
N =floor(si(2)/block(2));
M =min(floor(si(1)/block(1)),ceil(lend/N));
o =I;

for i =0:M-1
    rst =i*block(1)+1;
    red =(i+1)*block(1);
    
    for j =0:N-1
        idx= i*N+j+1;
        if(idx>lend)
            break;
        end;
        bit = data(idx);
        cst =j*block(2)+1;
        ced = (j+1)*block(2);
        o(rst:red,cst:ced) =bitset(o(rst:red,cst:ced),1,bit);
    end;
end;

提取算法dh_lsb

function out = dh_lsb(block,I)

si =size(I);

%image sparce of N*M 
N =floor(si(2)/block(2));
M =floor(si(1)/block(1));
out = [];

thr = ceil((block(1)*block(2)+1)/2);
idx =0;

for i = 0:M-1
    rst = i*block(1)+1;
    red =(i+1)*block(1);
    for j =0:N-1
        idx = i*N+j+1
        cst = j*block(2)+1;
        ced = (j+1)*block(2);
        
        tmp = sum(sum(bitget(I(rst:red,cst:ced),1)));
        if(tmp>=thr)
            out(idx) =1;
        else
            out(idx) =0;
        end;
    end;
end;


关于Computer Vision&Image Engineering更多讨论与交流,敬请关注本博客和新浪微博songzi_tea.

LSB图像信息隐藏

上一篇:linux-0.11调试教程,filetutils的版本号


下一篇:VC下fopen如何支持中文