Это потому, что вы перебираете не все столбцы.Вы должны сделать это for j in range(len(pic[i]))
попробуйте с этим:
def dye_hair(filename):
pic = misc.imread(filename)
output = []
for i in range(len(pic)):
for j in range(len(pic[i])):
if (pic[i][j][1] > pic[i][j][0]) and (pic[i][j][1] > pic[i][j][2]):
pic[i][j] = [pic[i][j][0]*2,pic[i][j][1]*0.2,pic[i][j][2]*0.8]
plt.imshow(pic)
plt.show()