如果我想测量图像的熵,我应该怎么做?
我的目标是在我的 C# 桌面应用程序中忽略诸如随风飘动的树叶之类的事情。
我知道 matlab 有这个功能,但我在 Emgu 中看不到它,这是我正在使用的。
我发现“香农熵”可能是前进的方向,但我对如何在 C# 中专门为图像实现它感到困惑。
如果我想测量图像的熵,我应该怎么做?
我的目标是在我的 C# 桌面应用程序中忽略诸如随风飘动的树叶之类的事情。
我知道 matlab 有这个功能,但我在 Emgu 中看不到它,这是我正在使用的。
我发现“香农熵”可能是前进的方向,但我对如何在 C# 中专门为图像实现它感到困惑。
您可能已经发现离散随机变量的熵由下式定义
其中是字母表的大小(即的可能值的数量),而是假设字母表中熵可以解释为通过观察获得的平均信息。
对于图像,您需要估计值。您可以通过计算图像的直方图来做到这一点:定义个(相等)灰度范围的 bin,并简单地计算每个 bin 的像素数。将每个 bin 的像素数除以像素总数可以估算出。然后你只需要将这些值代入 (1) 就可以得到图像的熵。
“如果我想测量图像的熵,我应该怎么做?”
一个很好的问题,截至 2016 年 9 月,它有一个简单且可直接计算的答案。
最近的 Stack Exchange 通信中回答了这个问题:
https://stats.stackexchange.com/questions/235270/entropy-of-an-image
最近的 arXiv 预印本中有详细的解释:
https://arxiv.org/abs/1609.01117
请注意,预印本包含指向 GitHub 实验源代码的链接。