图像隐写基于matlab区域性像素等值图像隐写含Matlab源码 2413期

Posted 海神之光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像隐写基于matlab区域性像素等值图像隐写含Matlab源码 2413期相关的知识,希望对你有一定的参考价值。

⛄一、DCT数字水印简介

1 游戏规则介绍
“连连看”是一款休闲益智类游戏, 它由几种图案随机排列组成, 每种图案都有若干偶数个, 只要将相同的两张图案用特定直线连在一起即可消除, 按这些规则操作直至全部图案消除为止。扩展此规则, 如图1所示, 如果n张相同图案可以用直线连接起来, 则可大大提高图案的消除效率。根据该思想, 如果将图像中相等灰度值的像素看作相同图案, 并利用相似的游戏规则, 则可以得出一种新的隐写算法。

2 算法原理
将原图像按3×3为一组分成若干像素组, 并将其编号为 (1) ~ (9) , 如图2所示。

现定义如下变量:

M: (1) (2) (3) (6) (9) 中像素值相同的最大个数;

N: (1) (4) (7) (8) (9) 中像素值相同的最大个数;

S:定义 (5) 为标志像素, 其值为Si;

密钥K:一串与嵌入信息相同比特数的随机数Ki, Ki=0或者Ki=1。

0或1像素组:根据M与N的关系确定该像素组的值, 当嵌入信息与像素组的值相等时, 标志像素Si不变, 相反, 标志像素加1或减1。

3 算法过程
3.1 嵌入过程

当LSB (Si) =Ki时, 若M≤N, 为1像素组。嵌入0时, 标志像素+1;嵌入1时, 标志像素不变。若M>N, 为0像素组。嵌入0时, 标志像素不变;嵌入1时, 标志像素-1。

当LSB (Si) ≠Ki时, 若M≤N, 为0像素组。嵌入0时, 标志像素不变;嵌入1时, 标志像素-1。若M>N, 为1像素组。嵌入0时, 标志像素+1;嵌入1时, 标志像素不变。

嵌入流程如图3所示, 以下用一个例子来说明算法过程, 该例子涵盖了算法所能遇到的各种情况。

图2 像素组编号

图3 嵌入流程
如, 图4为载体图像的一部分, 现要将一串秘密信息嵌入其中, 假如密钥K=011 011。

图4 图像像素值
对于第1个像素块, 如图5所示。

图5 第一个像素组
LSB (S1) =0, K1=0, 满足条件LSB (Si) =Ki;M=2, N=4, 满足条件M≤N, 为1像素组。

此时若嵌入比特0, 标志像素加1;相反, 若嵌入比特1, 标志像素不变, 如图6所示。

图6 从左至右分别为嵌入0和1的像素组
对于第2个像素块, 如图7所示。

图7 第2个像素组
LSB (S2) =0, K2=1, 满足条件LSB (Si) ≠Ki;M=2, N=4, 满足条件M≤N, 为0像素组。

此时若嵌入比特0, 标志像素不变;相反, 若嵌入比特1, 标志像素减1, 如图8所示。

图8 从左至右分别为嵌入0和1的像素组
对于第3个像素块, 如图9所示。

图9 第3个像素组
LSB (S3) =1, K3=1, 满足条件LSB (Si) =Ki;M=4, N=2, 满足条件M≥N, 为0像素组。

此时若嵌入比特0, 标志像素不变;相反, 若嵌入比特1, 标志像素减1, 如图10所示。

图1 0 从左至右分别为嵌入0和1的像素组
对于第4个像素块, 如图11所示。

LSB (S4) =1, K4=0, 满足条件LSB (Si) ≠Ki;M=3, N=2, 满足条件M≥N, 为1像素组。

此时若嵌入比特0, 标志像素加1;相反, 若嵌入比特1, 标志像素不变, 如图12所示。

图1 1 第4个像素组

图1 2 从左至右分别为嵌入0和1的像素组
3.2 提取过程
具体提取过程如下:若LSB=K, M>N, 提取0;M≤N, 提取1;若LSB≠K, M≤N, 提取0;M>N, 提取1。

提取算法比较简单, 以下以一个例子进行简要说明:

对于图6左边的像素组, K1=0, LSB (S1) =1, LSB (Si) ≠Ki;M=2, N=4, M≤N, 提取0。

对于图6右边的像素组, K1=0, LSB (S1) =0, LSB (Si) =Ki;M=2, N=4, M≤N, 提取1。

同理可以对其它图例提取信息, 提取流程如图13所示。

图1 3 信息提取流程

⛄二、部分源代码

clear all;
picture_sampledata = imread(‘Lena3.jpg’);
Res =isgray(picture_sampledata); % 判断是否为灰度图,若为0则不是灰度图
if Res == 0
X = rgb2gray(picture_sampledata);
else
X=picture_sampledata;
end
figure;
subplot(1,2,1);
imshow(X);
title(‘原图’);
hold on;
a= floor(size(X,1)/3);%取商
data=cell(a,a);
for m=1:a%将3*3块矩阵提取在data里
for mm=1:a
aa=1;
for n=(m-1)3+1:3m
for i=(mm-1)3+1:mm3
data1(aa)=X(n,i);
aa=aa+1;
end
end
data1=data1’;
data2=reshape(data1,3,3)‘;
datam,mm=data2;
end
end
for k=1:size(data,1)%①②③⑥⑨中像素值相同的最大个数,①④⑦⑧⑨中像素值相同的最大个数,S
for kk=1:size(data,2)
kkk=datak,kk;
kkkk=reshape(kkk’,1,9);
kkkkk=[kkkk(1,1:3) kkkk(1,6) kkkk(1,9)];
b = 1:max(kkkkk);
c = histc(kkkkk,b);
[max_num, max_index] = max©;
mmax_show(k,kk)=max_num;
ab=[kkkk(1,1) kkkk(1,4) kkkk(1,7:9)];
b1 = 1:max(ab);
c1 = histc(ab,b1);
[max_num, max_index] = max(c1);
nmax_show(k,kk)=max_num;
S(k,kk)=kkk(2,2);
end
end

⛄三、运行结果


⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]李兆同,张梦,何莹.基于区域性像素等值的图像隐写算法[J].软件导刊. 2017,16(08)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

以上是关于图像隐写基于matlab区域性像素等值图像隐写含Matlab源码 2413期的主要内容,如果未能解决你的问题,请参考以下文章

语音隐写基于 LSB语音隐藏matlab源码

图像隐写基于LSB+DCT实现数字水印嵌入提取带攻击测试matlab源码含GUI

图像隐写基于matlab图像内容自恢复水印含Matlab源码 2321期

图像隐写基于matlab图像内容自恢复水印含Matlab源码 2321期

图像隐写基于wow算法图像自适应隐写matlab源码

图像隐写基于高斯模型的JPEG图像隐写matlab源码