记录一下pytorch和tensorflow两个框架处理uint16bit图片tensor张量的过程。
1.pytorch
pytorch不支持无符号int16的的张量,只有int16,int8,int24等tensor的格式,所以不能用pytorch实现16位图片进行深度学习,只能将16bit图片转化为8bit图片,才可以进行。
2.tensorflow
tensorflow可以可以实现uint16bit的张量计算,说明可以将uint16bit图片进行深度学习,可以直接将图片使用numpy或者PIL.Image读取图片,实测过程中numpy读取图片时最后几行像素会跑到前面几行去,原因未知。
3.图片读取与转换为tensor
from PIL import Image
import numpy as np
import tensorflow as tf
import cv2
PATH='raw.tif'
#Numpy读取
img=np.memmap(PATH,dtype=np.uint16,shape=(4288,3524))
img=np.array(img)
print(img)
cv2.imshow('img_np',img)
print('-------------------------------------------------------------')
#PIL读取
img1=Image.open(PATH)
img1_np=np.array(img1)
cv2.imshow('img_PIL',img1_np)
cv2.waitKey(0)
print(img1_np)
#转换为tensor
tensor=tf.convert_to_tensor(img1)
p