idx = hspec == 0;%找出矩阵hspec中等于0的元素
hspec(idx) = eps; %令矩阵hspec中等于0的元素等于eps,eps是matlab中的一个常数,无限接近于0
例如:
>> x=0;
>> sin(x)/x
ans =
NaN
>> x=eps;
>> sin(x)/x
ans =
1
function entr=yentropy(a)
a=uint8(a); %这里a为8位的单色图像或24为的RGB彩色图像
[m n l]=size(a);
entr=0;
for k=1:l
hi=zeros(1,256);
for i=1:m
for j=1:n
hi(a(i,j,k)+1)=hi(a(i,j,k)+1)+1; %求每种值的在图像中出现的次数
end
end
hi=sort(hi,'descend');
hi=hi/m/n; %求概率
en=00;
for i=1:256
if hi(i)>0
en=en-hi(i)log2(hi(i)); %概率不为0 累加求熵
else
i=257; %否则停止
end
end
entr=entr+en;
end
entr=entr/l; %当l=1时a为单色图像;
当l=3时a为彩色图像,三个页面的熵平均
x=[1 2 3 56 7
2 3 5 45 8
];
[n,m]=size(x);
k=1/log(n);
X=zeros(n,m);
for j=1:m
for i=1:n
c=sort(x(:,j));
big=x(n,j);
small=x(1,j);
X(i,j)=(x(i,j)-small)/(big-small)+1;
end
end
p=[];
for j=1:m
th=0;
for t=(X(:,1))'
th=th+t;
end
Ph=X(:,j)/th;
p=[p Ph];
end
e=[];
for j=1:m
eg=0;
for i=1:n
eh=-kp(i,j)log(p(i,j));
eg=eg+eh;
end
e=[e,eg];
end
E=0;
for j=1:m
E=E+e(j);
end
g=[];
for j=1:m
gh=(1-e(j))/(m-E);
g=[g,gh];
end
Eh=0;
for nh=g
Eh=Eh+nh;
end
w=[];
for j=1:m
wh=g(j)/Eh;
w=[w,wh];
end
s=[];
for i=1:n
sh=w(i)p(i,:);
shen=0;
for she=sh
shen=shen+she;
end
s=[s ,shen];
end
以上就是关于matlab中计算图像的熵的程序有一点看不懂全部的内容,包括:matlab中计算图像的熵的程序有一点看不懂、如何用matlab计算已知图像的熵、用Matlab写求‘熵值法确定权重系数’的程序怎样写法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)