Matlab entropyfilt函数 解析

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

你可能感兴趣的:(matlab,函数,图像处理)