具有像素随机性/不规则性的RGB图像的图像参数(标准偏差,平均值和熵)

时间:2015-10-04 11:59:34

标签: image rgb pixels entropy

我偶然发现了一些关于如何使用matlab获取RGB图像熵的好解释。 Matlab提供了一个内置函数,允许使用-sum(p。* log2(p))获取灰度图像的熵。一个答案提供了如何获得此链接中给出的rgb图像的熵的方法---> https://stackoverflow.com/a/28239789/3995148

Matlab如何解释这个功能:

  <= E =熵(I)返回E,表示灰度图像I的熵的标量值。熵是随机性的统计度量,可用于表征输入图像的纹理。

     

熵定义为-sum(p。* log2(p))

     

其中p包含从imhist返回的直方图计数。默认情况下,entropy对逻辑数组使用两个bin,对uint8,uint16或double数组使用256个bin。

     

我可以成为一个多维图像。如果我有两个以上的维度,熵函数将其视为多维灰度图像而不是RGB图像。

问题:

熵是否​​考虑或检测图像不规则?例如,如果变量A包含IMAGE AA的熵,则变量B包含Alter的熵(IMAGE AA)。其中Alter是一种在图像内交换随机像素的函数。变量A和变量B是否包含熵值?假设两个图像包含相同的像素,但仅在图像中的位置不同。我需要澄清,因为我是这个话题的新手,

熵是否​​需要考虑图像不规则,为什么? 我需要用什么熵实现来覆盖图像不规则? 它是否可以在python或其他图像处理程序中作为内置函数使用?

2 个答案:

答案 0 :(得分:1)

不确定&#34;不规则&#34; 是什么意思,但是我可以显示当您旋转图像,使用ImageMagick水平或垂直翻转图像时,熵不会变化,因此如果你交换像素没关系:

# Check entropy of image
convert image.png -print '%[entropy]' null:
0.89247

# Rotate 90 degrees and check - still same
convert image.png -rotate 90 -print '%[entropy]' null:
0.89247

# Rotate 270 degrees and check - still same
convert image.png -rotate 270 -print '%[entropy]' null:
0.89247

# Flip image and check - still same
convert image.png -flip -print '%[entropy]' null:
0.89247

# Flop image and check - still same
convert image.png -flop -print '%[entropy]' null:
0.89247

您可以一次性检查标准偏差,平均值和熵:

 convert image.png -rotate 90 -verbose +identify null: | grep -Ei "entropy|deviation|mean" | tail -3
  image.png=> PNG 70x46=>46x70 46x70+0+0 8-bit sRGB 0.000u 0:00.000
  mean: 105.147 (0.412341)
  standard deviation: 59.4199 (0.233019)
  entropy: 0.89247

答案 1 :(得分:0)

matlab中有默认函数用于计算熵。

试试

I=imread('image name');
entropy(I)