我正在开发一个使用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);
提前感谢您的帮助
答案 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)),除了进行勒让德变换外,还有很多分析工作,这在计算上也很不稳定。 希望对您有所帮助。