graycomatrix 的 NumLevels 和 GrayLimits 是同一个东西 MATLAB

Is graycomatrix's NumLevels and GrayLimits the same thing MATLAB

我一直在考虑使用 graycomatrix 在 MATLAB 中实现 GLCM。我发现了两个论点(NumLevelsGrayLimits),但在我的研究和实施中,它们似乎取得了相同的结果。

GrayLimits 在范围集 [low high] 之间指定了 bin,导致灰度级集受限。

NumLevels 声明图像中的灰度级数。

谁能解释一下这两个参数之间的区别,因为我不明白为什么会有两个参数达到相同的结果。

来自the documentation

'GrayLimits': Range used scaling input image into gray levels, specified as a two-element vector [low high]. If N is the number of gray levels (see parameter 'NumLevels') to use for scaling, the range [low high] is divided into N equal width bins and values in a bin get mapped to a single gray level.

'NumLevels': Number of gray levels, specified as an integer.

因此,第一个参数设置要使用的输入灰度级范围(默认为图像中的最小值和最大值),第二个参数设置考虑的唯一灰度级数(以及因此的大小输出矩阵,默认为 8,或二值图像为 2)。

例如:

>> graycomatrix(img,'NumLevels',8,'GrayLimits',[0,255])
ans =
       17687        1587          81          31           7           0           0           0
        1498        7347        1566         399         105           8           0           0
          62        1690        3891        1546         298          38           1           0
          12         335        1645        4388        1320         145           4           0
           2          76         305        1349        4894         959          18           0
           0          16          40         135         965        7567         415           0
           0           0           0           2          15         421        2410           0
           0           0           0           0           0           0           0           0

>> graycomatrix(img,'NumLevels',8,'GrayLimits',[0,127])
ans =
           1           9           0           0           0           0           0           0
           7       17670        1431         156          50          31          23          15
           1        1369        3765         970         350         142          84          92
           0         128        1037        1575         750         324         169         167
           0          46         361         836        1218         747         335         260
           0          16         163         330         772        1154         741         547
           0          10          74         150         370         787        1353        1208
           0           4          67         136         294         539        1247       21199

>> graycomatrix(img,'NumLevels',4,'GrayLimits',[0,255])
ans =
       28119        2077         120           0
        2099       11470        1801           5
          94        1829       14385         433
           0           2         436        2410

如您所见,这些参数以不同的方式修改输出:

  1. 在上面的第一种情况下,范围 [0,255] 被映射到 columns/rows 1-8,将 32 个不同的输入灰度值放入每个。
  2. 第二种情况,较小的范围[0,127]被映射到8个索引,每个索引放入16个不同的输入灰度值,其余灰度值128-255放入第8个索引
  3. 在第三种情况下,范围 [0,255] 被映射到 4 个索引,每个索引放入 64 个不同的输入灰度值。