Я запускаю следующий код на 2 изображениях:
ndvi = np.divide(img8 - img4, img8+img4)
invalid = (ndvi > 1).any()
if invalid:
print("Stopping Execution")
print(ndvi)
img8
и img4
— это 2 изображения, и все они имеют положительные значения. ndvi
это (img8-img4)/(img8+img4)
Следовательно, по определению все элементы ndvi должны быть между -1 и 1. Но я получаю некоторые значения›1
Типы всех переменных в этом контексте — «uint16».
Когда я проверяю индекс недопустимых значений и запускаю отдельный код:
temp = (img8[88][118]-img4[88][118])/(img8[88][118]+img4[88][118])
Я получил следующее предупреждение:
<stdin>:1: RuntimeWarning: overflow encountered in ushort_scalars
Значения: img8[88][118] = 1462 img4[88][118] = 1652
Сами значения невелики, чтобы привести к переполнению, но когда размеры массива становятся большими, происходит переполнение.
img8
и/илиimg4
не такие, как вы думаете. Распечатать их - person DeepSpace   schedule 14.07.2021img4
больше, чем соответствующее значение вimg8
, вы получите отрицательные значения. - person DeepSpace   schedule 14.07.2021np.divide
работает с вложенными/многомерными массивами. Опубликуйте минимально воспроизводимый пример - person DeepSpace   schedule 14.07.2021(img8[88][118]-img4[88][118])/(img8[88][118]+img4[88][118])
Я получаю предупреждение: RuntimeWarning: переполнение в ushort_scalars Но я не понимаю, почему это переполнение - person Raghav Arora   schedule 14.07.2021