差分盒维数的计算方法
差分盒维数(differential box-counting,DBC),可以作为图像表面纹理粗糙程度的度量,因为它有很好的精确性和适用性,而且能满足计算效率和动态特性的要求。
处理流程:
对于一个M*M大小的图像,在三维空间中,(x,y)代表空间的位置,z代表其对应点的灰度值gray(x,y)。
1、 图像分块,s*s,r = s/M
2、 在每一个s*s的分块中,都有一个盒子柱s*s*s’。如果最大灰度值为G,通常为256,则G/s’ = M/s。
3、 计算每个分块的最大灰度值和最小灰度值,它们分别落在盒子k和l中,则
nr = k-l+1
4、 Nr = sum(nr), d = log(Nr) / log(1/r)
5、 对图像进行不同的分块,将最后结果进行最小二乘拟合。
QUESTION
1、 s’怎么理解?
s’表示需要多少个盒子覆盖整个灰度曲面。
2、 怎么理解灰度最大值和最小值落在盒子k和l中?
对图像进行分块,可能看成是对其按一定比例缩小的过程,对于灰度也要按照相同的比例缩小。比如分块大小为2*2,图像大小为256*256,则k = maxgray/(256/2),同样,l = mingray /(256/2)。
代码实现:
function fd=box_frac_dem(X);
% 差分盒维数
% Example:
% X=double(imread('rice.tif'));
% fd=box_frac_dem(X);
if size(X,1)~=size(X,2); %M*N维图像,检查M和N是否相等
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'); %图像的大小必须是2的N次方
end
t=log2(B); %假设图像大小为256*256,则t = 8
s=2.^(1:t); % s = 2,4,8,16,32,64,128,256 求2的幂
Nr=zeros(1,t); % nr = 0 0 0 0 0 0 0 0
for k=1:t;
d=s(k); %设定不同的窗口大小
h=256/d; % Let B instead of 256 for the size [2^nX2^n]
for m=1:h;
for n=1:h;
A=X(d*(m-1)+[1:d],d*(n-1)+[1:d]); %分块,存储到A
mn=min(A(1:end)); %最小灰度值
mx=max(A(1:end)); %最大灰度值
nr=fix(mx/d)-fix(mn/d)+1; %取整运算
Nr(k)=Nr(k)+nr;
end
end
end
r=B./s;
p=polyfit(log10(r),log10(Nr),1); %最小二乘拟合
fd=p(1);
一维空间的分数维大于1.0小于2.0,二维空间的分数为大于2.0小于3.0。
参考文献:
An efficient differential box-counting approach to compute fractal dimension of image
差分盒维数的计算方法相关推荐
- OpenCV图像处理(3)——盒维数计算
计算分形盒子维 //************************// //计算分形盒子维 //*** yangxin_szu 2013_03_28 ***// //valarray与 MFC 有一 ...
- matlab盒子分形维数_分形:盒子维数
今天主要想说的是,分形中的差分盒子维数的原理,基于分形的基础概念就不在这里说啦. 分形维数可以用于定量描述图像表面的空间复杂程度,能够定量的表现图像的纹理特征. 采用不同的维数进行纹理特征描述时,精度 ...
- 矩阵的迹\矩阵的秩\伴随矩阵\共轭矩阵,基底、维数与秩,相对某个基底的坐标计算方法
矩阵的迹(Trace) n × n n\times n n×n的方阵A的n个对角线元素的和称为方阵A的迹,记作tr(A). A = ( a 11 ⋯ a 1 n ⋮ ⋮ a n 1 ⋯ a n ...
- 机器学习隐私研究新进展:数据增强风险被低估,新算法“降服”维数依赖
编者按:如今,数据是推动人工智能创新的核心要素.但数据的安全和隐私问题限制了数据充分释放其潜能.一直以来,微软都倡导打造负责任的人工智能,并正在开发和利用多种技术以提供更强大的隐私保护.确保数据安全. ...
- 机器学习:维数约减算法PCA(主成分分析法)原理、实现与应用
文章目录 算法目标 预处理 算法过程 逆过程 主成分数kkk的选取 应用 算法目标 PCA的目标就是实现维数约减,即在尽可能保留信息的同时减少数据的维度.通过维数约减,我们可以实现数据压缩节省存储空间 ...
- sierpinski三角形的维数_谢宾斯基三角形的几种生成方法
简介 谢宾斯基三角形(Sierpinski triangle)是一种分形,由波兰数学家谢宾斯基在1915年提出.它是一种自相似集. 几种生成方法 方法一:去掉中心 取一个实心的三角形(多数用等边三角形 ...
- 分类问题中的“维数灾难” - robotMax
分类问题中的"维数灾难" - robotMax 在看机器学习的论文时,经常会看到有作者提到"curse of dimensionality",中文译为" ...
- 解决softmax后列和不为1的bug记录 :问题原因为 s为1维的,来除torch.exp(x)(64x10)时候,维数不对应,需要将s也要转换为2维的即维数为(64x1),才可以广播按行对应相除
def softmax(x): ## TODO: Implement the softmax function here #print("torch.exp(x)=" ...
- 对tf.reduce_mean API的理解就是求平均值,reduce指的是一串数据求平均值后维数降低了,可不是吗,一串向量变成了一个数,维数自然降低了
tf.math.reduce_mean(input_tensor, axis=None, keepdims=False, name=None ) 对tf.reduce_mean的理解就是求平均值,re ...
最新文章
- MegEngine 框架设计
- 【青少年编程】【二级】绘制方形螺旋
- Which of the following statement(s) equal(s) value 1 in C programming language?
- PAT甲级题目翻译+答案 AcWing(哈希表)
- iOS应用内购买(In App Purchase)总结
- 设计一个具有等待队列的连接池
- iframe css练习
- 前端学习(1556):ng-blnd指令
- 淘宝发布年度十大同款:钟南山哑铃、奥特曼变身器、嫦娥五号暖宝宝入选
- Ms sql pivot unpivot
- 拓端tecdat|R语言使用随机技术差分进化算法优化的Nelson-Siegel-Svensson模型
- 拓端tecdat|R语言文本主题模型之潜在语义分析(LDA:Latent Dirichlet Allocation)
- 【新手基础教程】maix asr(自动语音识别)
- 学python用linux_用树莓派学习Linux及Python真的高效吗?
- 自训练和半监督学习介绍
- 在树莓派开发板上进行ROS开发+语音交互系统设计
- 限制性立方样条(Restricted Cubic Spline)
- RK3288 资源汇总
- 什么是 .com 域名?含义和用途又是什么?
- Java 基本数据类型 编码方式(小记1.7)