我有一个图像I
,其像素强度落在0-1的范围内。我可以通过归一化来计算图像直方图,但我发现曲线与原始数据的直方图不完全相同。这将导致后期峰值发现过程出现一些问题(参见附图中的两幅图像)。
我的问题是在Matlab中,有没有什么方法可以绘制图像直方图而不对数据进行归一化,这样我就可以保持曲线形状不变?当像素强度不在0-1范围内时,这将有利于那些原始图像。目前,如果我没有规范化数据,我无法计算他们的直方图。
附加了规范化和直方图计算的Matlab代码。任何建议将不胜感激!
h = imhist(mat2gray(I));
答案 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);