Python中图像的对称性检测

2024-03-28 13:02:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一种算法来检测不规则对象中的对称性,我只使用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。 有人能建议一个更好的度量来评估这种情况下的对称性,或者改进我的代码,在你看来我的解决方案应该行得通吗?在


Tags: and对象in算法forif水平range