【发布时间】:2019-04-12 14:20:03
【问题描述】:
为了直观地理解涉及计算、梯度、散度、拉普拉斯等的图像操作中所涉及的矢量、标量场,我试图将它们也绘制在所涉及的图像上。我从下面的渐变开始,但是
- 与下面的图像相比,旋转箭头组(看起来像这样)。我错过了什么?
- 另外,我如何很好地缩放它们?
MWE:
test_img = cv2.imread('images/ring.png', cv2.IMREAD_GRAYSCALE)
r, c = test_img.shape
gd = 15
test_slice = test_img[::gd,::gd] # every 15th point
X, Y = np.mgrid[0:r:gd, 0:c:gd]
dY, dX = np.gradient(test_slice)
plt.figure(figsize=(10,10))
plt.quiver(X, Y, dX, dY, color='y')
plt.imshow(test_img, cmap='gray')
plt.show()
输出:
所需样式:(取而代之的是带有图像的矢量场):
使用的示例图片: link
注意:我最初使用的是 png,然后 alpha 区域给出了 nan,所以现在我上传了 jpg。
【问题讨论】:
-
我觉得你应该看看这个post
-
正如我所说,那些帖子正在处理 (x,y) 函数,然后在顶部覆盖 quiver。相反,我想使用图像。我找不到任何使用图像的 SO 帖子,并绘制了它的梯度向量。
-
如果没有原始数据集,很难验证——你能上传你的 ring.png 吗?
-
哦,当然。对于那个很抱歉。我刚刚上传。
标签: python numpy matplotlib gradient calculus