Воксельная нормализация третьего измерения в Python

В настоящее время я работаю над нормализацией ct-сканов (x, y, слой). Нормализовать первые два измерения просто с помощью cv2.reshape, но третье измерение... Моя идея состоит в том, чтобы сгладить первые два измерения, чтобы получить 2d-numpy-array. Если я сделаю изменение формы до (x * y) для каждого слоя и верну его обратно к (x, y), я получу совершенно другое изображение. У меня есть изображение легкого в начале и строки с разными значениями серого после слов.

test = cv2.resize(img, (img.shape[0] * img.shape[1], 1), interpolation=cv2.INTER_LINEAR)
test = cv2.resize(test, (159, 159), interpolation=cv2.INTER_LINEAR)
self.print_prediction(test, cv2.resize(temp2_masks[:, 0], (159, 159)),
                                  color=False, shape=(159, 159))

Я уверен, что это какая-то простая ошибка, но я ее не вижу. Так что буду очень благодарен за помощь.

1 ответ

Решение

В cv2.resizeфункция не изменяет ваш массив. Это фактически изменяет размер изображения. Ваша первая строка сжимает ваше изображение по горизонтали и сильно расширяет его по вертикали. Значения вообще не сохраняются.

Использовать numpy.reshape чтобы вместо этого изменить форму ваших массивов.

Другие вопросы по тегам