灰度图像中像素的质心

center of mass of pixels in grayscale image

我正在开发一个程序,让用户在 "scribbling area" 中绘制一个数字,然后按下按钮,应用程序将使用神经网络分类器预测他输入的数字。

现在,为了训练神经网络,我使用了指定以下内容的 MNIST 数据库:"images from NIST were size normalized to fit in a 20x20 pixel box while preserving their aspect ratio [...] the images were centered in a 28 x 28 image by computing the center of mass of the pixels"。

我面临的问题是,在将用户在涂鸦区域中绘制的数字调整为 20 x 20 后,我需要计算像素的质心,以便将其居中在 28 x 28 图像的中间。

我该如何计算?

"Center of mass"(对于二进制图像)是一种有点复杂的说法 "mean value across each dimension"。换句话说 - 取所有 x 坐标并取它们的平均值 - 你得到你的 "center of mass" 的 x 坐标,y 也一样。

在 python 中,对于 X 中的数据,它将是

center_of_mass = X.mean(axis=0)

如果你有像素的强度,你可以将它们用作 "weights" 从而导致加权平均值,仅此而已。

来,让我search that为你...

您将与平均值的距离乘以每个像素的权重 - 几乎可以肯定您的工作是 1.0。总之,取所有x坐标的平均值和所有y坐标的平均值;给你质心。