如何用matlab计算已知图像的熵
请教一下,如何用matlab计算一张已经图像的熵.哪个大哥可以给下源码,以前有看过别人的计算随机生成的图像的熵的源码,在下是菜鸟,不会改~~哪个大哥会改帮小弟改下~~先谢...
请教一下,如何用matlab计算一张已经图像的熵.哪个大哥可以给下源码,
以前有看过别人的计算随机生成的图像的熵的源码,在下是菜鸟,不会改~~
哪个大哥会改帮小弟改下~~先谢谢了~~~
%计算一副图像的熵
%随机生成图像
A=floor(rand(8,8).*255);
[M,N]=size(A);
temp=zeros(1,256);
%对图像的灰度值在[0,255]上做统计
for m=1:M;
for n=1:N;
if A(m,n)==0;
i=1;
else
i=A(m,n);
end
temp(i)=temp(i)+1;
end
end
temp=temp./(M*N);
%由熵的定义做计算
result=0;
for i=1:length(temp)
if temp(i)==0;
result=result;
else
result=result-temp(i)*log2(temp(i));
end
end
result
%计算联合熵
%随机生成图像
A=floor(rand(8,8).*255);
B=floor(rand(8,8).*255);
[M,N]=size(A);
temp=zeros(256,256);
%对图像的灰度值成对地做统计
for m=1:M;
for n=1:N;
if A(m,n)==0;
i=1;
else
i=A(m,n);
end
if B(m,n)==0;
j=1;
else
j=B(m,n);
end
temp(i,j)=temp(i,j)+1;
end
end
temp=temp./(M*N);
%由熵的定义做计算
result=0;
for i=1:size(temp,1)
for j=1:size(temp,2)
if temp(i,j)==0;
result=result;
else
result=result-temp(i,j)*log2(temp(i,j));
end
end
end
result
因为我在计算的时候要有好几张图像,比如说卫星图像,航空影片.有的是.pix格式的文件.我不知道在转为jpg文件的时候是不是会有信息丢失,会不会影响图像的信息熵?如果是pix的话,好像用imread读不进去啊,他说不能识别???? 展开
以前有看过别人的计算随机生成的图像的熵的源码,在下是菜鸟,不会改~~
哪个大哥会改帮小弟改下~~先谢谢了~~~
%计算一副图像的熵
%随机生成图像
A=floor(rand(8,8).*255);
[M,N]=size(A);
temp=zeros(1,256);
%对图像的灰度值在[0,255]上做统计
for m=1:M;
for n=1:N;
if A(m,n)==0;
i=1;
else
i=A(m,n);
end
temp(i)=temp(i)+1;
end
end
temp=temp./(M*N);
%由熵的定义做计算
result=0;
for i=1:length(temp)
if temp(i)==0;
result=result;
else
result=result-temp(i)*log2(temp(i));
end
end
result
%计算联合熵
%随机生成图像
A=floor(rand(8,8).*255);
B=floor(rand(8,8).*255);
[M,N]=size(A);
temp=zeros(256,256);
%对图像的灰度值成对地做统计
for m=1:M;
for n=1:N;
if A(m,n)==0;
i=1;
else
i=A(m,n);
end
if B(m,n)==0;
j=1;
else
j=B(m,n);
end
temp(i,j)=temp(i,j)+1;
end
end
temp=temp./(M*N);
%由熵的定义做计算
result=0;
for i=1:size(temp,1)
for j=1:size(temp,2)
if temp(i,j)==0;
result=result;
else
result=result-temp(i,j)*log2(temp(i,j));
end
end
end
result
因为我在计算的时候要有好几张图像,比如说卫星图像,航空影片.有的是.pix格式的文件.我不知道在转为jpg文件的时候是不是会有信息丢失,会不会影响图像的信息熵?如果是pix的话,好像用imread读不进去啊,他说不能识别???? 展开
3个回答
展开全部
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=0.0;
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为彩色图像,三个页面的熵平均.
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=0.0;
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为彩色图像,三个页面的熵平均.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询