假设我有一个信号,表示为实数数组 y = [1,2,0,4,5,6,7,90,5,6]
。我可以使用 Daubechies-4 系数 D4 = [0.482962, 0.836516, 0.224143, -0.129409]
,并应用小波变换来接收信号的高频和低频。因此,高频分量将这样计算:
high[v] = y[2*v]*D4[0] + y[2*v+1]*D4[1] + y[2*v+2]*D4[2] + y[2*v+3]*D4[3],
低频分量可以使用其他 D4 系数排列来计算。
问题是:如果 y
是复数数组怎么办?我是否只是通过复数相乘和相加来接收子带,或者获取幅度和相位是否正确,将它们视为实数,对它们进行小波变换,然后使用公式 real_part = abs * cos(phase)
恢复每个子带的复数数组和imaginary_part = abs * sin(phase)
?
最佳答案
为了处理复杂数据的情况,您正在查看 Complex Wavelet Transform 。它实际上是 DWT 的简单扩展。处理复杂数据的最常见方法是将实部和虚部视为两个单独的信号,并对每个分量分别执行 DWT。然后您将收到实部和虚部的分解结果。
这通常称为双树复小波变换。我从维基百科中提取的下图可以最好地描述这一点:
来源:Wikipedia
之所以称为“双树”,是因为有两个并行发生的 DWT 分解 - 一个用于实部,一个用于虚部。上图中,g0/h0
表示信号x
实部的低通和高通分量以及g1/h1
> 表示信号x
虚部的低通和高通分量。
将实部和虚部分解为各自的 DWT 分解后,您可以将它们组合起来以获得幅度和/或相位,然后继续下一步或执行您想要对它们执行的任何操作。
关于其正确性的数学证明超出了我们讨论的范围,但如果您想了解这是如何得出的,我建议您引用 Kingsbury 于 1997 年发表的规范论文< em>使用复杂小波进行图像处理 - http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=835E60EAF8B1BE4DB34C77FEE9BBBD56?doi=10.1.1.55.3189&rep=rep1&type=pdf 。密切关注使用 CWT 对图像进行噪声过滤 - 这可能就是您正在寻找的内容。
关于image-processing - 复数数组的离散小波变换(Daubechies 小波),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32359901/