首页 > 编程语言 >基于WTMM算法的图像多重分形谱计算matlab仿真

基于WTMM算法的图像多重分形谱计算matlab仿真

时间:2023-12-13 21:00:03浏览次数:44  
标签:0.9 ... Wf 多重 分形 WTMM matlab 图像

1.算法运行效果图预览

 

2.算法运行软件版本

matlab2022a

 

3.算法理论概述

        基于WTMM算法的图像多重分形谱计算是一种利用小波变换模极大值(WTMM)方法,对图像进行多重分形分析的方法。下面将详细介绍这种方法的原理和数学公式。

 

3.1、WTMM算法概述

       分形理论是一种研究自然界中不规则、复杂现象的数学工具,而多重分形则是分形理论的一个重要分支,用于描述具有不同奇异程度的分形结构。在图像处理中,多重分形分析可以帮助我们更好地理解图像的纹理、边缘等特征,以及它们在不同尺度下的表现。

 

       WTMM算法是一种基于小波变换模极大值的方法,用于计算图像的多重分形谱。该方法主要利用小波变换对图像进行多尺度分解,提取出图像在不同尺度下的边缘信息。然后,通过对这些边缘信息进行统计分析,计算出图像的多重分形谱。

 

具体来说,WTMM算法的计算步骤如下:

 

对图像进行二维小波变换,得到一系列小波系数。

对每个尺度下的小波系数进行模极大值检测,提取出图像的边缘信息。

对提取出的边缘信息进行统计分析,计算出图像的多重分形谱。

3.2、WTMM算法原理

WTMM算法的数学公式主要包括以下几个部分:

 

3.2.1 二维小波变换

       对图像f(x,y)进行二维小波变换,可以得到一系列小波系数Wf(x,y),其中下标f表示小波变换的类型,如Haar小波、Daubechies小波等。二维小波变换的数学公式可以表示为:

 

Wf(x,y)=∫∫f(u,v)ψf(x−u,y−v)dudvWf(x,y) = \int \int f(u,v) \psi_f(x-u,y-v) du dvWf(x,y)=∫∫f(u,v)ψf​(x−u,y−v)dudv

 

其中,ψf(x,y)是小波基函数。

 

3.2.2 模极大值检测

       对每个尺度下的小波系数进行模极大值检测,可以提取出图像的边缘信息。具体地,对于每个像素位置(x,y),如果满足以下两个条件:

 

|Wf(x,y)|≥|Wf(x+1,y)|,|Wf(x,y)|≥|Wf(x−1,y)|,|Wf(x,y)|≥|Wf(x,y+1)|,|Wf(x,y)|≥|Wf(x,y−1)||W_f(x,y)| \geq |W_f(x+1,y)|, |W_f(x,y)| \geq |W_f(x-1,y)|,|W_f(x,y)| \geq |W_f(x,y+1)|, |W_f(x,y)| \geq |W_f(x,y-1)||Wf​(x,y)|≥|Wf​(x+1,y)|,|Wf​(x,y)|≥|Wf​(x−1,y)|,|Wf​(x,y)|≥|Wf​(x,y+1)|,|Wf​(x,y)|≥|Wf​(x,y−1)|

 

则称该像素位置为模极大值点。

 

3.2.3 多重分形谱计算

      通过对提取出的边缘信息进行统计分析,可以计算出图像的多重分形谱。具体地,可以用以下公式计算多重分形谱:

 

α=lim⁡ε→0log⁡|Wf(x,y)|log⁡ε\alpha = \lim_{\varepsilon \to 0} \frac{\log |W_f(x,y)|}{\log \varepsilon}α=limε→0​logεlog⁡|Wf​(x,y)|​

 

       其中,ε是小波变换的尺度参数,α是奇异指数,用于描述图像在不同尺度下的奇异程度。通过对所有模极大值点的奇异指数进行统计分析,可以得到图像的多重分形谱。

 

 

 

 

4.部分核心程序

%%
%对保存的多张图片读取并调用WTMM方法求图像的多重分形谱,对得到的结果保存其特征值
if sel == 1
   k = 1;
 
    for i=1:2*n1*n2;
        
        if i<=n1*n2
           k      = i;
           folder = 'save_images\1\';
           lists  = dir('save_images\1\*.jpg');        
        end
        
        if i<=2*n1*n2 & i>n1*n2
           k      = i - n1*n2;
           folder = 'save_images\2\';
           lists  = dir('save_images\2\*.jpg');        
        end        
              
        
        i
        %read an image
        I                               = imread(fullfile(folder,lists(k).name));
        %调用分形函数
        [qt,rt,ft,fft,Dt,feature_data]  = func_Wavelet_multifractal(I);
        q{i}                            = qt;
        r{i}                            = rt;    
        f{i}                            = ft;   
        ff{i}                           = fft;   
        D{i}                            = Dt;
        Feature{i}                      = feature_data;
    end
 
    save result.mat q r f ff D Feature
 
    K = 120;
    figure;
    plot(r{K},f{K},'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
    xlabel('奇异指数a');
    ylabel('多重分行谱f(a)') 
    grid on;
    
    figure;
    plot(q{K}+2,D{K},'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
    xlabel('q');
    ylabel('D(q)') 
    grid on;
    
    figure
    plot(q{K},r{K},'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
    title('q和阿尔法a'); 
    xlabel('权重因子q');
    ylabel('奇异指数a');
    grid on;
    
    figure;
    plot(q{K},f{K},'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
    title('q和f(a) '); 
    xlabel('权重因子q');
    ylabel('多重分行谱f(a)'); 
    grid on;
end 
 
 
 
 
%%
%调用分类器对特征参数进行分类
if sel == 0
    load result.mat %q r f ff Feature
 
    K = 120;
    figure;
    plot(r{K},f{K},'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
    xlabel('奇异指数a');
    ylabel('多重分行谱f(a)') 
    grid on;
    
    figure;
    plot(q{K}+2,D{K},'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
    xlabel('q');
    ylabel('D(q)') 
    grid on;
    
    figure
    plot(q{K},r{K},'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
    title('q和阿尔法a'); 
    xlabel('权重因子q');
    ylabel('奇异指数a');
    grid on;
    
    figure;
    plot(q{K},f{K},'-r>',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.9,0.0]);
    title('q和f(a) '); 
    xlabel('权重因子q');
    ylabel('多重分行谱f(a)'); 
    grid on;   
    
    
    
    
    for i = 1:length(Feature)
        P(i) =  Feature{i}(3);
    end 
 
    T =  [1*ones(1,length(Feature)/2),2*ones(1,length(Feature)/2)];
 
    t1                      = clock;                              %计时开始
    net                     = fitnet(65);
    net.trainParam.epochs   = 1000;                               %设置训练次数
    net.trainParam.goal     = 0.0001;                             %设置性能函数
    net.trainParam.show     = 1;                                  %每10显示
    net.trainParam.Ir       = 0.005;                              %设置学习速率
    net                     = train(net,P,T);                     %训练BP网络
    datat                   = etime(clock,t1);
    Nets                    = net;
    view(Nets);
    figure;
    plot(P,'b-*');
 
    y = sim(net,P);  
 
    figure;
    stem(y,'-bs',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.9,0.0,0.0]);
    hold on
    plot(T,'-mo',...
    'LineWidth',1,...
    'MarkerSize',6,...
    'MarkerEdgeColor','k',...
    'MarkerFaceColor',[0.5,0.9,0.0]);
    hold on
    legend('预测数据','实际数据');
    title('输出1为第一类,输出2为第二类(即可对比实际的健康部分和肿瘤部分)');
    
    
    disp('预测正确率');
    error = 0;
    for i = 1:length(y)
        if i <= length(y)/2 
           if y(i) > 1.5
              error = error + 1;
           end
        else
           if y(i) < 1.5
              error = error + 1;
           end          
        end
    end
    1-error/length(y)
end

  

标签:0.9,...,Wf,多重,分形,WTMM,matlab,图像
From: https://www.cnblogs.com/matlabworld/p/17899871.html

相关文章

  • 基于AlexNet深度学习网络的智能垃圾分类系统matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述       基于AlexNet深度学习网络的智能垃圾分类系统是一种利用深度学习技术,对垃圾图像进行分类的系统。下面将详细介绍这种系统的原理和数学公式。 3.1、基于AlexNet深度学习网络的......
  • 【matlab地理】1.1.Landsat4-5影像模拟三维地形图
    LANDSAT4-5TM卫星数字产品数据库是中国科学院计算机网络信息中心建立的Landsat遥感影像数据服务系统中的一个组成部分,数据镜像自美国地质调查局。该影像系统主要用于地理、地形及地球勘测等重要领域。Landsat4-5地形影像可以利用matlab模拟3D地形图、2D灰度图、等高线图、高精......
  • 20231213matlab问题资料汇总
    https://bbs.csdn.net/topics/390064770https://www.ilovematlab.cn/forum.php?mod=viewthread&tid=455375&_dsign=7812fb23https://blog.csdn.net/fmber/article/details/85858771https://www.mathworks.com/help/dotnetbuilder/MWArrayAPI/html/T_MathWorks_MATL......
  • 【matlab混沌理论】1.6.Lorenz吸引子的实际相图
    方法:Lorenz特征判断Lorenz混沌轨道和非混沌轨道在相空间中占据不同的吸引区域,动态生成图(代码见下)。要判断一个轨迹是否为Lorenz混沌轨道。通过计算主成分分析,按特征值大小排序,从而判断出混沌性。input:%Lorenz混沌轨道和非混沌轨道在相空间中占据不同的吸引区域,动态生成图......
  • 【matlab混沌理论】1.3.双摆杆基本模型
    双摆杆是混沌理论的典型运动模型之一。涉及重力加速度、摆杆长度和质量。1.双摆杆的摆角分析input:%已知物理参数L1=5;L2=3;%两摆杆长度和质量m1=3;m2=5;g=9.80665;%物理重力加速度m/s^2%定义初始参数%y0的第1参数,即摆1的初始角度;第2,即摆2的初始角......
  • 【matlab混沌理论】1.2.洛伦兹吸引子
    ​【matlab混沌理论】1.2.洛伦兹吸引子Lorenz洛伦兹吸引子。定义洛伦兹函数组后,通过ode45函数求解此微分方程方程。input:%Lorenz函数的洛伦兹吸引子%2.定义模型参数sigma=10;beta=8/3;rho=28;%定义一组初始条件和一个时间间隔x0=[1,0,0.5];tspan=0......
  • 【matlab混沌理论】1.1.混沌理论简介
    ​混沌理论1.简介         混沌理论是一个跨学科的科学研究领域和数学分支,专注于对初始条件高度敏感的动力系统的基本模式和确定性定律,曾被认为具有完全随机的无序和不规则状态。混沌理论指出,在混沌复杂系统的表面随机性中,存在潜在的模式、互连、恒定反馈回路、重复、......
  • How to add your own library in MATLAB Simulink Library Browser
    https://www.youtube.com/watch?v=WxFBXEZo0VI&ab_channel=HighVoltageEngineeringbyMGNiasarhttps://ww2.mathworks.cn/help/simulink/ug/creating-block-libraries.htmlLibrariesinSimulinkMadeEasy:https://www.youtube.com/watch?v=xWmIACn5Te0&ab_channel......
  • 基于支持向量机SVM和MLP多层感知神经网络的数据预测matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022a 3.算法理论概述      支持向量机(SVM)和多层感知器(MLP)是两种常用的机器学习算法,它们在数据预测和分类任务中都有广泛的应用。下面将详细介绍这两种算法的原理和数学公式。 一、支持向量机(SVM) ......
  • 基于PSD-ML算法的语音增强算法matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022A 3.算法理论概述      PSD-ML(PowerSpectralDensityMaximumLikelihood)算法是一种基于最大似然估计的语音增强算法,通过对语音信号的功率谱密度进行估计,并利用估计结果对原始语音信号进行滤波处理,以达......