我偶然发现了一些关于如何使用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或其他图像处理程序中作为内置函数使用?
答案 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)