如何反映中点图像,同时保留图像中块的方向?

时间:2017-04-02 18:28:37

标签: python image image-processing bitmap

假设我有一张身高H和宽度W的图片。图像的原点是左上角,以传统方式增加(y向下增加,x增加到右边)。我们选择一个块大小b并将图像划分为b x b块,可能在右边和底边有剩余部分,大小为rx x ryrx x b,和b x ryrxry是模b模式的剩余部分,因此rx = W % bry = H % b

以下是设置的描述:

http://i.imgur.com/maOqpT9.png

如果图像高度和/或宽度是rx的整数倍,则

ryb也可以为0。绿色斑点位于(block_upper_left_x, block_upper_left_y),并编码块出现在图像上的位置。

我想通过在x轴和y轴的中线上平移各个块来转换此图像。生成的图像如下所示:

enter image description here

这与简单地在水平和垂直方向上翻转不同,后者给出了这个图像:

enter image description here

我在一个表示这些块的数据结构中得到了图像,块高度和宽度以及底层位图。它看起来与此相似:

(block_width, block_height, block_upper_left_x, block_upper_left_y, bitmap[])

给定块中的位图不会更改,只是块相对于彼此的位置。

理想情况下,我希望找到一些只是简单地更改block_upper_left_xblock_upper_left_y的映射,但是铅笔和纸张的尝试让我没有太大的意义。这是我制作的一个表格,可能有助于指导思考:

block_id  | (block_ul_x_0, block_ul_y_0) |  (block_ul_x_f, block_ul_y_f) | (d_ul_x, d_ul_y)
==============================================================================================
0         | (0,   0)                     | (rx + b, 2b)                  | (rx + b,  2b)
1         | (b,   0)                     | (rx,     2b)                  | (rx - b,  2b)
2         | (2b,  0)                     | (0,      2b)                  | (-2b,     2b)
3         | (0,   b)                     | (rx + b,  b)                  | (rx + b,   0)
4         | (b,   b)                     | (rx,      b)                  | (rx - b,   0)
5         | (2b,  b)                     | (0,       b)                  | (-2b,      0)
6         | (0,  2b)                     | (rx + b,  0)                  | (rx + b, -2b)
7         | (b,  2b)                     | (rx,      0)                  | (rx - b, -2b)
8         | (2b, 2b)                     | (0,       0)                  | (-2b,    -2b)

0 个答案:

没有答案