matlab实现GPC隐写算法,基于LSB信息隐藏算法的MATLAB实现

%将水印图像按最低位有效(LSB)方法嵌入到载体图像中,并把水印从载体图像中提取出来

%注:整个算法分为水印嵌入部分和水印提取部分,及hcf com down_sampled水印分析

% 程序代写&算法设计,联系qq:380238062,转载时请保留

clc %清屏

clear %清空变量

close all %关闭已打开图像

% 读入载体图像 并显示

cover_object=imread('orign.jpg');

if ndims(cover_object)==3 %如果是rbg图像,则转化为灰度图像

cover_object=rgb2gray(cover_object);

end

figure;imshow(cover_object); %显示

title('载体图像');

% 读入水印图像 并显示

message=imread('shuiyin.jpg');

if ndims(message)==3 %如果是rbg图像,则转化为灰度图像

message=rgb2gray(message);

end

[Mm,Nm]=size(message);

message=double(message);

message=round(message./256); %转化为bit信息流,以便隐写

message=uint8(message);

figure;imshow(256*message); %显示

title('待隐藏信息');

%调用yinxie函数实现信息隐写

watermarked_image=yinxie(cover_object,message);

figure;imshow(watermarked_image,[])

title('已嵌入隐写信息的图像') %显示

% 程序代写&算法设计,联系qq:380238062,转载时请保留

%调用tiqu函数实现信息提取

watermark=tiqu(watermarked_image,Mm,Nm);

figure;imshow(watermark,[])%显示提取图像

title('提取后信息')

function watermarked_image=yinxie(cover_object,message);

% 获取载体图像的大小

[Mc,Nc]=size(cover_object);

% 获取水印图像的大小

[Mm,Nm]=size(message);

length_message=Mm*Nm;%信息长度

message(Mc,Nc)=0;

watermarked_image=cover_object;

%每一比特秘密信息都用载体图像的一个像素负载,如果秘密比特与像素灰度

%值的最低位相同,则不作修改;否则,若原始灰度值为奇数,则减1,若为

%偶数,则加1

% 程序代写&算法设计,联系qq:380238062,转载时请保留

% mod(cover_object(ii,jj),2) 获取图像cover_object处像素值的最低位

for ii = 1:Mc

for jj =

1:Nc

if mod(cover_object(ii,jj),2)==message(ii,jj)%判断是否相等

continue; %若相等,不作修改

else %否则

if mod(cover_object(ii,jj),2)==0 %若为偶,则加1

watermarked_image(ii,jj)=cover_object(ii,jj)+1;

else %若为奇,则减1

watermarked_image(ii,jj)=cover_object(ii,jj)-1;

end

end

end

end

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值