24小时热门版块排行榜    

查看: 2298  |  回复: 4

左慕青

新虫 (初入文坛)

[求助] 怎么用栅格计算器计算熵 已有1人参与

希望能把输入栅格计算器的具体的公式写出来

@十八學士 发自小木虫IOS客户端
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lqyygy

木虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
栅格计算器擅长单元计算做这种全局计算可能会比较麻烦。下面是matlab的实现方法,转自百度文库

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%
计算遥感图像的各个波段的信息熵

%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function outval = entropy(img)A=imread(img);
[M,N,b]=size(A);A = double(A);%
生成值为零的初始化数组。其用来统计和存储对应于每个

%
灰度级的频数(概率)
,数组的大小根据图像的大小而定

Result=zeros(1,b);
%figure,imshow(A);for k = 1 : bband = A(:,:,k);temp=zeros(M,N);
%
对图像的灰度值做统计,计算每个灰度级出现的次数

for m=1:M;
for n=1:N;
if band(m,n)==0;i=1;
elsei=band(m,n);
end
temp(i)=temp(i)+1;
end
end
temp=temp./(M*N);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%
由熵的定义做计算信息熵

%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:length(temp)
if temp(i)==0;
Result(k)=Result(k);
else
Result(k)=Result(k)-temp(i)*log2(temp(i));
end
endendoutval = Result;

另外matlab里还有直接进行计算的函数entropy,是将所有波段做为一幅图计算,如果图像只有一个波段,计算结果跟上述算法结果一样。
I = imread("d:\data.tif";
J = entropy(I);
2楼2017-05-12 09:42:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lqyygy

木虫 (著名写手)

贴过来格式有点乱,重新整理一下,原贴见https://wenku.baidu.com/view/dc5c5cb9168884868662d603.html

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%计算遥感图像的各个波段的信息熵
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function outval = entropy(img)
A=imread(img);
[M,N,b]=size(A);
A = double(A);

%生成值为零的初始化数组。其用来统计和存储对应于每个
%灰度级的频数(概率),数组的大小根据图像的大小而定

Result=zeros(1,b);
%figure,imshow(A);
for k = 1 : b
  band = A(:,:,k);
  temp=zeros(M,N);

%对图像的灰度值做统计,计算每个灰度级出现的次数
for m=1:M;
  for n=1:N;
    if band(m,n)==0;
          i=1;
    else
          i=band(m,n);
    end
    temp(i)=temp(i)+1;
  end
end
temp=temp./(M*N);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%由熵的定义做计算信息熵
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

for i=1:length(temp)
  if temp(i)==0;
    Result(k)=Result(k);
  else
    Result(k)=Result(k)-temp(i)*log2(temp(i));
  end
end

outval = Result;

» 本帖已获得的红花(最新10朵)

3楼2017-05-12 09:50:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

左慕青

新虫 (初入文坛)

送红花一朵
引用回帖:
3楼: Originally posted by lqyygy at 2017-05-12 09:50:02
贴过来格式有点乱,重新整理一下,原贴见https://wenku.baidu.com/view/dc5c5cb9168884868662d603.html

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%计算遥感图像的各个波段的信息熵
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...

您好,请问我现在手里面有栅格图可以用matlab做吗?

发自小木虫IOS客户端
4楼2017-05-12 22:32:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lqyygy

木虫 (著名写手)

引用回帖:
4楼: Originally posted by 左慕青 at 2017-05-12 22:32:34
您好,请问我现在手里面有栅格图可以用matlab做吗?
...

可以的,只要读到matlab里面就可以了。用imread或者geotiffread进行影像读取,利用size自动判断影像的行列数,头文件用geotiffinfo读取。
5楼2017-05-14 11:51:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 左慕青 的主题更新
信息提示
请填处理意见