RS(Regular Singular)隐写分析及实现

本文深入探讨了RS隐写分析技术的实现过程,包括翻转函数、平滑度函数及掩码算子的概念。通过具体步骤,如像素分组、计算相关性、图像最低位取反等,展示了如何估计隐写率,并提供了两种不同掩码算子和平滑度计算方法的代码示例。

上篇博客介绍了LSB(最低有效位)算法。
这篇针对LSB算法介绍RS隐写分析的实现。

先介绍几个概念:
翻转函数为:
在这里插入图片描述
平滑度函数为:在这里插入图片描述在这里插入图片描述
掩码算子M为:
在这里插入图片描述
掩码算子可以取随机0,1但是一定要各占50%概率。
在这里插入图片描述
RS分析分为几个步骤:
1.对像素分组
以8位灰度图像为例,图像的像素取值范围为集合𝑃
P={0,……,255}
在这里插入图片描述
分组可以看情况取,不一定非要是4。
2.对分组后的数据计算相关性(用平滑度函数),分别进行F1与F-1翻转后再计算相关性,进行对比得出RM,SM,R−M,S−MR_{M},S_{M},R_{-M},S_{-M}RM,SM,RM,SM的数值。

3.对图像的每个像素最低位取反,同样进行第二步操作。得出另外一组RM,SM,R−M,S−MR_{M},S_{M},R_{-M},S_{-M}RM,SM,RM,SM
设隐写率为p,第三步算出的RM,SM,R−M,S−MR_{M},S_{M},R_{-M},S_{-M}RM,SM,RM,SM为隐写率(1−p2)(1-\frac{p}{2})(12p)情况下的,记为RM(1−p2)R_{M}(1-\frac{p}{2})RM(12p)

4.解下面方程,取其中较小的数为解xxx,则隐写率估计为p=xx−0.5p=\frac{x}{x-0.5}p=x0.5x
在这里插入图片描述判断是否经过LSB隐写:
在这里插入图片描述
如果经过LSB隐写则对图片进行F1翻转与进行F-1翻转会对图片平滑度造成不同的影响,进而导致RM,SM,R−M,S−MR_{M},S_{M},R_{-M},S_{-M}RM,SM,RM,SM参数的不对称性,可以明显看出经过隐写。
通过F1隐写相当于在最低位增加了噪声,加水印时也相当于增加了最低位的噪声,但是F1变换引入噪声对像素的影响最多为1,原图单独引入F-1变换引入噪声对像素的影响同样最多为1。
但是,引入F-1变换时,如果加了水印的话相当于部分像素先进行了F1变换后进行了F-1变换将噪声引入像素的影响可以达到2。

对于上文LSB算法提到的第一种方法比第二种更具有RS分析的隐蔽性,可以直观理解为原图与水印图都具有是图片具有像素上的平滑性,直接二值化嵌入的话会将水印图的像素平滑性引入加水印后的图片,这样的话导致通过平滑度计算来分析隐写率较为困难。(也不是说第一种好,第一种也有缺点,比如存储二值化图片数据、直接提取最后一位信息直接就暴露了)

下面给两个代码:一种算子是随机取0,1,一种是0,1间隔。一种平滑度计算是Z字型顺序计算,一种是一行一行的计算。

# -*- coding: utf-8 -*-
"""
Created on Wed May 13 13:15:42 2020

@author: MYM
"""
import matplotlib.pyplot as plt
import matplotlib.image as pmg
import numpy as np
import random  

def rgb2gray(rgb):

    r, g, b = rgb[:,:,0], rgb[:,:,1], rgb[:,:,2]
    gray = 0.2989 * r + 0.5870 * g + 0.1140 * b

    return gray
def Fp(picture,flag=0):#单个元素的翻转 输入参数为:元素,翻转标签
    if flag==1:
        if picture%2==0:
            picture= picture+1
        else:
            picture= picture-1
    elif flag==-1:
        if picture%2==0:
            picture=picture-1
        else:
            picture=picture+1
    return picture
def Fp_block(block_ori,wei,flag=0):#块翻转,输入参数为:数据块,维度,翻转标签
    block=block_ori.copy()
    if wei==2:
        if flag==1:
            block[0,0]=Fp(block[0,0],1)
            block[0,1]=</
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值