分形维数代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 % 给出像素的占有率

相关文档
最新文档