Skip to content Skip to sidebar Skip to footer

Divide Images Into Blocks And Compare Each Corresponding Block

Hi I have a set of images of size 200x200 and I want to divide these images into 10 blocks of size 20x20(each image). After the images are divided into blocks, 1) I want to compare

Solution 1:

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)

That looks like this:

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]])

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

print(ramp[:2, :3]) 

That looks like this:

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

And let's get their average:

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

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

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

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

And get their mean:

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

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

enter image description here


Post a Comment for "Divide Images Into Blocks And Compare Each Corresponding Block"