差分盒維數(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。 FPGA 等效門數的計算方法
1.把fpga 基本單元 如lut ff,esb bram 和實現相同功能的標準門陣列比較,門陣列中包含的門數即為該fpga 基本單元的等效門數,然後乘以基本單元的數目就 可以得到fpga 門數估計值 2.分別用fpga 和標準門陣列實現相同的功能,從中統計出fpga 的等效門數,這種方 法比較多的...
分拆數的第三種計算方法
我們考慮從 ferrers diagram 的原點引出一條 y x y xy x 的直線,它離開這個圖的位置就框處了乙個 h h h times h h h 的正方形,這個正方形被稱為乙個整數拆分的 durfee square。那麼如果我們確認了正方形的邊長是 h hh,它兩側放置的就都是 h le...
AUC的計算方法
在機器學習的分類任務中,我們常用許多的指標,諸如召回率 recall 準確率 precision f1值 auc等。相信這個問題很多玩家都已經明白了,簡單的概括一下,auc are under curve 是乙個模型的評價指標,用於分類任務。那麼這個指標代表什麼呢?這個指標想表達的含義,簡單來說其實...