用于深度学习模型的训练数据有时会遇到分辨率不统一的情况,不利于模型训练出最优的结果。
三维插值操作
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 28 13:07:35 2017
@author: chunleiml
"""
import numpy as np
import scipy.ndimage as nd
#插值反插值操作
def image_interp(data, original_space, target_space):
data = nd.interpolation.zoom(data, np.array(original_space, dtype = np.float32) / np.array(target_space, dtype = np.float32))
return data
二维插值操作
# -*- coding: utf-8 -*-
"""
Created on Tue Nov 28 17:11:23 2017
@author: chunleiml
"""
import numpy as np
from scipy import interpolate
def image_interp(data, original_space, target_space, method = 'linear'):
print ('start interpolation......')
assert len(original_space) == 2
original_imgs_z_size = data.shape[0]
original_imgs_x_size = data.shape[1]
original_imgs_y_size = data.shape[2]
pixel = np.array(original_space, dtype = np.float32) / np.array(target_space, dtype = np.float32)
new_x = int(original_imgs_x_size*pixel[0])
new_y = int(original_imgs_y_size*pixel[1])
img_new = np.zeros([original_imgs_z_size, new_x, new_y], dtype = np.float32)
for i in range(original_imgs_z_size):
img = data[i,:,:]
linspace_original_x = np.linspace(-1,1,original_imgs_x_size)
linspace_original_y = np.linspace(-1,1,original_imgs_y_size)
linspace_new_x = np.linspace(-1,1,new_x)
linspace_new_y = np.linspace(-1,1,new_y)
newfunc = interpolate.interp2d(linspace_original_x, linspace_original_y, img, kind='linear')
new_one_layer = newfunc(linspace_new_x, linspace_new_y)
img_new[i,:,:] = new_one_layer
print ('interpolation done......')
return img_new
网友评论