Emphasize The Blue In An Image
Solution 1:
This question is closely related to Getting black plots with plt.imshow after multiplying image array by a scalar.
You may compare image1.dtype, which is uint8, to (image1*[0.95,0.95,1]).dtype, which is float.
Matplotlib imshow can plot integer values, in which case they need to be in the range [0, 255] or float values, in which case they need to be in the range [0.0, 1.0]. So while plotting the original image of integer values works fine, the multiplied image, which will consist of float values up to 255., exceeds the allowed range of [0.0, 1.0] by 25500%. Hence it is mostly white (because pixel values are cropped to 1.0).
The solution is either to cast the values back to uint after multiplication,
image2 = (image1*[0.95,0.95,1]).astype(np.uint8)
or to divide by 255.,
image2 = (image1*[0.95,0.95,1])/255.
You could also use plt.Normalize like
image2 = plt.Normalize(0,255)(image1*[0.95,0.95,1])
Post a Comment for "Emphasize The Blue In An Image"