%%
% 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);
CT扫描的二值化图像的多重分形计算,
需积分: 2 185 浏览量
2022-06-15
12:24:38
上传
评论
收藏 1KB ZIP 举报
qq_53886548
- 粉丝: 0
- 资源: 2
最新资源
- 基于C+++OPENCV的全景图像拼接源码(课程设计)
- 基于Python+OpenCV对多张图片进行全景图像拼接,消除鬼影,消除裂缝+源代码+文档说明+界面截图(高分课程设计)
- 基于C++实现的全景图像拼接源码(课程设计)
- 基于SIFT特征点提取和RASIC算法实现全景图像拼接python源码+文档说明+界面截图+详细注释(95分以上课程大作业)
- 基于matlab实现眼部判别的疲劳检测系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的异常姿势识别系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 隐藏文件展示工具,用来展示被病毒隐藏的文件
- 基于Matlab的图像分割系统+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于MATLAB指纹门禁GUI设计源码+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
- 基于Matlab的仪表指数识别系统霍夫曼变换+源代码+全部数据+文档说明+详细注释+使用说明+截图(高分课程设计)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0