【问题标题】:Dividing image into patches and getting patch index of one pixel将图像划分为块并获取一个像素的块索引
【发布时间】:2020-10-21 23:14:55
【问题描述】:

我有一个大小为 1080 x 667 的矩阵(例如,表示图像)。现在我想将此矩阵按行划分为二次非重叠补丁,当提供 (x,y) 坐标时(即图像中的一个像素),我需要补丁编号。我想到了一个带有声明的方法:

def get_patch_index(image_dim, patch_dim, x, y)

image_dim 是矩阵的维度 (1080, 667)。 patch_dim 是补丁大小(例如 3,3),xy 是要评估的像素。

例如,调用 get_patch_index((1080,667), (3,3), 0, 0) 应返回索引 0(第一个补丁),调用 get_patch_index((1080,667), (3,3), 1080, 667) 应返回索引 39(最后一个补丁)。

如何有效地实现这一点?

【问题讨论】:

  • 您能否详细说明这些指标是如何计算的?
  • 如何计算补丁?行还是列?在示例中,您的图像不是补丁大小的倍数。是否保证您的图像是多个补丁?如果不是,你想如何处理边缘?
  • @mathfux 索引应该只是补丁的枚举。第一个补丁的索引为 0,第二个补丁的索引为 1,依此类推。
  • @Ehsan 我按行计算补丁。不,图像不需要是多个补丁。例如,边缘可以通过在图像边界处切割补丁来处理。
  • @machinery 所以你想要边缘大小不均匀的补丁?

标签: python numpy numpy-ndarray numpy-slicing


【解决方案1】:

你可以使用python的pil库。 然后按步骤操作

  1. 创建补丁维度矩阵并循环遍历像素
  2. 将结果按顺序排列在某个列表或地图中
  3. 编写输入维度并在地图中搜索以返回补丁编号的方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多