Divide images into blocks and compare each corresponding block

泪湿孤枕 提交于 2020-01-25 10:10:06

问题


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 1st block of image 1 with 1st block of image2, image 3 and 2nd block with 2nd block of image2, image 3 and so on.

2)After comparing blocks the block with maximum value should be used and put in a final image such that the final image has blocks with maximum value from image1, image2 or image3.

Is it possible to do such comparison and produce a new image.

image = cv2.resize(im,(200,200))
image1 = cv2.resize(im1,(200,200))

hs = round(h/10)
ws = round(w/10)
hs1 = round(hs1/10)
ws1 = round(ws1/10)
resized = cv2.resize(image, (ws,hs), interpolation = cv2.INTER_AREA)
resized1 = cv2.resize(image1, (ws1,hs1), interpolation = cv2.INTER_AREA)

The result is like as shown in the picture here

Images can be accessed here.


回答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:



来源:https://stackoverflow.com/questions/58281897/divide-images-into-blocks-and-compare-each-corresponding-block

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!