首页 > 解决方案 > Python中图像中的对称检测

问题描述

我正在使用一种算法来检测不规则对象中的对称性,我只使用带有 nunmpy 和 matplotlib 的 Python,不可能使用 OpenCv,在我沿着主轴旋转我的对象后,我得到了类似旋转图像的东西

然后我写了一个算法来评估水平和垂直对称性并取两者的平均值:

def 对称性(自我,垫子):

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。有人可以建议一个更好的指标来评估这种情况下的对称性或改进我的代码,在您看来,我的解决方案应该有效吗?

标签: pythonpython-3.xnumpyimage-processingsymmetry

解决方案


推荐阅读