我正在使用一种算法来检测不规则对象中的对称性,我只使用Python和numpy和matplotlib,不可能使用OpenCv,在我沿着主轴旋转对象之后,我得到了类似于rotated image
然后我写了一个计算水平对称性和垂直对称性的算法,并求出两者的平均值:
定义对称性(自身,材质):
mat是我的二值图像点的坐标矩阵
coords = np.around(mat) #coordinates are rounded
i, j = coords.shape
x, y = coords
horizontal = 0
vertical = 0
for k in range(j):
for m in range(k, j):
if(x[k] == x[m] and y[k] == -y[m]):
horizontal += 1
if((x[k] == -x[m] and y[k] == y[m]):
vertical += 1
symmetry = (horizontal + vertical)/ j
print('The symmetry index is:')
print(symmetry)
return
因为我想评估对称计数,如果每个像素都有一个对应的水平轴和垂直轴,我把坐标四舍五入为整数,问题是如果我用一个圆测试我的算法,我期望完美对称,我得到大约0.5,最大值应该是1。 有人能建议一个更好的度量来评估这种情况下的对称性,或者改进我的代码,在你看来我的解决方案应该行得通吗?在
目前没有回答
相关问题 更多 >
编程相关推荐