【问题标题】:Why do these images have the same entropy?为什么这些图像具有相同的熵?
【发布时间】:2014-09-01 15:55:34
【问题描述】:

为什么这两张图片的熵相同?

这些图像在 MATLAB 中创建如下:

N = 50;
Z1 = randi([0 1],N);
Z2 = zeros(N);
Z2(1:2:N,1:2:N) = 1;
Z2(2:2:N,2:2:N) = 1;
subplot(1,2,1)
imshow(Z1,'InitialMagnification',800)
subplot(1,2,2)
imshow(Z2,'InitialMagnification',800);

他们的“熵”计算为:

entropy(Z1)
entropy(Z2)

结果等于 1.0000。

据说,在帮助中,熵等于 -sum(p.*log2(p)),其中 p 是从 imshist 返回的计数器。 我很难相信这些图片具有相同的“随机性”,因为我们看到它们上的一张是高度有序的,而另一张是完全随机的。那又怎样?

【问题讨论】:

  • 我从未使用过这些命令,但 p 是从 imhist 派生的一个量,在我看来,熵似乎是由颜色决定的。在这种情况下,像素的位置无关紧要。如果您不确定我的意思,请查看imhist 的结果。

标签: image matlab entropy


【解决方案1】:

这是因为 entropy 函数计算 零阶1(经验)熵。这意味着以孤立的方式查看像素,而不将它们与周围的像素进行比较。

因此,您在第二张图片中看到的结构(像素的颜色取决于周围的像素)没有被考虑在内。相反,计算只考虑黑白像素的比例(由imhist 返回);并且该比例在两张图片中大致相同。

您也可以这样看:计算(零阶)熵时会丢失空间结构,就像计算图像直方图时会丢失像素之间的空间关系一样。

附带说明一下,在Z1 中得到的熵实际上略小于 1 的概率很高,因为当比例正好为 1/2 时,零阶熵最大化。试试format long,你会看到类似的东西:

>> format long
>> entropy(Z1)
ans =
   0.999663421925701
>> entropy(Z2)
ans =
     1

1 这也可以称为一阶熵。从 马尔可夫链 的角度来看,将其称为“零阶”是有道理的,因为零阶马尔可夫链会产生统计上独立的值。另一方面,从 统计分布 的角度来看,“一阶”这个名称是有意义的。随机过程的一阶分布定义了给定瞬间/位置可能值的概率,不考虑与其他瞬间/位置的值的统计关系。

【讨论】:

  • 谢谢!是的,那些图像只是为了解释我的想法。我一直在分析时间序列,熵被认为是一种复杂性度量。它被计算为信号中“重复某些长度为 N 的模式”与“重复某些长度为 N + 1 的模式”的比率。这似乎甚至不接近那个(即使它被称为熵),事实上熵应该帮助我们将随机内容与高度(或更高)信息内容区分开来;那么,有没有办法考虑空间模式的重复?
  • 我只知道你提到的一维过程(时间序列)的一般定义。对 2D 的扩展在概念上似乎很简单,但可能很难实现。我不知道有任何内置的 Matlab 函数可以在一维情况下甚至计算“真实”熵
猜你喜欢
  • 1970-01-01
  • 2016-12-27
  • 2023-01-10
  • 1970-01-01
  • 2020-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
相关资源
最近更新 更多