【问题标题】:How to access the inner and outer pixels of a circle ROI on an image?如何访问图像上圆形 ROI 的内部和外部像素?
【发布时间】:2022-01-07 00:11:53
【问题描述】:

我正在尝试解决一个问题,并且非常纠结于如何解决它。我有一张图片,我想获取感兴趣的圆形区域内的所有像素。

圆的半径为 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

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

任何想法或提示将不胜感激。

【问题讨论】:

  • “获取像素”的目的是什么?目的决定了你的圈子的代表性。用图片表达你的意思。这是最简单的。
  • 不要被问题的字面回答分心。对于您真正想做的事情,它们可能效率低下或无用。 xyproblem.info
  • 不等式 (x-a)²+(y-b)²≤r² 告诉您内部和内部的像素。对于第 y 行,|x-a|≤√(r²-(y-b)²) 告诉您 x 的范围(前提是平方根的参数是非负的)。
  • 目的是用直方图分析像素强度
  • 这里是简单的例子stackoverflow.com/a/59302130/2836621

标签: python image-processing geometry pixel roi


【解决方案1】:

不等式(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) 的水平线

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    • 2023-03-23
    • 1970-01-01
    • 2014-05-21
    相关资源
    最近更新 更多