我正在开发一个程序,允许用户在一个“涂鸦区域”中绘制数字,并通过按下按钮,使用神经网络分类器预测用户输入的数字。
现在,为了训练神经网络,我使用了MNIST数据库,该数据库规定如下:“来自NIST的图像被大小归一化为20×20像素的框内,同时保持其纵横比[…]通过计算像素的质心,将图像居中放置在一个28×28的图像中”。
我面临的问题是,在将用户在涂鸦区域绘制的数字调整到20×20的大小时,我需要计算像素的质心,以便将其居中放置在28×28的图像中间。
我该如何计算呢?
回答:
“质心”(对于二值图像来说)是一种复杂的方式来表达“各维度的平均值”。换句话说,取所有x坐标的平均值 – 你就得到了“质心”的x坐标,同样的方法用于y坐标。
在Python中,对于X
中的数据,它将是
center_of_mass = X.mean(axis=0)
如果你有像素的强度,你可以将它们用作“权重”,从而得到加权平均值,仅此而已。