matlab中计算图像的熵的程序有一点看不懂

matlab中计算图像的熵的程序有一点看不懂,第1张

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写求‘熵值法确定权重系数’的程序怎样写法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10098447.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存