python - 如何使用 scipy griddata 插入 32x32 图像的缺失像素值?
问题描述
我有一个 32x32 numpy 数组,表示一个图像,其中 50% 的值(即 512 像素)是 NaN。我想使用 scipy.interpolate 中的 griddata 函数来填充这些缺失值,以便我可以重建图像。
但是,我很难理解 griddata 函数以及如何准确地将我的图像数组传递给它。该函数的参数列在文档中,但我无法理解这些参数在我的数据上下文中的含义。
到目前为止,我所理解的是,该xi
参数指示了我想要插值的图像数组中的索引,我认为这将是 NaN 所在的所有位置。参数将values
是我的图像数组,但文档中提到的形状是(n,)
所以我必须展平数组吗?我真的不确定这个points
论点代表什么。
图像数组看起来像这样:
array([[[ nan, 79., nan, ..., nan, nan, 44.],
[ nan, 84., 45., ..., 48., 84., 44.],
[ nan, nan, 56., ..., 42., 66., 34.],
...,
[126., nan, nan, ..., 70., nan, 133.],
[135., 137., nan, ..., nan, nan, nan],
[142., nan, nan, ..., nan, nan, 151.]]])
欢迎大家提出意见。另外,有没有更好的方法来插入丢失的像素值?谢谢你。
解决方案
要回答有关 griddata 如何工作的问题:为了执行插值,您需要提供现有数据点(位置和值)和要插值的节点。现有数据点的位置对应于第一个关键字(点),而它们的值由第二个关键字(值)表示。想象一下,您要测量表面上的温度,然后点会为您提供测量的位置,而值会告诉您记录的相应温度。最后,第三个关键字 (xi) 包含您希望插入现有数据的点的坐标。通常,这将是一个结构化网格,必须包含在现有数据的空间范围内。这意味着,对于网格中的每个节点,
现在,对于如何实际插入数据,这个答案应该对您有所帮助。
推荐阅读
- javascript - Angular 8 - 删除 ng-component 标签 - 表格行模板
- android - 我正在制作应用程序并收到错误:包 android.support.v7.p033a.C0517a 不存在
- css - 有没有办法用css使背景图像的部分角(不是边框)变成白色(或其他颜色)?
- angular - onRowSelect / onRowClick 根本没有被触发。- 底床 - 角
- smarty - 如何使用当前的 SMARTY 代码正确设置 elseif?
- django - 多个注释无法正常工作
- java - 如何在键值对中转换 createQuery 响应?
- angular - 无法使用组件@ncstate/sat-popover 绑定到属性“satPopoverAnchorFor”
- ssl - AWS EKS RBAC - 基于证书的身份验证
- c# - 尝试在 .NET Core Web API 中使用 twitter 登录时出现“无效的 cookie 状态”