使像素强度的直方图没有模糊

时间:2017-03-31 08:22:58

标签: matlab histogram

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

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

enter image description here

1 个答案:

答案 0 :(得分:0)

另一种方法是将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

如果仔细检查输入示例和最终输出,您将看到只显示唯一像素与其计数一起显示。任何计数为零的箱都不会显示。