您现在的位置:首页 >> ★免费资源 >> 源码下载 >> 内容

MATLAB代做-python代做-图像的多重分形谱计算源码

时间:2018-12-30 0:48:54 点击:

  核心提示:MATLAB代做-python代做-图像的多重分形谱计算源码...
%%
% Author: Tegy J. Vadakkan
% Date: 09/08/2009 
% input a binary image
% the multifractal spectra is calculated based on the ideas in the paper by
% Posadas et al., Soil Sci. Soc. Am. J. 67:1361-1369, 2003

clc;
clear all;
close all;
%%
indata=inputdlg({'input filename'});
a = imread(indata{1});
[rows, cols] = size(a);
figure;imshow(a);
npix = sum(sum(a));
%% calculates niL which is the number of pixels in the ith box of size L 
% ideas from boxcount.m by F. Moisy have been borrowed here
width = rows;
p = log(width)/log(2);
max_boxes = power(rows,2)/power(2,2);
nL = double(zeros(max_boxes,p));
for g=(p-1):-1:0
            siz = 2^(p-g);
            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(a(i:i+sizm1,j:j+sizm1)));
                    nL(count,index) = sums;
                end
            end
end
%%
qran = 1;
logl = zeros(p,1);

for l=1:p
    logl(l) = log(power(2,l));
end
%% normalized masses
pL = double(zeros(max_boxes,p));
for l=1:p
    nboxes = power(rows,2)/power(power(2,l),2);
    norm = sum(nL(1:nboxes,l));
    if(norm ~= npix)
        display('error');
    end
    for i=1:nboxes
        pL(i,l) = nL(i,l)/norm;
    end
end
%%
%falpha, alpha
for l=1:p
    
    count = 0;
    nboxes = power(rows,2)/power(power(2,l),2);
    
    for q = -qran:+0.1:qran       
        
        %denominator of muiql
        qsum = 0.0;
        for i=1:nboxes
            if(pL(i,l) ~= 0)
                qsum = qsum + power(pL(i,l),q);
            end
        end
 
        fqnum = 0.0;
        aqnum = 0.0;
        smuiqL = 0.0;
        for i=1:nboxes
            if(pL(i,l) ~= 0)
                  muiqL = power(pL(i,l),q)/qsum;
                  fqnum = fqnum + (muiqL * log(muiqL));
                  aqnum = aqnum + (muiqL * log(pL(i,l)));
                  smuiqL = smuiqL + muiqL;
            end 
        end
        if(uint8(smuiqL)~=1)
            display('error');
        end
        
        count = count + 1;
        fql(l,count) = fqnum;
        aql(l,count) = aqnum;
        qval(count) = q;
    end

end
%%
% alpha_q
for 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_q
for 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);
end
figure;plot(qval,aq,'r:o',qval,fq,'g:o');
h = legend('alpha(q)','f(q)',1); 
xlabel('q','FontSize',14);

figure;plot(aq,fq,'r:o');
xlabel('alpha(q)','FontSize',14);
ylabel('f(q)','FontSize',14);

line=polyfit(aq,fq,2);
pfit = polyval(line,aq);
figure;plot(aq,fq,'r:o',aq,pfit,'g:o');
h = legend('f(q)','Parabolic fit to f(q)',3); 

xlabel('alpha(q)','FontSize',14);


联系:highspeedlogic

QQ :1224848052

微信:HuangL1121

邮箱:1224848052@qq.com

网站:http://www.mat7lab.com/

网站:http://www.hslogic.com/

微信扫一扫:

作者:多重分形谱 来源:多重分形谱
  • 您是如何找到本站的?
  • 百度搜索
  • Google搜索
  • 查阅资料过程中
  • 论坛发现
  • 百度贴吧发现
  • 朋友介绍
本站最新成功开发工程项目案例
相关文章
  • 没有相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
  • matlab代做|matlab专业代做|matlab淘宝代做|matlab代写(www.hslogic.com) © 2019 版权所有 All Rights Reserved.
  • Email:highspeed_logic@163.com 站长QQ: 1224848052

    专业代做/代写/承接、MATLAB、SIMULINK、FPGA项目、博士/硕士/本科毕业设计、课题设计、论文,毕业论文,Coursework、Eassy、Assignment