图像处理中的归一化

gvg*_*zio 7 image-processing normalization

图像处理中归一化的正确平均值是多少?我用谷歌搜索,但我有不同的定义.我将尝试详细解释每个定义.

核矩阵的规范化

如果将归一化称为矩阵(例如用于卷积滤波器的核矩阵),则通常将矩阵的每个值除以矩阵的值的总和,以使矩阵的值的总和等于1 (如果所有值都大于零).这很有用,因为图像矩阵和我们的核矩阵之间的卷积给出的输出图像的值介于0和原始图像的最大值之间.但是如果我们使用sobel矩阵(具有一些负值),那就不再适用了,我们必须拉伸输出图像,以使所有值都在0和最大值之间.

图像的标准化

我基本上找到了两个规范化的定义.第一个是"削减"过高或过低的值.即,如果图像矩阵具有负值,则将它们设置为零,并且如果图像矩阵具有高于最大值的值,则将它们设置为最大值.第二个是线性拉伸所有值,以使它们适合区间[0,max value].

Ima*_*ngo 15

我将从@metsburg得到一些答案.有几种方法可以对图像进行标准化(通常是数据向量),这些方法可以方便地用于不同的情况:

  • 数据标准化或数据(重新)缩放:将数据投影到预定范围(即通常[0, 1][-1, 1]).当您拥有来自不同格式(或数据集)的数据并希望对所有数据进行规范化以便您可以对它们应用相同的算法时,这非常有用.通常执行如下:

    Inew = (I - I.min) * (newmax - newmin)/(I.max - I.min)  + newmin
    
    Run Code Online (Sandbox Code Playgroud)
  • 数据标准化是对数据进行标准化的另一种方式(在机器学习中大量使用),其中均值被减去图像并由其标准偏差分类.如果您要将图像用作某些机器学习算法的输入,这是特别有用的,因为它们中的许多都表现得更好,因为它们假设具有高斯形式的特征mean=0,std=1.它可以很容易地执行:

    Inew = (I - I.mean) / I.std
    
    Run Code Online (Sandbox Code Playgroud)
  • 数据拉伸或(使用图像时的直方图拉伸)被视为您的选项2.通常将图像钳制到最小值和最大值,设置:

    Inew = I
    Inew[I < a] = a
    Inew[I > b] = b
    
    Run Code Online (Sandbox Code Playgroud)

    这里,低于a设定的图像值a,并且相反地发生b.通常情况下,值ab计算的百分比阈值.a=分隔底部1%数据的阈值和b=分隔前1%数据的thredhold.通过这样做,您将从图像中删除异常值(噪音).这与直方图均衡相似(更简单),这是另一个使用的预处理步骤.

  • 数据归一化也可以参考关于范数(l1范数l2 /欧几里德范数)的向量的归一化.实际上,这被翻译为:

    Inew = I / ||I||
    
    Run Code Online (Sandbox Code Playgroud)

    其中||I||refeers到规范I.

    如果规范被选择为l1常态,则图像将被其绝对值的总和除以,使得整个图像的总和等于1.如果选择范数l2(或欧几里德),则将图像除以平方值之和I,使平方值之I和等于1.

前3个广泛用于图像(不是其中3个,因为缩放标准化是不兼容的,但其中1个或缩放+拉伸标准化+拉伸),最后一个没有那么有用.它通常用作某些统计工具的预处理,但如果您计划使用单个图像则不会.

  • 这是对的吗 ?`Inew = (I - I.min) * (newmax - newmin) / (I.max - I.min) + newmin` (2认同)