ThaiVecFont / data_utils /common_utils.py
microhum's picture
rm dockerfile
024aa56
raw
history blame
2.63 kB
import math
import numpy as np
from PIL import Image
def trans2_white_bg(img_path):
img = Image.open(img_path)
img_arr = 255 - np.array(img)[:, :, 3]
img_ = Image.fromarray(img_arr)
img_.save(img_path)
return img_arr
def affine_shear(seq, dx=-0.3, dy=0.0):
mask = ~(seq == 0)
seq_12 = seq.copy()
seq_12[:,4] -= 12.0
seq_12[:,5] = -seq_12[:,5] + 12
seq_12[:,6] -= 12.0
seq_12[:,7] = -seq_12[:,7] + 12
seq_12[:,8] -= 12.0
seq_12[:,9] = -seq_12[:,9] + 12
seq_args = seq_12[:,4:]
seq_args = np.concatenate([seq_args[:, :2], seq_args[:, 2:4], seq_args[:, 4:6]], 0).transpose(1,0)
affine_matrix=np.array([[1, dx],
[dy, 1]])
rotated_args = np.dot(affine_matrix,seq_args)
rotated_args = rotated_args.transpose(1,0)
new_args = np.concatenate([rotated_args[:seq.shape[0]], rotated_args[seq.shape[0]:seq.shape[0]*2], rotated_args[seq.shape[0]*2:]],-1)
new_args[:,0] += 12.0
new_args[:,1] = -(new_args[:,1] - 12)
new_args[:,2] += 12.0
new_args[:,3] = -(new_args[:,3] - 12)
new_args[:,4] += 12.0
new_args[:,5] = -(new_args[:,5] - 12)
new_seq = np.concatenate([seq[:, :4], new_args],1)
new_seq = new_seq * mask
return new_seq
def affine_scale(seq, scale=0.8):
mask = ~(seq==0)
seq_args = seq[:, 4:] - 12.0
seq_args *= scale
seq_args = seq_args + 12.0
new_seq = np.concatenate([seq[:, :4], seq_args], 1)
new_seq = new_seq * mask
return new_seq
def affine_rotate(seq,theta=-5):
mask = ~(seq==0)
seq_12 = seq.copy()
seq_12[:,4] -=12.0
seq_12[:,5] = -seq_12[:,5] + 12
seq_12[:,6] -=12.0
seq_12[:,7] = -seq_12[:,7] + 12
seq_12[:,8] -=12.0
seq_12[:,9] = -seq_12[:,9] + 12
seq_args =seq_12[:, 4:] # default as [71,6]
seq_args = np.concatenate([seq_args[:,:2],seq_args[:,2:4],seq_args[:,4:6]],0).transpose(1,0)# note 2,213
theta = math.radians(theta)
affine_matrix=np.array([[np.cos(theta),-np.sin(theta)], [np.sin(theta), np.cos(theta)]])# note 2,2
rotated_args = np.dot(affine_matrix,seq_args)# note 2,213
rotated_args = rotated_args.transpose(1,0)# note 213,2
new_args = np.concatenate([rotated_args[:seq.shape[0]],rotated_args[seq.shape[0]:seq.shape[0]*2],rotated_args[seq.shape[0]*2:]],-1)# note 2,213
new_args[:,0] +=12.0
new_args[:,1] = -(new_args[:,1]-12)
new_args[:,2] +=12.0
new_args[:,3] = -(new_args[:,3]-12)
new_args[:,4] +=12.0
new_args[:,5] = -(new_args[:,5]-12)
new_seq = np.concatenate([seq[:,:4],new_args],1)
new_seq =new_seq *mask
return new_seq