计算数字图像的分形维数,导入数字图像,调用这个函数,就可以得到分形曲线,斜率
RGB=imread('C:\Users\Administrator\Desktop\22.jpg ‘);
imshow(RGB);
I=rgb2gray(RGB) ;
threshold = graythresh(I);
bw = im2bw(I,threshold);
figure;
imshow(bw); %(黑白图片)
X=double(~bw);
imshow(~bw);
fraclab
if size(X,1)~= size(X,2);
error(‘The size of X must NxN’);
end
B=size(X,1);
if mod(log2(B),1)>0;
error(‘The size of X must 2^n’);
end
t=log2(B);
s=2.^(1:t);
Nr=zeros(1,t);
for k=1:t;
h=256s(k)/B;
w=B/s(k);
for m=1:w;
for n=1:w;
A=X(1+s(k)(m-1)?(k)m,1+s(k)(n-1)?(k)n);
mn=min(A);
Mn=min(mn);
mx=max(A);
Mx=max(mx);
no=ceil(Mx/h)-ceil(Mn/h)+1;
Nr(k)=Nr(k)+no;
end
end
end
r=s./B(1);
p=polyfit(-log10®,log10(Nr),1);
fractaldimension=p(1)
plot(-log10®,log10(Nr),’’,-log10®,-p(1)*log10®+p(2));
xlabel(‘lg(尺寸)’)
ylabel(‘lg(像素数)’)
title([‘差分盒维数=’,num2str(p(1))]);