tic
clear;clc;
img = imread('d:\result4.jpg');
img =rgb2gray(img); %图像灰度化 加权平均
[m n]=size(img);
img =double(img);
%为了减少计算量,对原始图像灰度级压缩,将图像量化成16级
for i = 1:m
for j = 1:n
for k = 1:256/16
if (k-1)*16<=img(i,j)&&img(i,j)<=(k-1)*16+15
img(i,j) = k-1;
end
end
end
end
w=2; %模板半径
imgn=zeros(m,n); % 建立一个同等大小的零元素矩阵
for i=1+w:m-w
for j=1+w:n-w
Hist=zeros(1,256);
for p=i-w:i+w
for q=j-w:j+w
Hist(img(p,q)+1)=Hist(img(p,q)+1)+1; %统计局部直方图 出现在列向量哪一行,其对应次数加1
end
end
Hist=Hist/sum(Hist);
for k=1:256
if Hist(k)~=0
imgn(i,j)=imgn(i,j)+Hist(k)*log(1/Hist(k)); %局部熵
end
end
end
end
imshow(imgn,[]);