且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将图像划分为块并比较每个对应的块

更新时间:2023-12-05 16:32:34

入门的提示...您无需平铺图像并创建调整大小/裁剪后的子图像即可.您可以完全方便地原位访问您的块.这是一个示例,使用较小的块(以便您可以看到它们)来入门.

A hint to get you started... you don't need to tile your image up and create resized/cropped sub-images to do this. You can perfectly easily access your blocks in situ. Here is an example, with smaller blocks (so you can see them) to get you started.

import numpy as np

# Make synthetic ramp image
ramp = np.arange(6,dtype=np.uint8).reshape(-1,1) + (np.arange(8)*10).reshape(1,-1)

看起来像这样:

array([[ 0, 10, 20, 30, 40, 50, 60, 70],
       [ 1, 11, 21, 31, 41, 51, 61, 71],
       [ 2, 12, 22, 32, 42, 52, 62, 72],
       [ 3, 13, 23, 33, 43, 53, 63, 73],
       [ 4, 14, 24, 34, 44, 54, 64, 74],
       [ 5, 15, 25, 35, 45, 55, 65, 75]])

现在让我们看一下左上角的2行和3列:

Now let's look at the top-left 2 rows and 3 columns:

print(ramp[:2, :3]) 

看起来像这样:

array([[ 0, 10, 20],
       [ 1, 11, 21]])

让我们得到它们的平均值:

And let's get their average:

print(ramp[:2, :3].mean())
10.5

现在让我们看一下右下角的2行和3列:

Now let's look at the bottom-right 2 rows and 3 columns:

print(ramp[-2:, -3:])

array([[54, 64, 74],
       [55, 65, 75]])

得到他们的意思:

print(ramp[-2:, -3:].mean())
64.5


第二个提示...您的答案将如下所示:


A second hint... your answer will look like this: