我有一个图像,想要拉出属于中点(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])