如何访问图像上圆形 ROI 的内部和外部像素?

How to access the inner and outer pixels of a circle ROI on an image?

我正在尝试解决一个问题,但我对如何解决这个问题一头雾水。我有一张图片,我想获取感兴趣的圆圈区域内的所有像素。

圆的半径为150像素,ROI的圆心为[256, 256]。

我试图在图像上画圆圈,但找不到从中访问这些像素的方法。

img = imread('Model/m1.png') * 255
row = size(img, 0) #imgWidth
col = size(img, 1) #imgHeight
px = row * col

circle = Circle((256, 256), 150, fill = False)
fig, ax = subplots()
ax.add_patch(circle)
imshow(img, cmap='gray')
show()

我在想也许可以使用圆的方程: (x - a)**2 + (y - b)**2 == r**2

但我不太确定,因为那不会只给你圆边的像素吗?

如有任何想法或提示,我们将不胜感激。

不等式(x - a)**2 + (y - b)**2 <= r**2 允许遍历圆圈内的所有像素。

在实践中,您可以扫描从 b-rb+r 的 Y 坐标,然后遍历相应 X 范围的水平线 a - sqrt(r**2 - (y-b)**2) .. a + sqrt(r**2 - (y-b)**2)