二维小波变换和多重分形

时间:2015-05-05 08:46:19

标签: matlab fractals wavelet

我正在开发一个使用2D小波变换的Matlab项目。我正在研究小波变换模数Maxima方法(WTMM)。我使用Matlab小波工具箱。我对wavelets和WTMM方法有一些疑问: - 我使用2D离散小波变换(dwt2和wavedec2)但我真的不明白dwt2输出的作用近似/垂直/水平/对角线。我看到它们是低通和高通滤波器(https://www.clear.rice.edu/elec301/Projects02/artSpy/dwt.html)的结果,但是我应该使用哪个输出来查找图像上的局部最大值?

[A,H,V,D] = dwt2(X,'wname')
  • 我在项目中也使用了多重分形式。为了绘制比例函数,我必须首先绘制分区函数(根据本文http://www.scholarpedia.org/article/Wavelet-based_multifractal_analysis,在“WTMM方法”部分)。但是我不知道如何正确地绘制这个;在这里我的代码:

     [A,H,D,V] = dwt2(im,'haar');         
     im_max = imregionalmax(abs(A)); % Modulus Maxima of the wavelet 
                                     Transform, using the Approximation 
                                     wavelet
     figure, imshow(im_max);
    
     %% Partition Function Z
    
     Z = 0; % Initialization of the partition function
    
     for q = -5:5
    
     Z = Z + abs(im_max).^q ;% Definition of the partition function.
     %Certainly wrong, I think q can't be the variable for the loop and 
     % im_max is not the correct input in abs.
    
     end
    
    a = 2; % scale factor. It is supposed to vary, I put it to 2 just for
           %  tests
    
    tau =  log(z)/log(a); % scaling function, in function of q according to
                          % the article
    
    plot(tau,q);
    

提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

对您的问题进行快速更新,我偶然发现了其中的一些基本问题: WTMM要求您计算连续小波,它不能在离散的基础上工作。例如,您可以使用简单的墨西哥帽或高斯小波的三阶导数,并确保结果不会有太大变化。 至于分区函数,您可能只选择了整个域上的小波模量之和。然而,事实表明,这种选择比计算最大值之和不稳定,特别是对于负q而言。 因此,您需要采用整个范围“ a”,从奈奎斯特逆频率说出域大小的十分之一,找到每个域的局部最大值,然后丢弃那些不能跨尺度跨行连接的最大值。这有点棘手,这使得计算非常麻烦。当您达到越来越精细的比例时,就会出现越来越多的线条。 您可以在[-1:6]中的q之类的合理范围内对每个q重复此操作,较小的q通常会给出不可靠的结果。 一旦获得了这样的Z(a,q),就检查比例子范围是否有良好的缩放行为。幂律指数通常表示为tau(q):Z〜a ^ tau。这是自由能的热力学模拟。 如果tau(q)接近直线,则表示为一个分形;如果tau(q)接近抛物线,则表示为多重。如果还有其他问题,则应两次执行上述步骤。为了获得频谱D(h)(或f(alpha)),除了进行勒让德变换外,还有很多分析工作,这在计算上也很不稳定。 希望对您有所帮助。