python - 从掩码矩阵(连续圆)中提取边缘值
问题描述
以下代码在 2D 空间中绘制了一个圆,其中仅显示圆的边缘值。如果我有兴趣专门使用与使用当前代码显示的单元格相邻的单元格创建一个更小(或更大)的圆圈,我是否只需要更改该行的索引z = np.diff(z,axis=0)[:,1:]+np.diff(z)[1:]
?
我在这里意识到我可以简单地更改圆半径,cr
但是在我在这个最小可重现示例之外使用的代码中,我没有明确考虑圆半径,并且在这个示例中只制作了一个圆以使事情变得更容易。有没有办法提取和可视化当前代码的边界单元格?
import numpy as np
import matplotlib.pyplot as plt
z = np.zeros((296,296))
# specify circle parameters: centre ij and radius
ci,cj=150,150
cr=90
# Create index arrays to z
I,J=np.meshgrid(np.arange(z.shape[0]),np.arange(z.shape[1]))
# calculate distance of all points to centre
dist=np.sqrt((I-ci)**2+(J-cj)**2)
# Assign value of 1 to those points where dist<cr:
z[np.where(dist<cr)]=1
z = np.diff(z,axis=0)[:,1:]+np.diff(z)[1:]
z[z!=0] = 1
# show result in a simple plot
fig=plt.figure()
ax=fig.add_subplot(111)
ax.pcolormesh(z)
ax.set_aspect('equal')
plt.show()
解决方案
推荐阅读
- docker - 如何更改在 docker 下运行的 Logstash 的默认 URL?
- java - 在 liquibase 脚本中使列不可为空
- python - 如何在 TensorFlow 中将 NumPy 数组转换为 MapDataset
- postgresql - 通过调用从 azure-web-app-service 中的数据库获取数据的任何路由获取 500 错误
- python - 如何覆盖文件?
- http - Sharepoint:底层连接已关闭:发送时发生意外错误。但并非总是
- c# - 如何获取存储在 Xamarin 首选项中的所有首选项?
- ruby-on-rails - 将表上的列引用到另一个表上的列 Ruby on Rails
- sqlite - 访问 SQLite 查询的抽象语法树 (AST)
- reactjs - RN FastImage react-native-fast-image 失败并出现错误“Generatedappglidemodule impl 实施不正确”