如何在Matlab中没有规范化数据的情况下计算图像直方图

时间:2017-06-19 17:43:43

标签: matlab image-processing histogram normalization

我有一个图像I,其像素强度落在0-1的范围内。我可以通过归一化来计算图像直方图,但我发现曲线与原始数据的直方图不完全相同。这将导致后期峰值发现过程出现一些问题(参见附图中的两幅图像)。 Histogram of Raw data, only 1 peak has been found on the histogram Histogram of Normalized data,2 peaks has been found on the histogram

我的问题是在Matlab中,有没有什么方法可以绘制图像直方图而不对数据进行归一化,这样我就可以保持曲线形状不变?当像素强度不在0-1范围内时,这将有利于那些原始图像。目前,如果我没有规范化数据,我无法计算他们的直方图。

附加了规范化和直方图计算的Matlab代码。任何建议将不胜感激!

h = imhist(mat2gray(I));

2 个答案:

答案 0 :(得分:0)

Documentation of imhist告诉我们该函数检查输入的数据类型并相应地缩放值。因此,如果不使用附加数据进行测试,这可能有效:

h = imhist(uint8(I));

另外,您可以使用mat2gray的参数

将整数表示缩放为浮动表示。
h = imhist(mat2gray(I, [0,255]));

或者只是分开它。

h = imhist(I/255);

答案 1 :(得分:0)

这个描述规范化或转换的线程的模糊答案是完全正确的。或者,您可以在MATLAB中使用直方图函数,该函数将使用非标准化浮点数据:

A = 255*rand(500,500);
histogram(A);