Scikit-image 和中心矩:什么意思?
Scikit-image and central moments: what is the meaning?
在寻找如何使用图像处理工具处理 "describe" 图像和任何类型的形状的示例时,我偶然发现了 Scikit-image skimage.measure.moments_central(image, cr, cc, order=3)
函数。
他们给出了如何使用此功能的示例:
from skimage import measure #Package name in Enthought Canopy
import numpy as np
image = np.zeros((20, 20), dtype=np.double) #Square image of zeros
image[13:17, 13:17] = 1 #Adding a square of 1s
m = moments(image)
cr = m[0, 1] / m[0, 0] #Row of the centroid (x coordinate)
cc = m[1, 0] / m[0, 0] #Column of the centroid (y coordinate)
In[1]: moments_central(image, cr, cc)
Out[1]:
array([[ 16., 0., 20., 0.],
[ 0., 0., 0., 0.],
[ 20., 0., 25., 0.],
[ 0., 0., 0., 0.]])
1)每个值代表什么?由于(0,0)元素是16,所以我得到这个数对应1的平方的面积,因此它是 mu 零零零。但是其他人呢?
2) 这总是对称矩阵吗?
3) 与著名的二阶中心矩相关的值是什么?
measure.moments_central
返回的数组对应https://en.wikipedia.org/wiki/Image_moment的公式(截面中心矩)。 mu_00确实对应物体的面积
惯性矩阵并不总是对称的,如本例所示,其中对象是矩形而不是正方形。
>>> image = np.zeros((20, 20), dtype=np.double) #Square image of zeros
>>> image[14:16, 13:17] = 1
>>> m = measure.moments(image)
>>> cr = m[0, 1] / m[0, 0]
>>> cc = m[1, 0] / m[0, 0]
>>> measure.moments_central(image, cr, cc)
array([[ 8. , 0. , 2. , 0. ],
[ 0. , 0. , 0. , 0. ],
[ 10. , 0. , 2.5, 0. ],
[ 0. , 0. , 0. , 0. ]])
至于二阶矩,分别是mu_02、mu_11、mu_20(对角线上的系数i+j=1)。同一维基百科页面 https://en.wikipedia.org/wiki/Image_moment 解释了如何使用二阶矩来计算对象的方向。
在寻找如何使用图像处理工具处理 "describe" 图像和任何类型的形状的示例时,我偶然发现了 Scikit-image skimage.measure.moments_central(image, cr, cc, order=3)
函数。
他们给出了如何使用此功能的示例:
from skimage import measure #Package name in Enthought Canopy
import numpy as np
image = np.zeros((20, 20), dtype=np.double) #Square image of zeros
image[13:17, 13:17] = 1 #Adding a square of 1s
m = moments(image)
cr = m[0, 1] / m[0, 0] #Row of the centroid (x coordinate)
cc = m[1, 0] / m[0, 0] #Column of the centroid (y coordinate)
In[1]: moments_central(image, cr, cc)
Out[1]:
array([[ 16., 0., 20., 0.],
[ 0., 0., 0., 0.],
[ 20., 0., 25., 0.],
[ 0., 0., 0., 0.]])
1)每个值代表什么?由于(0,0)元素是16,所以我得到这个数对应1的平方的面积,因此它是 mu 零零零。但是其他人呢?
2) 这总是对称矩阵吗?
3) 与著名的二阶中心矩相关的值是什么?
measure.moments_central
返回的数组对应https://en.wikipedia.org/wiki/Image_moment的公式(截面中心矩)。 mu_00确实对应物体的面积
惯性矩阵并不总是对称的,如本例所示,其中对象是矩形而不是正方形。
>>> image = np.zeros((20, 20), dtype=np.double) #Square image of zeros
>>> image[14:16, 13:17] = 1
>>> m = measure.moments(image)
>>> cr = m[0, 1] / m[0, 0]
>>> cc = m[1, 0] / m[0, 0]
>>> measure.moments_central(image, cr, cc)
array([[ 8. , 0. , 2. , 0. ],
[ 0. , 0. , 0. , 0. ],
[ 10. , 0. , 2.5, 0. ],
[ 0. , 0. , 0. , 0. ]])
至于二阶矩,分别是mu_02、mu_11、mu_20(对角线上的系数i+j=1)。同一维基百科页面 https://en.wikipedia.org/wiki/Image_moment 解释了如何使用二阶矩来计算对象的方向。