如何通过优化方法重新排列图像的像素

问题描述 投票:0回答:1

我有一张灰度图像。我将图像分成大小为 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]

我尝试重新排列图像的像素,但这非常耗时。有没有优化的方法来做到这一点?

python arrays numpy opencv image-processing
1个回答
0
投票

使用 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。

© www.soinside.com 2019 - 2024. All rights reserved.