gpt4 book ai didi

steganography - DWT 如何用于 LSB 替换隐写术

转载 作者:行者123 更新时间:2023-12-02 02:01:27 30 4
gpt4 key购买 nike

在隐写术中,least significant bit (LSB) substitution该方法将 secret 位嵌入到覆盖介质中的位的位置,例如图像像素。在一些方法中,Discrete Wavelet Transform获取图像的 DWT,并将 secret 位嵌入到 DWT 系数中,然后使用逆变换来重建隐写图像。

但是,DWT 生成浮点系数,并且对于 LSB 替换方法需要整数值。我读过的大多数论文都使用二维哈尔小波,但是,他们并不清楚他们的方法。我已经看到变换是根据低通滤波器和高通滤波器(浮点变换)定义的,或者采用对值的总和和差值,或者平均值和平均差值等。

更明确地说,无论是正向变换还是反向变换(但不一定同时进行,具体取决于所使用的公式),最终都会出现 float 。我无法将它们用于系数,因为替换不起作用,并且我无法将它们用于重建像素,因为图像需要整数值进行存储。

例如,让我们将一对像素 AB 视为一维数组。低频系数由和定义,即s = A + B,高频系数由差定义,即d = A - B。然后,我们可以使用 B = (s - d)/2 和 A = s - B 重建原始像素。然而,在对系数进行任何位调整之后,s - d 可能不再均匀,并且重建像素将出现浮点值。

对于 2D 情况,一维变换分别应用于行和列,因此最终会在某处发生除以 4 的情况。这可能会导致浮点余数为 0.00、0.25、0.50 和 0.75 的值。我只遇到过one paper这解决了这个问题。其余的方法论都非常模糊,我很难复制它们。然而,DWT 已广泛应用于图像隐写术。

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

最佳答案

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

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

对于逆:

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

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

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 使用 lwt2()ilwt2()用于二维提升方案小波变换。

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.

关于steganography - DWT 如何用于 LSB 替换隐写术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15802827/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com