首页 > 其他分享 >【WTMM】基于WTMM的图像多重分形谱matlab仿真

【WTMM】基于WTMM的图像多重分形谱matlab仿真

时间:2022-11-02 16:22:55浏览次数:80  
标签:plot end sub figure 分形 length WTMM matlab net

1.软件版本

matlab2013b

2.系统程序

提出一种新的多重分形图象去噪算法,讨论了基于小波极大模的多重 分形谱估计算法.在此基础上推导了图像取噪声的谱移位算子.该方法没有对噪声的类型提出任何假设条件,而是通过定义一个变换算子对每一点的 Hausdorf指数进行处理,使处理后的图象的Hausdorf指数接近于2,从而取得最佳效果.实验结果表明,该方法在去除噪声的同时可很好地保留了 原始图像的纹理信息.

算法流程图如图所示:

 

 

部分程序如下:

clc;
clear;
close all;
warning off;
addpath 'FUNC\'
sel = 0;%1:计算多重分形谱;0:分类
%%
%读取三个图片
I1s = imread('图像\D10.gif');
I1 = imresize(I1s,[512,512]);
I2s = imread('图像\D05.gif');
I2 = imresize(I2s,[512,512]);
figure;
subplot(121);imshow(I1);title('图片1');
subplot(122);imshow(I2);title('图片2');
%%
%分成多个子图片
[M,N] = size(I1);
sub_length = 64;
n1 = floor(M/sub_length);
n2 = floor(N/sub_length);
DF = zeros(1,n1*n2);
for num_image = 1:2
k=1;
for i=1:n1
for j=1:n2
x_start = (i-1)*sub_length+1;
x_end = i*sub_length;
y_start = (j-1)*sub_length+1;
y_end = j*sub_length;
if num_image == 1
sub_image = I1(x_start:x_end,y_start:y_end);
imwrite(sub_image,['save_images\1\I_',num2str(k),'.jpg']);
end
if num_image == 2
sub_image = I2(x_start:x_end,y_start:y_end);
imwrite(sub_image,['save_images\2\I_',num2str(k),'.jpg']);
end
%保存分割的多个子图片
k = k + 1;
end
end
end
%%
%对保存的多张图片读取并调用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},'b-o');
xlabel('奇异指数a');
ylabel('多重分行谱f(a)')
grid on;
figure;
plot(q{K}+2,D{K},'b-o');
xlabel('q');
ylabel('D(q)')
grid on;
figure
plot(q{K},r{K},'b-o');
title('q和阿尔法a');
xlabel('权重因子q');
ylabel('奇异指数a');
grid on;
figure;
plot(q{K},f{K},'b-o');
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},'b-o');
xlabel('奇异指数a');
ylabel('多重分行谱f(a)')
grid on;
figure;
plot(q{K}+2,D{K},'b-o');
xlabel('q');
ylabel('D(q)')
grid on;
figure
plot(q{K},r{K},'b-o');
title('q和阿尔法a');
xlabel('权重因子q');
ylabel('奇异指数a');
grid on;
figure;
plot(q{K},f{K},'b-o');
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,'r-*');hold on
plot(T,'b-','LineWidth',2);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

3.仿真结果

所利用的测试数据为:

 

 

 

 

 

 

 

 

 

通过多重分形谱仿真,得到如下的仿真结果:

 

 

 

 

 

 

 

 

 

然后进行分类,得到如下的仿真结果:

神经网络参数如下所示:

 

 

 

 

 前面得到的特征数据集如下所示:

 

 得到的分类结果如下所示:

 

 

上面蓝色的表示两类图片,1表示第一个图片,2表示第二个图片。

 

红色部分表示对64个子图进行分类,通过统计计算,可以得到的分类的正确率达到了:

 

 

 A17-03






 

标签:plot,end,sub,figure,分形,length,WTMM,matlab,net
From: https://www.cnblogs.com/matlabfpga/p/16851403.html

相关文章

  • 自适应噪声抑制算法LMSmatlab源码
    %filterparametersM=20;%numberoftapsmu=0.05;%step-sizeparametere_max=200;%maximum#ofepochs%constantspi=3.14;Fs=0.02;%signalfrequencyF......
  • 用MATLAB实现OFDM仿真分析
         para=128;fftlen=128;noc=128;nd=6;ml=2;sr=2500;br=sr.*ml;gilen=18;ebn0=3;%**************************主循环部分********************......
  • 基于RBF网络的信任值预测算法matlab仿真实现
    目录一、理论基础二、核心程序三、测试结果一、理论基础测试的数据集有三种趋势型(trend),周期型(seasonal)还有混乱型的(noisydata)。三种类型要做训练集增加的测试(increas......
  • Matlab中plot函数参数解析
    功能二维曲线绘图 语法1234567plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(...,'PropertyName',PropertyValue,...)plot(axes_hand......
  • Matlab Simulink仿真工具的应用
     招募大量matlab技术人员,有大量matlab需求订单,均为个人短期可以完成,有时间的朋友可以加我微信:nn505203,有需求也可以联系此微信。加好友备注博客园matlab技术即可。S......
  • LMS算法MatLab实现
      LMS自适应滤波器是使滤波器的输出信号与期望响应之间的误差的均方值为最小,因此称为最小均方(LMS)自适应滤波器。其原理及推导见http://download.csdn.net/source/432206......
  • Matlab神经网络函数newff()新旧用法差异
    在MatlabR2010a版中,如果要创建一个具有两个隐含层、且神经元数分别为5、3的前向BP网络,使用旧的语法可以这样写:        net1=newff(minmax(P),[53 1]);注意......
  • MATLAB约束最优化之罚函数法、障碍函数法和SQP方法
    1.罚函数法罚函数方法包括外点法和内点法。外点法又叫外罚函数法,顾名思义,迭代点再约束条件的可行域之外,既用于不等式约束又可用于等式约束。同样地,罚函数方法又叫序列无......
  • matlab最小二乘法数据拟合函数详解
    定义:最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与......
  • 基于龙格-库塔法Runge-Kutta的常微分方程的求解matlab仿真
    目录一、理论基础二、核心程序三、测试结果一、理论基础四阶龙格库塔法龙格库塔法的家族中的一个成员如此常用,以至于经常被称为“RK4”或者就是“龙格库塔法”。令初......