使用python在给定中点和半径的圆上提取(有序)像素值

时间:2016-12-05 12:15:07

标签: python opencv image-processing

我有一个图像,想要拉出属于中点(Mx,My)周围半径为r的圆的像素强度。 关键部分是构建坐标列表(x,y),用于定义查找圆的周长。我修改了midpoint circle algorithm from rosetta的版本,但圆圈上的点没有排序。有没有一种聪明的方法来获取可用于查找图像中强度值的坐标列表?理想情况下避免numpy,因为我必须在没有它的情况下实现它(但我可以使用openCV)。

。一旦我有了坐标,任何可以加速图像值查找的提示也会受到赞赏。

这是我的无序列表代码:

def circle(x0, y0, radius):
    f = 1 - radius
    ddf_x = 1
    ddf_y = -2 * radius
    x = 0
    y = radius

    clist=[]

    while x < y:
        if f >= 0: 
            y -= 1
            ddf_y += 2
            f += ddf_y
        x += 1
        ddf_x += 2
        f += ddf_x    
        clist.append([x0 + x, y0 + y])
        clist.append([x0 - x, y0 + y])
        clist.append([x0 + x, y0 - y])
        clist.append([x0 - x, y0 - y])
        clist.append([x0 + y, y0 + x])
        clist.append([x0 - y, y0 + x])
        clist.append([x0 + y, y0 - x])
        clist.append([x0 - y, y0 - x])
    return clist

c=circle(10,10,5)    
for i in range(len(c)):
    plt.plot(c[i][0],c[i][1],'o',color=[i/50.0,1-i/50.0,1])

0 个答案:

没有答案