【发布时间】: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),x 和 y 是要评估的像素。
例如,调用 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