在隐写术中,最低有效位(LSB)替换方法将秘密位嵌入来自覆盖介质的位的位置,例如图像像素.在一些方法中,采用图像的离散小波变换(DWT)并且将秘密比特嵌入DWT系数中,之后使用逆变换来重建隐秘图像.
但是,DWT产生浮点系数,对于LSB替换方法,需要整数值.我读过的大多数论文都使用2D Haar Wavelet,但他们的方法并不清楚.我已经看到变换是根据低通和高通滤波器(浮点变换)定义的,或者是取对值的和与差,或者平均值和平均值之差等.
更明确地,无论是正向变换还是反向变换(但不一定取决于所使用的公式),最终将出现浮点数.我不能将它们用于系数,因为替换不起作用,我不能将它们用于重建的像素,因为图像需要整数值来存储.
例如,让我们考虑一对像素,A并B作为一维数组.低频系数由和,即s = A + B高频系数和差值定义,即d = A - B.然后我们可以用B = (s - d) / 2和重建原始像素A = s - B.然而,在任何与系数混合的位之后,s - d可能不再是偶数,并且浮点值将出现用于重建的像素.
对于2D情况,1D变换分别应用于行和列,因此最终会在某处出现4除法.这可能导致具有浮动余数.00,.25,.50和.75的值.我只遇到过一篇解决这个问题的论文.其余的方法都很模糊,我很难复制它们.然而,DWT已经广泛用于图像隐写术.
我的问题是,既然我读过的一些文献没有启发,那怎么可能呢?如何使用引入浮点值的变换,但整个隐写方法需要整数?
我对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) 我想用小波变换对信号进行去噪,但不知何故去噪后的数据并没有显着变化
代码:
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) 我试图用离散时间信号绘制时频信号(采样步长= 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 是中心频率,是吗? …
我正在尝试从Morlet的小波变换重建原始时间序列.我在R,包Rwave,功能cwt工作.该函数的结果是包含复数值的n*m(n =周期,m =时间)的矩阵.
为了重建信号,我使用了Torrence&Compo经典文本中的公式(11),但结果与原始信号无关.我特别关注小波变换的实部与尺度之间的划分,这一步骤完全扭曲了结果.另一方面,如果我只是在所有尺度上对实部进行求和,结果与原始时间序列非常相似,但是稍微宽一些值(原始系列范围〜[-0.2,0.5],重建的系列范围〜[-0.4,0.7]).
我想知道是否有人能说出一些实际的程序,公式或算法来重建原始的时间序列.我已经阅读过Torrence和Compo(1998),Farge(1992)和其他书籍的论文,这些都有不同的公式,但没有人真正帮助我.
我需要对 ECG 信号实施以下去噪:
我不知道如何在 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从使用MODWT的论文中复制结果。我目前正在使用pywt,它只有平稳小波变换(SWT)。我研究了一下,似乎目前没有用于MODWT的软件包,而且我还发现很多人说SWT和MODWT是同一件事。但是使用MATLAB的MODWT和python的SWT的结果是不同的。python中是否有任何可直接用于执行MODWT的软件包?还是可以使用SWT在MODWT中获得结果?
如何使用小波变换融合2张图像。有几种可用的方法,例如主成分分析,高通滤波,IHS等。我想知道如何使用小波变换进行融合。我知道背后的理论,并且想知道如何在Python中实现它。
这是基于小波变换的图像融合的链接https://www.slideshare.net/paliwalumed/wavelet-based-image-fusion-33185100
python ×5
pywavelets ×2
scipy ×2
dwt ×1
frequency ×1
haar-wavelet ×1
r ×1
time-series ×1
wavelet ×1