美文网首页
数据预处理中的插值操作

数据预处理中的插值操作

作者: chunleiml | 来源:发表于2017-12-05 20:42 被阅读17次

用于深度学习模型的训练数据有时会遇到分辨率不统一的情况,不利于模型训练出最优的结果。
三维插值操作

# -*- 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

相关文章

网友评论

      本文标题:数据预处理中的插值操作

      本文链接:https://www.haomeiwen.com/subject/urqhixtx.html