归一化图像直方图

时间:2014-11-18 12:38:40

标签: matlab histogram normalization

我在MATLAB中有一个RGB图像m

IMG http://i62.tinypic.com/2nqy5uv.jpg

我使用公式

对其进行了标准化
im = mean(m,3);
im = (im-min(im(:))) / (max(im(:))-min(im(:)));

我读到标准化模块拉伸图像像素值以覆盖整个像素值范围(0-1)但我在标准化图像的直方图中仍然有0到1之间的一些步骤。

enter image description here

任何人都可以通过解释这些灰度值的原因来帮助我。

谢谢

1 个答案:

答案 0 :(得分:2)

我假设您使用三个组件的平均值而不是函数rgb2gray,因为它在您的情况下具有一些优势。 (rgb2gray执行类似的操作:它使用加权和)。

减去最小值并除以最大值并不会将图像转换为二进制。它只会将所有值缩放到范围(0,1),这在您的示例中就是这种情况。这仅表示所有值介于 0和1之间,而不是完全为0或1.如果需要二进制图像,即仅为0和1,则需要使用阈值来转换灰度图像二进制。

经常使用的方法是使用Otsu的方法计算阈值:

threshold = graythresh(im);            % calculate threshold
binaryImage = im2bw(im,threshold);     % convert image to binary

如果您的图片保存为uint8,则规范化图片应将图片转换为二进制,因为uint8只能处理整数,而且之间的任何数字都是四舍五入的。这意味着您假设最佳阈值为0.5。