图像多重分形谱分析:基于Matlab的仿真技术

1.软件版本

matlab2017b



3.核心代码

function varargout = Tops(varargin)% TOPS MATLAB code for Tops.fig%      TOPS, by itself, creates a new TOPS or raises the existing%      singleton*.%%      H = TOPS returns the handle to a new TOPS or the handle to%      the existing singleton*.%%      TOPS('CALLBACK',hObject,eventData,handles,...) calls the local%      function named CALLBACK in TOPS.M with the given input arguments.%%      TOPS('Property','Value',...) creates a new TOPS or raises the%      existing singleton*.  Starting from the left, property value pairs are%      applied to the GUI before Tops_OpeningFcn gets called.  An%      unrecognized property name or invalid value makes property application%      stop.  All inputs are passed to Tops_OpeningFcn via varargin.%%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one%      instance to run (singleton)".%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help Tops% Last Modified by GUIDE v2.5 04-Apr-2013 07:31:51% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct('gui_Name',       mfilename, ...                   'gui_Singleton',  gui_Singleton, ...                   'gui_OpeningFcn', @Tops_OpeningFcn, ...                   'gui_OutputFcn',  @Tops_OutputFcn, ...                   'gui_LayoutFcn',  [] , ...                   'gui_Callback',   []);if nargin && ischar(varargin{1})    gui_State.gui_Callback = str2func(varargin{1});endif nargout    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});else    gui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% --- Executes just before Tops is made visible.function Tops_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject    handle to figure% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% varargin   command line arguments to Tops (see VARARGIN)% Choose default command line output for Topshandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes Tops wait for user response (see UIRESUME)% uiwait(handles.figure1);% --- Outputs from this function are returned to the command line.function varargout = Tops_OutputFcn(hObject, eventdata, handles) % varargout  cell array for returning output args (see VARARGOUT);% hObject    handle to figure% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} = handles.output;% --- Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject    handle to pushbutton1 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)parameter;SIZE = str2num(get(handles.edit2,'string'));[filename,pathname]=uigetfile({'*.jpg';'*.bmp';'*.gif'},'选择图片');if isequal(filename,0)    disp('Users Selected Canceled');elsestr=[pathname filename];I0 = imread(str);I1 = imresize(I0,[SIZE,SIZE]);axes(handles.axes1);imshow(I1);end;% --- Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject    handle to pushbutton2 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)parameter;I_gray = rgb2gray(I1);axes(handles.axes2);imshow(I_gray);Inew = I_gray;% --- Executes on button press in pushbutton3.function pushbutton3_Callback(hObject, eventdata, handles)% hObject    handle to pushbutton3 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)parameter;I_10 = im2bw(I1);axes(handles.axes2);imshow(I_10);Inew = I_10;% --- Executes on button press in pushbutton4.function pushbutton4_Callback(hObject, eventdata, handles)% hObject    handle to pushbutton4 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)clc;clear;close all;function edit2_Callback(hObject, eventdata, handles)% hObject    handle to edit2 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit2 as text%        str2double(get(hObject,'String')) returns contents of edit2 as a double% --- Executes during object creation, after setting all properties.function edit2_CreateFcn(hObject, eventdata, handles)% hObject    handle to edit2 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.%       See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))    set(hObject,'BackgroundColor','white');end% --- Executes on button press in pushbutton5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject    handle to pushbutton5 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)parameter;wg    = str2num(get(handles.edit3,'string'));qs    = str2num(get(handles.edit5,'string'));qstep = str2num(get(handles.edit6,'string'));[Rs,Cs]     = size(Inew);npix        = sum(sum(Inew));%计算零即数量的像素在第i盒尺寸Lwidth     = Rs;p         = log(width)/log(2);MaxBox    = power(Rs,2)/power(2,2);NsL       = double(zeros(MaxBox,p));%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%for Ig = p-1:-1:0    siz   = 2^(p-Ig);    sizm1 = siz - 1;    index = log2(siz);    count = 0;    for i=1:siz:(width-siz+1)        for j=1:siz:(width-siz+1)            count            = count + 1;            sums             = sum(sum(Inew(i:i+sizm1,j:j+sizm1)));            NsL(count,index) = sums;        end    endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Qran = qs;logl = zeros(p,1);for i=1:p    logl(i) = log(power(2,i));end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%PsL = double(zeros(MaxBox,p));for j=1:p    No_boxes = power(Rs,2)/power(power(2,j),2);    norm     = sum(NsL(1:No_boxes,j));    for i=1:No_boxes        PsL(i,j) = NsL(i,j)/norm;    endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%f(alpha),alphafor kj=1:p    count    = 0;    No_boxes = power(Rs,2)/power(power(2,kj),2);    for q = -Qran:qstep:Qran               qsum = 0;        for i=1:No_boxes            if PsL(i,kj) ~= 0               qsum = qsum + power(PsL(i,kj),q);            end        end        fqnum  = 0;        aqnum  = 0;        smuiqL = 0;        for i=1:No_boxes            if PsL(i,kj) ~= 0               muiqL = power(PsL(i,kj),q)/qsum;               fqnum = fqnum + (muiqL * log(muiqL));               aqnum = aqnum + (muiqL * log(PsL(i,kj)));               smuiqL = smuiqL + muiqL;            end         end        count         = count + 1;        fql(kj,count) = fqnum;        aql(kj,count) = aqnum;        qval(count)   = q;    endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%alpha_qfor i=1:count    line   = polyfit(logl,aql(:,i),1);    aq(i)  = line(1);    yfit   = polyval(line,logl);    sse    = sum(power(aql(:,i)-yfit,2));    sst    = sum(power(aql(:,i)-mean(aql(:,i)),2));    ar2(i) = 1-(sse/sst);end%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%f_qfor i=1:count     line   = polyfit(logl,fql(:,i),1);     fq(i)  = line(1);     yfit   = polyval(line,logl);     sse    = sum(power(fql(:,i)-yfit,2));     sst    = sum(power(fql(:,i)-mean(fql(:,i)),2));     fr2(i) = 1-(sse/sst);endaxes(handles.axes3);plot(aq,fq,'b-o');xlabel('alpha','FontSize',10);ylabel('f(alpha)','FontSize',10);pause(1);axes(handles.axes5);plot(qval,fq,'b-o');xlabel('q','FontSize',10);ylabel('f(alpha)','FontSize',10);pause(1);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Qran = 20*qs;for kj=1:p    count    = 0;    No_boxes = power(Rs,2)/power(power(2,kj),2);    for q = -Qran:10*qstep:Qran               qsum = 0;        for i=1:No_boxes            if PsL(i,kj) ~= 0               qsum = qsum + power(PsL(i,kj),q);            end        end        fqnum  = 0;        aqnum  = 0;        smuiqL = 0;        for i=1:No_boxes            if PsL(i,kj) ~= 0               muiqL = power(PsL(i,kj),q)/qsum;               fqnum = fqnum + (muiqL * log(muiqL));               aqnum = aqnum + (muiqL * log(PsL(i,kj)));               smuiqL = smuiqL + muiqL;            end         end        count         = count + 1;        fql(kj,count) = fqnum;        aql(kj,count) = aqnum;        qval(count)   = q;    endendfor i=1:count    line   = polyfit(logl,aql(:,i),1);    aq(i)  = line(1);    yfit   = polyval(line,logl);    sse    = sum(power(aql(:,i)-yfit,2));    sst    = sum(power(aql(:,i)-mean(aql(:,i)),2));    ar2(i) = 1-(sse/sst);endfor i=1:count     line   = polyfit(logl,fql(:,i),1);     fq(i)  = line(1);     yfit   = polyval(line,logl);     sse    = sum(power(fql(:,i)-yfit,2));     sst    = sum(power(fql(:,i)-mean(fql(:,i)),2));     fr2(i) = 1-(sse/sst);endfor i=1:count    Dq(i) = (aq(i)*qval(i)-fq(i))/(qval(i)-1);endaxes(handles.axes4);plot(qval,Dq,'b-o');xlabel('q','FontSize',10);ylabel('D(q)','FontSize',10);pause(1);axes(handles.axes6);plot(aq,qval,'b-o');xlabel('alpha','FontSize',10);ylabel('q','FontSize',10);pause(1);aqs   = aq;fqs   = fq;qvals = qval;Dqs   = Dq;function edit3_Callback(hObject, eventdata, handles)% hObject    handle to edit3 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit3 as text%        str2double(get(hObject,'String')) returns contents of edit3 as a double% --- Executes during object creation, after setting all properties.function edit3_CreateFcn(hObject, eventdata, handles)% hObject    handle to edit3 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.%       See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))    set(hObject,'BackgroundColor','white');endfunction edit5_Callback(hObject, eventdata, handles)% hObject    handle to edit5 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit5 as text%        str2double(get(hObject,'String')) returns contents of edit5 as a double% --- Executes during object creation, after setting all properties.function edit5_CreateFcn(hObject, eventdata, handles)% hObject    handle to edit5 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.%       See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))    set(hObject,'BackgroundColor','white');endfunction edit6_Callback(hObject, eventdata, handles)% hObject    handle to edit6 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)% Hints: get(hObject,'String') returns contents of edit6 as text%        str2double(get(hObject,'String')) returns contents of edit6 as a double% --- Executes during object creation, after setting all properties.function edit6_CreateFcn(hObject, eventdata, handles)% hObject    handle to edit6 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.%       See ISPC and COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))    set(hObject,'BackgroundColor','white');end% --- Executes on button press in pushbutton6.function pushbutton6_Callback(hObject, eventdata, handles)% hObject    handle to pushbutton6 (see GCBO)% eventdata  reserved - to be defined in a future version of MATLAB% handles    structure with handles and user data (see GUIDATA)parameter;fid = fopen('save_alpha.txt','wt');for i = 1:length(aqs)    fprintf(fid,'%f\n',aqs(i));endfclose(fid);fid = fopen('save_falpha.txt','wt');for i = 1:length(fqs)    fprintf(fid,'%f\n',fqs(i));endfclose(fid);fid = fopen('save_Q.txt','wt');for i = 1:length(qvals)    fprintf(fid,'%f\n',qvals(i));endfclose(fid);fid = fopen('save_D.txt','wt');for i = 1:length(Dqs)    fprintf(fid,'%f\n',Dqs(i));endfclose(fid); 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.59.60.61.62.63.64.65.66.67.68.69.70.71.72.73.74.75.76.77.78.79.80.81.82.83.84.85.86.87.88.89.90.91.92.93.94.95.96.97.98.99.100.101.102.103.104.105.106.107.108.109.110.111.112.113.114.115.116.117.118.119.120.121.122.123.124.125.126.127.128.129.130.131.132.133.134.135.136.137.138.139.140.141.142.143.144.145.146.147.148.149.150.151.152.153.154.155.156.157.158.159.160.161.162.163.164.165.166.167.168.169.170.171.172.173.174.175.176.177.178.179.180.181.182.183.184.185.186.187.188.189.190.191.192.193.194.195.196.197.198.199.200.201.202.203.204.205.206.207.208.209.210.211.212.213.214.215.216.217.218.219.220.221.222.223.224.225.226.227.228.229.230.231.232.233.234.235.236.237.238.239.240.241.242.243.244.245.246.247.248.249.250.251.252.253.254.255.256.257.258.259.260.261.262.263.264.265.266.267.268.269.270.271.272.273.274.275.276.277.278.279.280.281.282.283.284.285.286.287.288.289.290.291.292.293.294.295.296.297.298.299.300.301.302.303.304.305.306.307.308.309.310.311.312.313.314.315.316.317.318.319.320.321.322.323.324.325.326.327.328.329.330.331.332.333.334.335.336.337.338.339.340.341.342.343.344.345.346.347.348.349.350.351.352.353.354.355.356.357.358.359.360.361.362.363.364.365.366.367.368.369.370.371.372.373.374.375.376.377.378.379.380.381.382.383.384.385.386.387.388.389.390.391.392.393.394.395.396.397.398.399.400.401.402.403.404.405.406.407.408.409.410.411.412.413.414.415.416.417.418.419.420.421.422.423.424.425.426.427.428.429.430.431.432.433.434.435.436.437.



4.操作步骤与仿真结论

运行tops.m文件。会得到如下的结果:【多重分形谱】基于MATLAB的图像多重分形谱分析仿真_ico

我们选择任意一个图形进行测试:仿真效果如下所示:

【多重分形谱】基于MATLAB的图像多重分形谱分析仿真_选择图片_02



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空