Разделите изображения на блоки и сравните каждый соответствующий блок - PullRequest
0 голосов
/ 08 октября 2019

Привет! У меня есть набор изображений размером 200x200, и я хочу разделить эти изображения на 10 блоков размером 20x20 (каждое изображение). После того, как изображения разделены на блоки,

1) Я хочу сравнить 1-й блок изображения 1 с 1-м блоком изображения 2, изображение 3 и 2-й блок со 2-м блоком изображения 2, изображения 3 и т. Д.

2) После сравнения блоков следует использовать блок с максимальным значением и поместить в окончательное изображение таким образом, чтобы в конечном изображении были блоки с максимальным значением из изображений1, изображений2 или изображений3.

Можно лисделайте такое сравнение и создайте новое изображение.

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)

Результат такой же, как показано на рисунке здесь

Доступ к изображениям возможен здесь .

1 Ответ

0 голосов
/ 08 октября 2019

Подсказка, с чего можно начать ... Вам не нужно накапливать изображение и создавать для него подрезанные изображения с измененным размером / обрезкой. Вы можете легко получить доступ к своим блокам in situ . Вот пример с небольшими блоками (чтобы вы могли их видеть), чтобы вы начали.

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 столбца:

print(ramp[:2, :3]) 

Это выглядит так:

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

И давайте получим их среднее значение:

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

Теперь давайте посмотрим навнизу справа 2 строки и 3 столбца:

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

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

И получите их среднее значение:

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

Второй намек ... Ваш ответ будет выглядеть так:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...