【问题标题】:Make histogram of pixel intensities without imhist制作没有 imhist 的像素强度直方图
【发布时间】:2017-03-31 08:22:58
【问题描述】:

我使用unique 命令从我的图像中获取独特的像素强度。然后我尝试使用它们制作直方图,但它没有使用所有强度值

I = imread('pout.tif');
[rows, columns] = size(I);
UniquePixels=unique(I);
hist=histogram(UniquePixels)

【问题讨论】:

  • hist=histogram(I(:),UniquePixels)UniquePixels 只是唯一的像素
  • 第二个参数的目的是什么?
  • 它的直方图 bin 边缘。或者,您可以执行hist=histogram(I(:),0:255),这将为图像中不存在的每个值提供 0

标签: matlab histogram


【解决方案1】:

另一种方法是将accumarrayunique 结合使用。我会专门使用unique 的第三个输出将您的数据转换为从 1 到N 的连续序列,其中N 是唯一强度的总数,然后利用unique 的第一个输出将给出你独特的强度列表。因此,如果unique 的第一个输出是Aaccumarray 的输出是B,则效果是在位置B(i),这给出了A(i) 的强度总数。

因此:

[UniquePixels, ~, id] = unique(I);
histo = accumarray(id, 1);

UniquePixels 为您提供所有唯一像素,而histo 为您提供与UniquePixels 中的每个元素对应的每个唯一像素的计数。

这是一个简单的例子:

>> I = randi(255, 10, 10)

I =

    42   115    28   111   218   107   199    60   140   237
   203    22   246   233   159    13   100    91    76   198
    80    59     2    47    90   231    62   210   190   125
   135   233   198    68   131   241   103     4    49   112
    43    39   209    38   103   126    25    11   176   114
   154   211   222    35    20   125    34    44    47    79
    68   138    22   222    62    87   241   166    94   130
   167   255   102   148    32   230   244   187   160   131
   176    20    67   141    47    95   147   166   199   209
   191   113   205    37    62    29    16   115    21   203

>> [UniquePixels, ~, id] = unique(I);
>> histo = accumarray(id, 1);
>> [UniquePixels histo]

ans =

     2     1
     4     1
    11     1
    13     1
    16     1
    20     2
    21     1
    22     2
    25     1
    28     1
    29     1
    32     1
    34     1
    35     1
    37     1
    38     1
    39     1
    42     1
    43     1
    44     1
    47     3
    49     1
    59     1
    60     1
    62     3
    67     1
    68     2
    76     1
    79     1
    80     1
    87     1
    90     1
    91     1
    94     1
    95     1
   100     1
   102     1
   103     2
   107     1
   111     1
   112     1
   113     1
   114     1
   115     2
   125     2
   126     1
   130     1
   131     2
   135     1
   138     1
   140     1
   141     1
   147     1
   148     1
   154     1
   159     1
   160     1
   166     2
   167     1
   176     2
   187     1
   190     1
   191     1
   198     2
   199     2
   203     2
   205     1
   209     2
   210     1
   211     1
   218     1
   222     2
   230     1
   231     1
   233     2
   237     1
   241     2
   244     1
   246     1
   255     1

如果您仔细检查输入示例和最终输出,您将看到仅显示唯一像素及其计数。不显示任何计数为零的 bin。

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    相关资源
    最近更新 更多