分形维数代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A=imread('e:\1.jpg')
FF=size(A)
% 计算灰度矩阵的大小;
for i=1:FF(1)
for j=1:FF(2)
if A(i,j)==0 % 等多种运算是不支持“0”值的;
end
end
end
imwrite(A,’e:\2.jpg)’;
% 重新保存经校正后灰度矩阵;
A=imread('e:\2.jpg');
% 读入图像,并转化为矩阵
t=graythresh(A);
% 计算二值化阈值
B=im2bw(A,t);
% 输出图像的二值化矩阵
% image(B);
[x,y]=size(B);
% 图像尺寸
u=1;
V=nonzeros(B);
Area=sum(V)/(x*y);
for side_length=2:110
% 定义观测尺度,即正方形(盒子)边长
Hang=mod(x,side_length);
Lie=mod(y,side_length);
C=B(1:x-Hang,1:y-Lie);
% 若图像大小“x×y”不能被正方形
%“side_length ×side_length”整除,则舍去多余的“边幅”部分;[m,n]=size(C);
X=reshape(C,side_length, numel(C)/side_length);
interim1=sum(X);
Y=reshape(interim1,side_length,numel(interim1)/side_length);
interim2=sum(Y);
Number=numel(nonzeros(interim2));
% 计数有像素(“1”)的盒子数
interim=sum(interim2');
%当盒子边长为side_length时,统计出各个
% 盒子内的“1”值之和“interim2”,以及所有盒子“1”值总和“interim”,W(u,1)= Number;
u=u+1;
end
y=log(W);
x=log(2:110);
plot(x,y,'o');
Dbox=polyfit(x',y,1)
% 线性方程斜率的绝对值即为盒子维数
B=nonzeros(B);
Area % 给出像素的占有率