【发布时间】:2018-04-17 17:41:23
【问题描述】:
我有一张图像,我正在尝试沿着圆形路径计算线积分(总和)。我的想法是:
- 计算循环路径以求和
- 根据路径屏蔽图像,其中除了与路径重合的任何像素之外的所有内容都被清零。
- 对所有图像像素求和
我目前被困在第一步和第二步之间,我不知道如何在与图像相同的网格上生成一个圆圈。
在代码中:
from scipy.stats import multivariate_normal
radius = 2
# Draw arbitrary image
x, y = np.mgrid[-5:5:.1, -5:5:.1]
img = multivariate_normal.pdf(np.dstack((x, y)), cov=[[1, 0.7], [0.7, 1]])
# generate circle with desired radius
circle = radius*np.exp(1j*np.linspace(-np.pi, np.pi, 100))
pyplot.pcolormesh(x, y, img)
pyplot.plot(np.real(circle), np.imag(circle), '-w')
pyplot.show()
问题:
如何使用圆圈来掩盖与该圆圈重合的图像像素?
【问题讨论】:
-
您可以使用中点圆算法生成圆坐标。 link 然后:
np.sum(image[circle_coordinates]) -
@Brenlla 我认为正确的是必须考虑不同像素的不同路径长度。例如,
(1/sqrt(2), 1/sqrt(2))处的像素的权重应该是sqrt(2)的倍数,是(1, 0)处的像素(假设为radius=1)。
标签: python numpy mask calculus