标签: wavelet-transform

如何将DWT用于LSB替代隐写术

在隐写术中,最低有效位(LSB)替换方法将秘密位嵌入来自覆盖介质的位的位置,例如图像像素.在一些方法中,采用图像的离散小波变换(DWT)并且将秘密比特嵌入DWT系数中,之后使用逆变换来重建隐秘图像.

但是,DWT产生浮点系数,对于LSB替换方法,需要整数值.我读过的大多数论文都使用2D Haar Wavelet,但他们的方法并不清楚.我已经看到变换是根据低通和高通滤波器(浮点变换)定义的,或者是取对值的和与差,或者平均值和平均值之差等.

更明确地,无论是正向变换还是反向变换(但不一定取决于所使用的公式),最终将出现浮点数.我不能将它们用于系数,因为替换不起作用,我不能将它们用于重建的像素,因为图像需要整数值来存储.

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

对于2D情况,1D变换分别应用于行和列,因此最终会在某处出现4除法.这可能导致具有浮动余数.00,.25,.50和.75的值.我只遇到过一篇解决这个问题的论文.其余的方法都很模糊,我很难复制它们.然而,DWT已经广泛用于图像隐写术.

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

steganography dwt haar-wavelet wavelet-transform

6
推荐指数
1
解决办法
1867
查看次数

scipy.signal.cwt()函数的"widths"参数单位

我对widths传递给scipy.signal.cwt()和扩展的参数感到困惑scipy.signal.find_peaks_cwt().一个以前的和非常有益的堆栈溢出问题(和指针文献)解释了我的大部分困惑了.这widths是一个比例数组,用于在卷积数据之前拉伸小波.

令我困惑的一点是,元素的单位widths什么?宽度为1意味着小波被拉伸为一个"索引"宽,其中索引是元素之间的距离data吗?起初我认为是这种情况,但是(a)宽度可以取非整数值,(b)cwt()结果可以根据宽度而变化.

这是一些代码,说明了我的困惑.为什么最后两行给出不同的结果?

#generating an arbitrary signal with overlapping gaussian peaks with various 
npeaks = 6
support = np.arange(0,1.01,0.01)
pkx = np.array([0.2, 0.3, 0.38, 0.55, 0.65]) #peak locations
pkfun = sum(stats.norm.pdf(support, loc=pkx[i], scale=0.03) for i in range(0,npeaks-1))

#finding peaks for two different setting of widths
pkindsOne = sig.find_peaks_cwt(pkfun, widths = np.arange(4,6), wavelet = sig.ricker)
pkindsTwo = sig.find_peaks_cwt(pkfun, widths = np.arange(4,6.4), wavelet = sig.ricker) …
Run Code Online (Sandbox Code Playgroud)

python scipy wavelet-transform

6
推荐指数
1
解决办法
3908
查看次数

如何使用小波变换对数据进行去噪

我想用小波变换对信号进行去噪,但不知何故去噪后的数据并没有显着变化

代码:

df = pd.read_csv('0311LalaStand5Min1.csv', low_memory=False)
columns = ['Fx','Fy','Fz','Mx','My','Mz']
selected_df = df[columns]
FPDatas = selected_df[:15000]

FPData = np.array(FPDatas).astype('float64')

wavelet = 'db4'

# Perform the wavelet decomposition
coeffs = pywt.wavedec2(FPData, wavelet)

# Threshold the coefficients (using hard thresholding)
threshold = 0.1# adjust this threshold to control the amount of noise removal
coeffs_thresh = [pywt.threshold(c, threshold, 'soft') for c in coeffs]

# Reconstruct the signal using the inverse wavelet transform
FPData_Decompos = pywt.waverec2(coeffs_thresh, wavelet)

plt.figure(figsize=(15,6))
    # plt.figure()
plt.plot(FPData[:,1],color='red')
plt.plot(FPData_Decompos[:,1], markerfacecolor='none',color='green')
plt.legend(['Real Data', …
Run Code Online (Sandbox Code Playgroud)

python wavelet-transform pywavelets

5
推荐指数
1
解决办法
2039
查看次数

使用 Scipy.signal (Python) 进行连续小波变换:cwt() 函数中的参数“宽度”是什么?(时间-频率)

我试图用离散时间信号绘制时频信号(采样步长= 0.001秒)。我使用 Python 和 Scipy.signal 库。我使用返回矩阵的函数 cwt(data, wavelet, widths) 与复数 morlet 小波(或 gabor 小波)进行连续小波变换。不幸的是,关于这种用途的文档并不多。我发现的最好的是: \n -对于 Matlab (我尝试找到相同的缩放时间结果),但我自然无法访问相同的功能,\n - 这解释了什么是连续小波变换,没有小波参数的详细信息。

\n\n

第一步:获取尺度平移信号。带着疑问,我直接将数组 \xe2\x80\x9cwidths\xe2\x80\x9d 与可能不同比例的数组关联起来。因为,如果参数宽度不缩放,我不知道参数宽度是什么。也许,你会告诉我 \xe2\x80\x9cit\xe2\x80\x99s 你当前小波\xe2\x80\x9d 的宽度!但是,即使现在,我也不确定链接宽度与scale\xe2\x80\xa6的关系在Scipy的Morlet文档中,链接似乎可以是:“s:缩放因子,从-s * 2 *窗口化pi 到 +s*2*pi”,所以,我认为 width = 4*pi*scale (宽度=窗口的宽度)。但是当我绘制小波时,尺度增加得越多,小波的视觉宽度就越减少......

\n\n

我的第二个问题是找到并绘制频率的等价物。在文献中,我找到了这个公式:Fa = Fc / (s*delta),其中Fa是最终频率,Fc是小波的中心频率(以Hz为单位),s是尺度,delta是采样周期。因此,对于比例(如果我找到与宽度的链接)和增量(= 0.001秒)来说是可以的,但是它\ xe2 \ x80 \ x99s与小波的中心频率更加复杂。在 scipy 文档中,我发现: \xe2\x80\x9c 这个小波 [morlet 小波] 的基频(以 Hz 为单位)由 f = 2*s*w*r / M 给出,其中 r 是采样率 [s 在这里缩放因子,窗口范围从 -s*2*pi 到 +s*2*pi。默认为 1;w 宽度;M 是小波的长度]。\xe2\x80\x9d 我认为 \xe2\x80\x99s 是中心频率,是吗? …

python scipy time-frequency wavelet-transform

4
推荐指数
1
解决办法
9715
查看次数

时间序列的小波重构

我正在尝试从Morlet的小波变换重建原始时间序列.我在R,包Rwave,功能cwt工作.该函数的结果是包含复数值的n*m(n =周期,m =时间)的矩阵.

为了重建信号,我使用了Torrence&Compo经典文本中的公式(11),但结果与原始信号无关.我特别关注小波变换的实部与尺度之间的划分,这一步骤完全扭曲了结果.另一方面,如果我只是在所有尺度上对实部进行求和,结果与原始时间序列非常相似,但是稍微宽一些值(原始系列范围〜[-0.2,0.5],重建的系列范围〜[-0.4,0.7]).

我想知道是否有人能说出一些实际的程序,公式或算法来重建原始的时间序列.我已经阅读过Torrence和Compo(1998),Farge(1992)和其他书籍的论文,这些都有不同的公式,但没有人真正帮助我.

r time-series wavelet-transform

3
推荐指数
1
解决办法
2255
查看次数

如何结合小波变换和频率滤波

我需要对 ECG 信号实施以下去噪:

  • 使用“db6”小波将离散小波变换为 9 个级别
  • 过滤 0-0.35Hz 范围内第 9 级的频率(不是细节系数)
  • 仅使用 3 到 9 级重建信号

我不知道如何在 Python (PyWavelets) 中执行第二步,因为我只能修改细节和近似系数,我不知道如何将它们与频率相关联。

我应该如何进行?

这是我的代码

    import pywt

    #DWT
    coeff = pywt.wavedec(data,'db6',level=9)

    #filter the 0-0.35Hz frequencies in the 9-th level?


    #reconstruct the signal
    y = pywt.waverec( coeff[:8]+ [None] * 2, 'db6' )
Run Code Online (Sandbox Code Playgroud)

python signal-processing frequency wavelet-transform

3
推荐指数
1
解决办法
3006
查看次数

用于最大重叠离散小波变换(MODWT)的Python包

我必须使用python从使用MODWT的论文中复制结果。我目前正在使用pywt,它只有平稳小波变换(SWT)。我研究了一下,似乎目前没有用于MODWT的软件包,而且我还发现很多人说SWT和MODWT是同一件事。但是使用MATLAB的MODWT和python的SWT的结果是不同的。python中是否有任何可直接用于执行MODWT的软件包?还是可以使用SWT在MODWT中获得结果?

wavelet wavelet-transform pywavelets

2
推荐指数
1
解决办法
2096
查看次数

在Python中使用小波变换的图像融合

如何使用小波变换融合2张图像。有几种可用的方法,例如主成分分析,高通滤波,IHS等。我想知道如何使用小波变换进行融合。我知道背后的理论,并且想知道如何在Python中实现它。

这是基于小波变换的图像融合的链接https://www.slideshare.net/paliwalumed/wavelet-based-image-fusion-33185100

python image-processing wavelet-transform

0
推荐指数
1
解决办法
2913
查看次数