如何使用Python除去闭合曲线外的无关点

如何使用Python除去闭合曲线外的无关点,python,opencv,image-processing,smoothing,Python,Opencv,Image Processing,Smoothing,我试图“缩小”外边界(红色)的大小,即沿图像边缘的一组像素。我已经用法向量缩小了边界,在外边界内有一组距离一定的点。但是,我可以去掉很多点,使内边界(蓝色)更平滑。那么,我该如何去除这些无关的点呢 我试着把所有的东西都转换成极坐标,然后在0到2pi的每一个pi/60弧度的间隔中取离图像中心最近的点。然而,我意识到这对像回飞棒形状这样的东西不起作用,在回飞棒形状中,有两点我希望保持在pi/60区间 polarShrunk是转换为极坐标的收缩点集 cell_img是一种对象,使用distanceB

我试图“缩小”外边界(红色)的大小,即沿图像边缘的一组像素。我已经用法向量缩小了边界,在外边界内有一组距离一定的点。但是,我可以去掉很多点,使内边界(蓝色)更平滑。那么,我该如何去除这些无关的点呢

我试着把所有的东西都转换成极坐标,然后在0到2pi的每一个pi/60弧度的间隔中取离图像中心最近的点。然而,我意识到这对像回飞棒形状这样的东西不起作用,在回飞棒形状中,有两点我希望保持在pi/60区间

polarShrunk是转换为极坐标的收缩点集 cell_img是一种对象,使用distanceBetween方法查找两点之间的距离,使用findMoments方法查找图像二值化为黑白时的“重心”。pol2cart将极坐标转换为笛卡尔坐标

i = 0
smoothArray = []
for x in range(120):
    i += 1
    theta1 = (i - 1)*np.pi/60
    theta2 = i*np.pi/60
    simAnglePoints = []
    for y in polarShrunk:
        if (y[0] < theta2) and (y[1] > theta1):
            simAnglePoints.append(y)
    closestPoint = np.array([10000, 10000])
    for z in np.array(simAnglePoints):
        if cell_img.distanceBetween(np.array(cell_img.pol2cart(z)), cell_img.findMoments) < cell_img.distanceBetween(closestPoint, cell_img.findMoments):
            closestPoint = z
    smoothArray.append(closestPoint)
i=0
smoothArray=[]
对于范围(120)内的x:
i+=1
θ=(i-1)*np.pi/60
θ2=i*np.pi/60
simAnglePoints=[]
对于polarShrunk中的y:
如果(y[0]theta1):
simAnglePoints.append(y)
closestPoint=np.array([10000,10000])
对于np.数组中的z(simAnglePoints):
如果cell img.DistanceBeween(np.array(cell img.pol2cart(z)),cell img.findMoments)
我只想要沿着我在图片上画的黑线的点,并从polarShrunk数组中去掉所有其他点


任何帮助都将不胜感激!我真的只需要一种方法来解决这个问题,我想自己弄清楚如何在Python中实现这种方法。

似乎您想要检测并删除大纲视图。有许多文章描述了实现这一点的不同技术,例如。