【问题标题】:Matlab Grayscale NormalizationMatlab灰度归一化
【发布时间】:2014-09-15 22:42:37
【问题描述】:

我是 matlab 和图像处理的新手,我在规范化时遇到了一些问题,但我不知道为什么。

在我的代码中,我将图像作为黑白图像存储在 lim3 中,然后:

minvalue = min(min(min(lim3)));
maxvalue = max(max(max(lim3)));
normimg = (lim3-minvalue)*255/(maxvalue-minvalue);

不幸的是,这给出了一个与 lim3 完全一样的新图像,但我不知道为什么。理想情况下,我不想使用 histeq 函数,所以如果有人能解释如何修复此代码以使其正常工作,我将不胜感激。

【问题讨论】:

  • 我不是要保存对 lim3 的更改,我希望制作一个新图像存储在 norming 中,尺寸与 lim3 相同
  • 你的图片lim3是什么数据类型?是双倍还是uint8
  • 你能给出 lim3 中的部分数据吗?是因为 lim3 中的值太接近了
  • 这些值是双倍的,它们都在零和一之间。我刚刚尝试将255替换为1,但结果是一样的。
  • 另外,你说的图片完全一样是什么意思?相同的实际数字?或者当你查看它时看起来一样?因为您用于查看图像的任何工具都可能足够聪明,可以知道您的图像是否具有 0-1 或 0-255 范围内的值并相应地缩放它们

标签: matlab image-processing


【解决方案1】:

上面所有的cmets都提出了很好的观点,但是如果你想要一个tl;dr的答案,这里是最重要的观点:

  1. 如果所有颜色通道的最小值和最大值分别为0255,这意味着最小和最大颜色值分别为黑色和白色。如果您的图像是单通道图像/灰度图像,情况也是如此。因此,如果您尝试对输出图像进行归一化,它将看起来与您乘以和除以相同的比例时相同。但是,请注意,如果您的图像是灰度,您的上述代码将有效。我还将摆脱多余的嵌套 min/max 调用。

  2. 在进行此缩放之前,您需要确保将图像转换为 double,因为您很可能会生成浮点数。如果您的比例为< 1,这将不经意间被截断为0。通常,当您尝试标准化强度时,您将失去精度,因为图像的类型很可能是uint8。您还需要记住在完成后转换回uint8,因为这是您转换之前图像的原始类型。您可以进行这种投射,也可以使用im2double,因为这基本上可以满足您的要求,但会将图像的强度标准化为[0,1] 的范围。


因此,如果您真的真的真的真的...真的...想要使用上面的代码,您必须执行以下操作:

lim3 = double(lim3); %// Cast to double
minvalue = min(lim3(:)); %// Note the change here
maxvalue = max(lim3(:)); %// Got rid of superfluous nested min/max calls
normimg = uint8((lim3-minvalue)*255/(maxvalue-minvalue)); %// Cast back to uint8

如果您正在阅读的图像是灰度,则此代码将起作用。


奖金 - 彩色图片

但是,如果您想将上述方法应用于彩色图像,我不建议您使用上述方法。原因是您只会看到差异如果每个颜色平面的最小值和最大值相同 - 分别为 0 和 255。我建议您做的是分别标准化每个颜色平面,以便您将每个颜色平面推到[0,1] 的范围内,而不是被绑定到一个颜色平面的最小值和最大值。

因此,我建议您这样做:

lim3 = double(lim3); %// Cast to double
normimg = uint8(zeros(size(lim3))); %// Allocate output image
for idx = 1 : 3
    chan = lim3(:,:,idx);
    minvalue = min(chan(:));
    maxvalue = max(chan(:));
    normimg(:,:,idx) = uint8((chan-minvalue)*255/(maxvalue-minvalue)); %// Cast back to uint8
end

以上代码分别访问每个颜色平面,对平面进行归一化,然后将结果放入输出图像normimg。如果您想查看彩色图像的对比度差异,我建议您使用上述方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 2023-03-05
    • 2017-01-21
    • 1970-01-01
    • 2015-07-25
    • 2011-02-26
    • 2023-03-13
    • 2013-03-30
    相关资源
    最近更新 更多