二值图像信息隐藏

来源:互联网 发布:java 苹果内购 编辑:程序博客网 时间:2024/05/29 11:16

介绍

二值图像又称为黑白图像,一般用1或0表示色或白色素点,利用二值图像信息隐藏的方法主要是根据二值图像中白色像素数量的比较来隐藏信息

理论描述

二值图像信息隐藏的方法是把一个二值图像分成一系列矩形图像区域B,某个图像区域B中黑色像素的个数大于一半,则表示嵌入0,如果白色像素的个数大于一半,则表示嵌入1,但是当需要嵌入的比特与所选区域的黑白像素的比例不一致,为了达到与像素关系,刚需要修改一些像素的color.

此方法的缺点是没有明确界定哪些像素可以修改以便于隐藏秘密信息,二值图像中某些像素的修改可能会引起二值图像视觉效果上的较大变化,相应的水印嵌入算法可能在较大程度上破坏图像质量。

参考代码

clc;clear all;msgfid = fopen('hidden.txt','r');[msg, count] = fread(msgfid);fclose(msgfid);msg = str2bit(msg);count =count*8;[fn,pn] = uigetfile({'*.bmp','bmpfile(*.bmp)';},'chose file');io =reamd(strcat(pn,fn));watermarklen = count;[row col] =size(io);l1=floor(row/watermarklen);l2=floor(col/watermarklen);pixelcount = l1*l2;percent = ceil(pixelcount/2);iw =io;ioblack(1,watermarklen)=0;iowhite(1,watermarklen)=0;n =1;while n<=watermarklen    for i =l1*(n-1)+1:l1*n        for j =l2*(n-1)+1:l2*n            if io(i,j) ==0                ioblack(1,n) =ioblack(1,n)+1;            else                iowhite(1,n) =iowhite(1,n)+1;            end        end    end    n =n+1;endn =1;while n <=watermarklen    if msg(n,1) ==1;        if ioblack(1,n)>=perecent;            modcount(1,n)=ioblack(1,n)-percent+1;            k =1;            for i =l1*(n-1)+1:l1*n                for j =l2*(n-1)+1:l2*n                    if(iw(i,j) ==0&&k<=modcount(1,n))                        iw(i,j) =1;                        k =k+1;                    end                end            end        end    else        if iowhite(1,n) >=percent;            modcount(1,n) = iowhite(1,n)-percent +1;            k =1;            for i =l1*(n-1)+1:l1*n                for j =l2*(n-1)+1:l2*n                     if(iw(i,j) ==1&&k<=modcount(1,n))                        iw(i,j) =1;                        k =k+1;                     end                end            end        end    end    n =n+1;    end        n =1;    iwblack(i,watermarklen) =0;    iwwhite(i,watermarklen) =0;    while n<=watermarklen         for i =l1*(n-1)+1:l1*n             for j =l2*(n-1)+1:l2*n                 if(iw(i,j) ==0)                     iwblack(1,n)=iwblack(1,n)+1;                 else                     iwwhite(1,n)=iwwhite(1,n)+1;                 end             end         end         n=n+1;    end        figure;    imshow('hunter.bmp');    imwrite(iw,'huntermarked.bmp');    figure;    imshow('huntermarked.bmp');


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

0 0