Ho riscontrato il seguente problema: Sto salvando le immagini Tiff a 16 bit con un microscopio e ho bisogno di analizzarle. Voglio farlo con numpy e matplotlib, ma quando voglio fare qualcosa di semplice come tracciare l'immagine in verde (avrò più tardi bisogno di sovrapporre altre immagini), fallisce.I grafici di matplotlib sono diversi se si utilizza la matrice di colori o l'array RGB
Ecco un esempio quando provo a tracciare l'immagine come una matrice RGB o con la mappa di colori jet
predefinita.
import numpy as np
import matplotlib.pyplot as plt
import cv2
imageName = 'image.tif'
# image as luminance
img1 = cv2.imread(imageName,-1)
# image as RGB array
shape = (img1.shape[0], img1.shape[1], 3)
img2 = np.zeros(shape,dtype='uint16')
img2[...,1] += img1
fig = plt.figure(figsize=(20,8))
ax1 = fig.add_subplot(1,2,1)
ax2 = fig.add_subplot(1,2,2)
im1 = ax1.imshow(img1,interpolation='none')
im2 = ax2.imshow(img2,interpolation='none')
fig.show()
Che per me si ottiene la seguente figura:
Mi dispiace se la domanda è troppo semplice, ma non ho idea del perché la trama destra sta mostrando questo artefatti. Mi piacerebbe ottenere con la scala verde, qualcosa di simile a come appare la figura (anche imageJ offre qualcosa di simile alla trama di sinistra).
Grazie mille per la collaborazione.
Quello che stai vedendo è probabilmente il risultato dell'overflow dei valori di 'uint16' in' img2'. Cosa produce 'print img1.dtype'? Che dire di 'print img1.min(), img1.max()'? –
Sono solo io o le due immagini sono strutturalmente uguali ma sembra che abbiano solo una diversa mappa colori? È questo il problema? –