我将扩展@metsburg的答案。有几种标准化图像(通常是数据矢量)的方法,在不同情况下方便使用:
数据规范化或数据(重新)缩放:将数据投影到预定义的范围内(即通常为[0, 1]
或[-1, 1]
)。当您拥有来自不同格式(或数据集)的数据并且想要对所有数据进行规范化时,这很有用,因此您可以对它们应用相同的算法。通常执行如下:
Inew = (I - I.min) * (newmax - newmin)/(I.max - I.min) + newmin
数据标准化是另一种标准化数据的方法(在机器学习中经常使用),其中均值减去图像并按其标准差进行划分。如果您打算将图像用作某种机器学习算法的输入,则这特别有用,因为它们中许多都表现得更好,因为它们假定特征具有mean=0,std=1
的高斯形式。它可以很容易地执行为:
Inew = (I - I.mean) / I.std
数据拉伸或(使用图像时进行直方图拉伸)称为选项2。通常将图像钳位到最大值和最小值,设置为:
Inew = I Inew[I < a] = a Inew[I > b] = b
此处,低于a
图像值设置为a
,与b
相反地发生。通常,将a
和b
的值计算为百分比阈值。 a
=分隔数据底部1%的阈值, b
=分隔数据顶部1%的阈值。这样,您就可以从图像中去除离群值 ( 噪点 )。这类似于( 更简单 ) 直方图均衡 ,这是另一个使用的预处理步骤。
数据归一化也可以参考向量相对于范数( l1范数或l2 / euclidean范数 )的归一化。实际上,这被翻译为:
Inew = I / ||I||
||I||
符合I
的规范 。
如果将范数选择为l1
范数,则图像将除以其绝对值的和,从而使整个图像的和等于1
。如果范数被选择去是l2
(或欧氏),然后图像通过的平方值的总和除以I
,使得平方值的总和I
是等于1
。
前3个广泛用于图像(不是3个,因为缩放和标准化是不兼容的,但是其中1个是缩放 +拉伸或拉伸或标准+拉伸 ),最后一个不是那么有用。它通常用作某些统计工具的预处理,但是如果您打算使用单个图像,则不会应用。
0
图像处理中归一化的正确含义是什么?我用谷歌搜索,但定义不同。我将尝试详细解释每个定义。
核矩阵的归一化
如果将规范化称为矩阵(例如卷积滤波器的内核矩阵),则通常将矩阵的每个值除以矩阵值的总和,以使矩阵值的总和等于1 (如果所有值都大于零)。这很有用,因为图像矩阵和我们的内核矩阵之间的卷积给出了输出图像,其值在0到原始图像的最大值之间。但是,如果我们使用sobel矩阵(具有一些负值),这将不再成立,我们必须拉伸输出图像以使所有值都介于0和最大值之间。
图像标准化
我基本上找到了标准化的两个定义。第一个是“削减”过高或过低的值。即,如果图像矩阵的值为负,则将其设置为零,如果图像矩阵的值大于最大值,则将其设置为最大值。第二个是线性拉伸所有值,以使其适合区间[0,最大值]。