You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将一阶图像矩m01、m10置零以实现Zernike矩平移不变性?实操困惑

Zernike矩平移不变性实现的疑问与理解误区

论文《Invariant image recognition by Zernike moments》指出:“平移不变性可通过将图像转换为一阶矩m01和m10均为零的新图像来实现。具体做法是将原始图像f(x,y)转换为f(x+X, y+J),其中X和J是由原始矩M10、M01和M00计算得到的原始图像质心位置。换句话说,在计算矩之前将原点移至质心。”

我在9x9的零数组中绘制了一个3x3的全1方块:

[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[1. 1. 1. 0. 0. 0. 0. 0. 0.]
[1. 1. 1. 0. 0. 0. 0. 0. 0.]
[1. 1. 1. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]

计算得到矩:M00=9.0,M10=9.0,M01=27.0,因此质心(x,y)=(1.0,3.0)。

我尝试将形状沿x方向平移+1、y方向平移+3,得到变换后的图像:

[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 1. 1. 1. 0. 0. 0.]
[0. 0. 0. 1. 1. 1. 0. 0. 0.]
[0. 0. 0. 1. 1. 1. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0.]

计算变换后图像的矩:M00=9.0,M10=36.0,M01=36.0,质心(x,y)=(4.0,4.0)。

结果中M10和M01相等但不为零,且目标已位于数组中心。我意识到只有图像中无像素时M10或M01才会为零,因为M10是所有f(x,y)=1处x坐标的总和,M01是对应y坐标的总和。

现在有两个疑问:

  • 如果对图像集中的每张图像都应用此流程,即使矩未归零,是否已正确完成归一化?
  • 若未正确归一化,我在理解论文方法时存在哪些误区?

演示代码

import numpy as np
import cv2

image = np.zeros([9,9])

image[2,0] = 1
image[3,0] = 1
image[4,0] = 1
image[2,1] = 1
image[3,1] = 1
image[4,1] = 1
image[2,2] = 1
image[3,2] = 1
image[4,2] = 1

print(image)

M = cv2.moments(image)
m00 = M['m00']
m10 = M['m10']
m01 = M['m01']
x = m10 / m00
y = m01 / m00
print(M)
print(f"centroid is {x},{y}")

image_2 = np.zeros([9,9])

image_2[3,3] = 1
image_2[4,3] = 1
image_2[5,3] = 1
image_2[3,4] = 1
image_2[4,4] = 1
image_2[5,4] = 1
image_2[3,5] = 1
image_2[4,5] = 1
image_2[5,5] = 1

print(image_2)
M = cv2.moments(image_2)
m00 = M['m00']
m10 = M['m10']
m01 = M['m01']
x = m10 / m00
y = m01 / m00
print(M)
print(f"centroid is {x},{y}")

内容的提问来源于stack exchange,提问作者ORead15

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 13:47:03