【问题标题】:Image Parameters (Standard Deviation, Mean and Entropy) of an RGB Image with pixel randomness/irregularities具有像素随机性/不规则性的 RGB 图像的图像参数(标准偏差、均值和熵)
【发布时间】:2015-10-04 11:59:33
【问题描述】:

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

Matlab 是如何解释函数的:

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

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

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

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

问题:

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

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

【问题讨论】:

    标签: image rgb pixels entropy


    【解决方案1】:

    不确定您所说的“不规则性”是什么意思,但我可以证明,当您使用 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
    

    【讨论】:

    • 谢谢你,有人告诉我这件事让我很困扰。请问您是如何获得彩色图像的熵的?
    • 计算 R、G 和 B 的每个通道的熵,然后取平均值。
    • 我可以使用每个通道的香农熵然后取平均值吗?我打算使用python来获取熵。你能推荐一个好的方法来编程获取彩色图像的熵吗?
    • 很抱歉,您在触动我的知识极限。也许 Eric 会有一些想法 - @emcconville
    • 或者@YvesDaoust 可能有时间。
    【解决方案2】:

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

    试试吧

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2021-08-08
      • 2018-04-01
      相关资源
      最近更新 更多