可以像matlab一样展示图像数据维度,
为了用于在深度学习调试图片前处理时进行可视化,
并且解决了用plt.imshow图像不显示的问题(有人能告知一下到底怎么解决嘛,令人头秃)
可以展示全部,也可以只展示一部分(前200wh)
可以从路径展示图片,也可以从数据data展示图片
大于1200*1200+16bit图像的话,请谨慎使用展示全部
会非常慢
import tifffile
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
import os
import pylab
def visualize(image):
# Divide all values by 65535 so we can display the image using matplotlib
image = image / 65535 *255
plt.figure(figsize=(10, 10))
plt.axis('off')
plt.imshow(image)
pylab.show()
def visual_img_from_path(path,id=False):
if id:
image_ori=tifffile.imread(os.path.join(path, id + '.tif'))
else:
image_ori = tifffile.imread(path)
shape=image_ori.shape
print(shape)
#plt.imshow(image_ori)
#
x = np.arange(0, shape[0], 1)
y = np.arange(0, shape[1], 1)
X, Y = np.meshgrid(x, y)
Z=image_ori[X,Y]
fig = plt.figure()
ax1 = Axes3D(fig)
# ax2.set_aspect("auto")
ax1.plot_surface(X,Y,Z, rstride=20, cstride=20,alpha=0.3, cmap=plt.get_cmap('winter'))
# 设置图像z轴的显示范围,x、y轴设置方式相同
ax1.contour(X, Y, Z, zdir='z', cmap="rainbow") # 生成z方向投影,投到x-y平面
ax1.contour(X, Y, Z, zdir='x', cmap="rainbow") # 生成x方向投影,投到y-z平面
ax1.contour(X, Y, Z, zdir='y', cmap="rainbow")
plt.show()
def visual_img_from_data(data):
shape=data.shape
print(shape)
#plt.imshow(image_ori)
#
x = np.arange(0, shape[0], 1)
y = np.arange(0, shape[1], 1)
X, Y = np.meshgrid(x, y)
Z=data[X,Y]
fig = plt.figure()
ax2 = Axes3D(fig)
# ax2.set_aspect("auto")
ax2.plot_surface(X,Y,Z, rstride=20, cstride=20, alpha=0.3,cmap=plt.get_cmap('summer'))
ax2.contour(X, Y, Z, zdir='z', cmap="rainbow") # 生成z方向投影,投到x-y平面
ax2.contour(X, Y, Z, zdir='x', cmap="rainbow") # 生成x方向投影,投到y-z平面
ax2.contour(X, Y, Z, zdir='y', cmap="rainbow")
# 设置图像z轴的显示范围,x、y轴设置方式相同
plt.show()
def visual_img_part_from_data(data):
shape=data.shape
print(shape)
#plt.imshow(image_ori)
#
x = np.arange(0, 200, 1)
y = np.arange(0, 200, 1)
X, Y = np.meshgrid(x, y)
Z=data[X,Y]
fig = plt.figure()
ax2 = Axes3D(fig)
# ax2.set_aspect("auto")
ax2.plot_surface(X,Y,Z, rstride=5, cstride=5, alpha=0.3,cmap=plt.get_cmap('summer'))
ax2.contour(X, Y, Z, zdir='z', cmap="rainbow") # 生成z方向投影,投到x-y平面
ax2.contour(X, Y, Z, zdir='x', cmap="rainbow") # 生成x方向投影,投到y-z平面
ax2.contour(X, Y, Z, zdir='y', cmap="rainbow")
# 设置图像z轴的显示范围,x、y轴设置方式相同
plt.show()
def visual_img_part_from_path(path,id=False):
if id:
image_ori=tifffile.imread(os.path.join(path, id + '.tif'))
else:
image_ori = tifffile.imread(path)
shape=image_ori.shape
print(shape)
#plt.imshow(image_ori)
#
x = np.arange(0, 200, 1)
y = np.arange(0, 200, 1)
X, Y = np.meshgrid(x, y)
Z=image_ori[X,Y]
fig = plt.figure()
ax1 = Axes3D(fig)
# ax2.set_aspect("auto")
ax1.plot_surface(X,Y,Z, rstride=20, cstride=20,alpha=0.3, cmap=plt.get_cmap('winter'))
# 设置图像z轴的显示范围,x、y轴设置方式相同
ax1.contour(X, Y, Z, zdir='z', cmap="rainbow") # 生成z方向投影,投到x-y平面
ax1.contour(X, Y, Z, zdir='x', cmap="rainbow") # 生成x方向投影,投到y-z平面
ax1.contour(X, Y, Z, zdir='y', cmap="rainbow")
plt.show()