标签: wavelet

使用Python库的小波图

我知道SciPy在scipy.signal.wavelets中有一些用于小波的信号处理工具,并且可以使用Matplotlib绘制图表,但似乎我无法正确使用它.我曾尝试在线性空间上绘制Daubechies小波,但这不是我想要的.一般来说,我对小波和数学非常不熟练.:)

python matplotlib scipy wavelet pywt

7
推荐指数
1
解决办法
9389
查看次数

N维的小波变换

我偶然发现了这个令人惊讶的反应,我已经idwt2多次应用MATLAB来自己理解它.但是,我无法使用与RGB图像一起使用相同的方法.所以,我有3个问题.

  1. 如何将代码应用于RGB图像,只有输出中显示的变换图像以及沿行和列的高频和低频分量,是否可以将所有组件的融合视为单个图像?我知道我必须把猫操作员,但我不明白如何去做.

  2. 其次,我也得到了一个迷宫般的形象!我很困惑,因为我似乎无法遵循原因.我还在声明如何生成此图像的语句中附加了相同的代码.

    3. db1函数签名中的术语含义是什么dwt

码:

    load woman;             % Load image data
%startImage=imread('pic_rgb.jpg');  % IF I WANT TO WORK WITH RGB IMAGE
    nLevel = 3;             % Number of decompositions
    nColors = size(map,1);  % Number of colors in colormap
    cA = cell(1,nLevel);    % Approximation coefficients
    cH = cell(1,nLevel);    % Horizontal detail coefficients
    cV = cell(1,nLevel);    % Vertical detail coefficients
    cD = cell(1,nLevel);    % Diagonal detail coefficients
    startImage = X;
    for iLevel = 1:nLevel,
      [cA{iLevel},cH{iLevel},cV{iLevel},cD{iLevel}] …
Run Code Online (Sandbox Code Playgroud)

matlab image-processing wavelet

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

C/C++小波库,非GPL

理想情况下,我想要找到的是一个简单,直接的多个小波类别接口,如GSL,但它有一个许可证,允许我在专有软件中使用它.这里最佳答案列出了10个小波库,但是除了一个之外的所有库都是根据GPL许可的,并且那个看起来不是重量级的小波库,小波计算包含在更大的图像处理功能中(我不做).无论如何,我想有更多的选择.

我也发现看起来很酷,但它假设有一个具有cuda功能的GPU,我无法想象.

c c++ algorithm wavelet haar-wavelet

7
推荐指数
1
解决办法
1119
查看次数

逆小波变换[/ xpost信号处理]

主要问题:如何scipy.signal.cwt()反转功能.

我已经看到Matlab有一个逆连续小波变换函数,它将通过输入小波变换返回数据的原始形式,尽管你可以过滤掉你不想要的切片.

MATALAB逆cwt函数

由于scipy似乎没有相同的功能,我一直试图弄清楚如何以相同的形式恢复数据,同时消除噪音和背景.我该怎么做呢?我尝试将其平方以消除负值,但这给了我很大的价值而不是正确.

这是我一直在尝试的:

# Compute the wavelet transform
widths = range(1,11) 
cwtmatr = signal.cwt(xy['y'], signal.ricker, widths)

# Maybe we multiple by the original data? and square?
WT_to_original_data = (xy['y'] * cwtmatr)**2
Run Code Online (Sandbox Code Playgroud)

这是一个完全可编辑的短脚本,向您展示我想要获得的数据类型以及我拥有的数据等:

import numpy as np
from scipy import signal
import matplotlib.pyplot as plt

# Make some random data with peaks and noise
def make_peaks(x):
    bkg_peaks = np.array(np.zeros(len(x)))
    desired_peaks = np.array(np.zeros(len(x)))
    # Make peaks which contain the data desired
    # (Mid range/frequency peaks)
    for i in …
Run Code Online (Sandbox Code Playgroud)

python signal-processing wavelet

7
推荐指数
1
解决办法
2931
查看次数

具有提升的离散小波变换LeGal 5/3(负值,可视化,LH HL混淆)

我目前正在深入研究Wavelets并对某些事情感到有些困惑.

首先,这不是功课.它仅用于娱乐编码.

为了更好地理解,我在C中实现了LeGal 5/3小波的提升方案.据我所知,它似乎有效.我可以反转它并正确再现原始图像.在伪代码中,我的前进dwt看起来像这样:

// deinterleave splits the low band from the high band 
// (e.g. 1 0 3 0 6 0 8 1 11 becomes 1 3 6 8 11 | 0 0 0 1)

for each row in image:
     dwt1d(row)
     deinterleave(row)
for each col in image:
     dwt1d(col)
     deinterleave(col)
Run Code Online (Sandbox Code Playgroud)

但我很挣扎.

  1. 当应用dwt时,我得到了我的变换图像,但值超出了范围[0 - 255].因此我将它们存放在短裤中.有些是负面的,有些是非常大的.现在我如何显示它们以获得如下所示的那些漂亮的图像:(http://www.whydomath.org/node/wavlets/images/Largetoplevelwt.gif)?如果我使用imshow(image,[])在Matlab中显示我的图像,那么我的输出如下所示:http://i.imgur.com/dNaYwEE.jpg.那么,我是否必须对子频段进行一些转换?如果是,有人可以指出我的解决方案或告诉我该怎么做?

  2. 在文献中,我有时看到子带是这样排序的:[LL LH; HL HH],有时也像这样:[LL HL; LH HH].后者,我看到的主要是当论文是关于JPEG2000时,也是我的算法产生的.但是在Matlab中,当使用lwt2函数时,它返回前一个布局.当我将输出与Matlab的输出进行比较时,我也看到了这一点.似乎LH和HL混在一起.怎么可能?有关系吗?是否必须使用提升而不是卷积来做某事?

  3. 如果先行然后是列,反之亦然,这实际上是否重要?我在切换订单时看到输出没有区别.唯一不同的是LH变为HL而HL变为LH.但是,这并不能解决我的第二个问题,因为输出是相同的.我猜它只是符号.那重要吗?我看到他们在那里做文章和他们做排队的其他人.两者都与JPEG2000有关.

非常感谢.如果有人能对我的问题有所了解,那么我将非常感激.

亲切的问候,马库斯

c matlab video-encoding jpeg2000 wavelet

7
推荐指数
1
解决办法
1021
查看次数

改进MATLAB矩阵构造代码:或者,为初学者编写代码矢量化

我写了一个程序,以构建一个3波段小波变换矩阵的一部分.但是,考虑到矩阵的大小为3 ^ 9 X 3 ^ 10,MATLAB完成构建需要一段时间.因此,我想知道是否有办法改进我用来使其运行得更快的代码.我在运行代码时使用n = 10.

B=zeros(3^(n-1),3^n);
v=[-0.117377016134830 0.54433105395181 -0.0187057473531300 -0.699119564792890 -0.136082763487960 0.426954037816980 ];

for j=1:3^(n-1)-1 
    for k=1:3^n;
        if k>6+3*(j-1) || k<=3*(j-1)
            B(j,k)=0;
        else 
            B(j,k)=v(k-3*(j-1));
        end                
    end
end
j=3^(n-1);
    for k=1:3^n
        if k<=3
            B(j,k)=v(k+3);
        elseif k<=3^n-3
            B(j,k)=0;
        else 
            B(j,k)=v(k-3*(j-1));
        end
    end

W=B;
Run Code Online (Sandbox Code Playgroud)

matlab matrix vectorization wavelet

6
推荐指数
2
解决办法
839
查看次数

我在哪里可以看到我可以传递给scipy.signal.cwt的内置小波函数列表?

scipy.signal.cwt的文件:

scipy.signal.cwt(数据,小波,宽度)

wavelet:函数小波函数,应该有2个参数.第一个参数是返回的向量将具有的点数(len(小波(宽度,长度))==长度).第二个是宽度参数,定义小波的大小(例如高斯的标准偏差).请参阅满足这些要求的ricker.小波:函数小波函数,它应该带有2个参数.

除此之外scipy.signal.ricket,我可以传递给scipy.signal.cwt的其他内置小波函数是什么?

我在scipy/scipy/signal/wavelets.py中看到

__all__ = ['daub', 'qmf', 'cascade', 'morlet', 'ricker', 'cwt']
Run Code Online (Sandbox Code Playgroud)

并且查看每个小波函数的参数,ricket似乎只能使用scipy.signal.cwt(data, wavelet, widths)(因为只ricker需要2个参数).

python signal-processing scipy wavelet

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

python中连续小波变换图(scaleogram)中的频率轴

我有一个EEG信号,我有兴趣在时域和频域分析它.我已经使用过scipy.signal.spectrogram函数,但我认为使用小波可以产生更好的特征提取结果.我尝试在人工信号上运行连续小波变换,我创建如下:

fs = 128.0
sampling_period = 1/fs
t = np.linspace(0, 2, 2*fs)
x = chirp(t,10,2,40,'quadratic')

coef, freqs = pywt.cwt(x, np.arange(1,50),'morl', 
sampling_period=sampling_period)
Run Code Online (Sandbox Code Playgroud)

然后我绘制了coef矩阵:

plt.matshow(coef)
plt.show()
Run Code Online (Sandbox Code Playgroud)

以上代码的结果

我的问题是如何调整比例和时间轴?

python signal-processing wavelet pywt

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

计算FFT时的信号长度

我想问一些与我的最后一个问题有关的问题,所以我不想在另一个帖子中发帖.我的问题包含一个代码,因此我不能将其作为评论发布.所以我必须将我的旧问题编辑成一个新问题.请看看并帮忙.谢谢.

我是FFT和DSP的新手,我想问你一些关于在Matlab中计算FFT的问题.以下代码来自Matlab帮助,我刚刚删除了噪音.

  1. 我可以选择与NFFT不同的信号L的长度吗?

  2. 我不确定我是否正确使用了窗口.但是当我使用窗口(以下代码中的hanning)时,我无法获得幅度的确切值?

  3. 当L和NFFT得到不同的值时,振幅值也不同.如何获得输入信号幅度的精确值?(在下面的代码中,我使用一个已知的信号来检查代码是否正常工作.但是如果我从传感器获得信号并且我不知道它的振幅,我该如何检查?)

我非常感谢你,期待收到你的来信:)

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 512;                     % Length of signal
NFFT=1024;                   % number of fft points
t = (0:L-1)*T;                % Time vector
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);    input signal
X = fft(hann(L).*x', NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
plot(f,2*abs(X(1:NFFT/2+1)))     % Plot single-sided amplitude spectrum.
Run Code Online (Sandbox Code Playgroud)

matlab signal-processing fft wavelet

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

为什么pywavelet Wavelet()不接受所有内置小波?

知道为什么pywt.Wavelet()会给某些内置小波产生错误吗?有一个基本的(数学)原因吗?

pywt.Wavelet(i)
Run Code Online (Sandbox Code Playgroud)

退出

ValueError: Invalid wavelet name.
Run Code Online (Sandbox Code Playgroud)

对于i =

'cgau1', 'cgau2', 'cgau3', 'cgau4', 'cgau5', 'cgau6', 'cgau7'
'cgau8', 'cmor', 'fbsp', 'gaus1', 'gaus2', 'gaus3', 'gaus4', 'gaus5'
'gaus6', 'gaus7', 'gaus8', 'mexh', 'morl'
Run Code Online (Sandbox Code Playgroud)

来自pywavelet的文档

class pywt.Wavelet(name[, filter_bank=None])
Run Code Online (Sandbox Code Playgroud)

描述由指定的小波名称标识的小波的属性.为了使用内置小波,name参数必须是pywt.wavelist()列表中的有效小波名称.

wavelet pywavelets

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