J = entropyfilt(I,NHOOD)
该函数用来计算灰度影像的局部熵。其中NHOOD为邻域,默认邻域为9*9。
邻域设置越大,计算时间越久。图像熵表示为图像灰度级集合的比特平均数,单位比特/像素,也描述了图像信源的平均信息量。
H(p)=-∑i,jp(i.j)lnp(i,j), 其中p(i,j)=x(i,j)∑i,jx(i,j),x(i,j)为图像的像元。
For pixels on the borders of I, ENTROPYFILT uses symmetric padding. 在边界区域ENTROPYFILT函数使用对称填充。下面的matlab代码没有在边界区域使用对称填充。
[m,n]=size(I);
In=zeros(size(I));%In为影像局部熵
k=25;%k为搜索半径
for i=k+1:m-k
for j=k+1:n-k
his=zeros(1,256);
for p=i-k:i+k
for q=j-k:j+k
his(I(p,q)+1)=his(I(p,q)+1)+1;%计算2k+1块的灰度直方图
end
end
his=his/sum(his);
for g=1:256
if his(g)~=0
In(i,j)=In(i,j)-his(g)*log(his(g));
end
end
end
end