我有一张灰度图像。我将图像分成大小为 128x128 的块。我已经实现了以下代码,并且它工作正常。然而,由于使用了四个嵌套的 for 循环,因此非常耗时。有没有办法对其进行优化以达到相同的结果但速度更快?块大小设置为128,其中blocksize[0]等于128。“Image_input”中行方向上的块数量为68(num_block_row),列方向上块数量为54(num_block_col)。 事实上,我打算并排排列每个块的第一个像素。在附图中,每个块由四个像素组成,每个像素都有不同的颜色。我的目标是在每个块内并排排列红色像素。这个过程也应该适用于其他区块。
for t in range(blocksize[0]):
for s in range(blocksize[0]):
for i in range(num_block_row):
for j in range(num_block_col):
Image_result[(t*num_block_row) + i ,(s*num_block_col) + j] = Image_input[(i * blocksize[0]) + t, (j * blocksize[0]) + s]
我尝试重新排列图像的像素,但这非常耗时。有没有优化的方法来做到这一点?
使用 numpy 切片操作。
red = source[0::dy, 0::dx]
green = source[0::dy, 1::dx]
blue = source[1::dy, 0::dx]
purple = source[1::dy, 1::dx]
tiled = np.block([[red, green], [blue, purple]])
dx, dy
可能就是你所说的 blocksize[0]
但我不能很确定,因为你的代码不是 MRE。