Как уже все предлагали, странные цвета, которые вы наблюдаете, переполнены. И, как вы указали в комментарии к ответу schnaader , вы все равно получите переполнение , если добавите ваши изображения следующим образом:
addition=(im1arr+im2arr)/2
Причина этого переполнения состоит в том, что ваши массивы NumPy ( im1arr im2arr ) имеют тип uint8 (т.е. 8-битный). Это означает, что каждый элемент массива может содержать только значения до 255, поэтому, когда ваша сумма превышает 255, она возвращается к 0:
>>>array([255,10,100],dtype='uint8') + array([1,10,160],dtype='uint8')
array([ 0, 20, 4], dtype=uint8)
Чтобы избежать переполнения, ваши массивы должны содержать значения, превышающие 255. Вам необходимо преобразовать их, например, в числа с плавающей точкой , выполнить операцию смешивания и преобразовать результат обратно в uint8 :
im1arrF = im1arr.astype('float')
im2arrF = im2arr.astype('float')
additionF = (im1arrF+im2arrF)/2
addition = additionF.astype('uint8')
Вы не должны сделать это:
addition = im1arr/2 + im2arr/2
при потере информации, сдавливая динамику изображения (вы фактически делаете изображения 7-битными), прежде чем выполнять смешивание информации.
Примечание к MATLAB : причина, по которой вы не видите эту проблему в MATLAB, возможно, в том, что MATLAB неявно заботится о переполнении в одной из своих функций.