ZBLOG

有一张像素524*524的bmp图片,现在需要求它的分形参数[分形维数,进相和缺项],在以下分形维数的MATLAB程序的基础上,对进相和缺项的程序进行完善,最后输出给我完整的代码: % 读取bmp图片并转化为灰度图像 img = imread('example.bmp'); grayImg = rgb2gray(img); % 定义分形维数计算函数 function [D, r2] = fractal_dimension(image) % 将灰度图像二值化 bw = im...

好的,以下是完整的代码:

% 读取bmp图片并转化为灰度图像 img = imread(‘example.bmp’); grayImg = rgb2gray(img);

% 定义分形维数计算函数 function [D, r2] = fractal_dimension(image)

% 将灰度图像二值化
bw = imbinarize(image);

% 计算图像中非零像素点的数量
n = sum(sum(bw));

% 滑动窗口计算覆盖该像素的长方形区域的线性尺寸
sizes = 2.^(0:floor(log2(size(bw, 1))))';
counts = zeros(length(sizes), 1);
for i = 1:length(sizes)
    size = sizes(i);
    counts(i) = 0;
    for y = 1:size:size*(floor(size/bw(1))+1)
        for x = 1:size:size*(floor(size/bw(2))+1)
            if (bw(min(y+size-1,size*(floor(size/bw(1))+1)), min(x+size-1,size*(floor(size/bw(2))+1))) == 1)
                counts(i) = counts(i) + 1;
            end
        end
    end
end

% 线性拟合计算分形维数和R^2值
coeffs = polyfit(log(sizes), log(counts/n), 1);
D = -coeffs(1);
r2 = 1 - sum((log(counts/n) - polyval(coeffs, log(sizes))).^2)/sum((log(counts/n) - mean(log(counts/n))).^2);

end

% 计算进相和缺项分形维数和R^2值 [phaseD, phaseR2] = fractal_dimension(grayImg(1:end/2, :)); [gapD, gapR2] = fractal_dimension(grayImg(end/2+1:end, :));

% 输出结果 fprintf(‘进相分形维数: %.2f\n’, phaseD); fprintf(‘进相R^2值: %.2f\n’, phaseR2); fprintf(‘缺项分形维数: %.2f\n’, gapD); fprintf(‘缺项R^2值: %.2f\n’, gapR2);

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=662

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?