小波变换在LSB替代隐写术中的应用

2024-06-28 21:37:24 发布

您现在位置:Python中文网/ 问答频道 /正文

在隐写术中,least significant bit (LSB) substitution方法将秘密比特嵌入到覆盖介质(例如,图像像素)的位中。在一些方法中,提取图像的Discrete Wavelet Transform(DWT),并将秘密比特嵌入到DWT系数中,然后利用逆变换来重构隐写图像。在

但是,DWT产生浮点系数,对于LSB替换方法,需要整数值。我读过的大多数论文都使用二维Haar小波,但是,他们并不清楚他们的方法。我见过用低通和高通滤波器(浮点变换)来定义转换,或者取对值的和和和差,或者平均值和平均差,等等

更明确地说,无论是在正向变换还是在逆变换中(但不一定都是这两种情况,具体取决于所用的公式),最终都会出现浮点数。我不能用它们来表示系数,因为替换不起作用,也不能用于重建像素,因为图像需要整数值来存储。在

例如,让我们考虑一对像素,A和{}作为1D数组。低频系数由和定义,即s = A + B,而高频系数由差分定义,即d = A - B。然后我们可以用B = (s - d) / 2A = s - B重建原始像素。然而,在对系数进行任何位旋转之后,s - d可能不再是偶数的,并且对于重建的像素将出现浮点值。在

对于2D的情况,1D变换分别应用于行和列,因此最终将在某处发生除以4的除法。这可能会产生浮点余数为.00、.25、.50和.75的值。我只遇到了解决这个问题的one paper。其他人在方法论上都很模糊,我很难复制它们。然而,小波变换在图像隐写中得到了广泛的应用。在

我的问题是,既然我读过的一些文献没有启发性,这怎么可能呢?如何使用一个引入浮点值的变换,而整个隐写方法需要整数?在


Tags: 方法图像定义bit情况整数像素秘密
1条回答
网友
1楼 · 发布于 2024-06-28 21:37:24

一个对我有效的解决方案是使用整数小波变换,有些人也称之为lifting scheme。对于Haar小波,我看到它的定义是:

s = floor((A + B) / 2)
d = A - B

反之亦然:

^{pr2}$

整个过程中的所有值都是整数。它起作用的原因是因为公式包含关于像素/系数的偶数部分和奇数部分的信息,因此没有因舍入而丢失信息。即使修改系数然后进行逆变换,重构的像素仍然是整数。在

Python中的示例实现:

import numpy as np

def _iwt(array):
    output = np.zeros_like(array)
    nx, ny = array.shape
    x = nx // 2
    for j in xrange(ny):
        output[0:x,j] = (array[0::2,j] + array[1::2,j])//2
        output[x:nx,j] = array[0::2,j] - array[1::2,j]
    return output

def _iiwt(array):
    output = np.zeros_like(array)
    nx, ny = array.shape
    x = nx // 2
    for j in xrange(ny):
        output[0::2,j] = array[0:x,j] + (array[x:nx,j] + 1)//2
        output[1::2,j] = output[0::2,j] - array[x:nx,j]
    return output

def iwt2(array):
    return _iwt(_iwt(array.astype(int)).T).T

def iiwt2(array):
    return _iiwt(_iiwt(array.astype(int).T).T)

有些语言已经为此目的内置了函数。例如,Matlab使用^{}^{}进行二维提升方案小波变换。在

els = {'p',[-0.125 0.125],0};
lshaarInt = liftwave('haar','int2int');
lsnewInt = addlift(lshaarInt,els);
[cAint,cHint,cVint,cDint] = lwt2(x,lsnewInt)    % x is your image
xRecInt = ilwt2(cAint,cHint,cVint,cDint,lsnewInt);

IWT用于图像隐写的文章示例是Raja, K.B. et. al (2008) Robust image adaptive steganography using integer wavelets.

相关问题 更多 >