monoloco/monstereo/utils/misc.py
2020-08-20 11:33:19 +02:00

75 lines
2.1 KiB
Python

import json
import shutil
import os
import numpy as np
def append_cluster(dic_jo, phase, xx, ys, kps):
"""Append the annotation based on its distance"""
if ys[3] <= 10:
dic_jo[phase]['clst']['10']['kps'].append(kps)
dic_jo[phase]['clst']['10']['X'].append(xx)
dic_jo[phase]['clst']['10']['Y'].append(ys)
elif ys[3] <= 20:
dic_jo[phase]['clst']['20']['kps'].append(kps)
dic_jo[phase]['clst']['20']['X'].append(xx)
dic_jo[phase]['clst']['20']['Y'].append(ys)
elif ys[3] <= 30:
dic_jo[phase]['clst']['30']['kps'].append(kps)
dic_jo[phase]['clst']['30']['X'].append(xx)
dic_jo[phase]['clst']['30']['Y'].append(ys)
elif ys[3] < 50:
dic_jo[phase]['clst']['50']['kps'].append(kps)
dic_jo[phase]['clst']['50']['X'].append(xx)
dic_jo[phase]['clst']['50']['Y'].append(ys)
else:
dic_jo[phase]['clst']['>50']['kps'].append(kps)
dic_jo[phase]['clst']['>50']['X'].append(xx)
dic_jo[phase]['clst']['>50']['Y'].append(ys)
def get_task_error(dd):
"""Get target error not knowing the gender, modeled through a Gaussian Mixure model"""
mm = 0.046
return dd * mm
def get_pixel_error(zz_gt):
"""calculate error in stereo distance due to 1 pixel mismatch (function of depth)"""
disp = 0.54 * 721 / zz_gt
error = abs(zz_gt - 0.54 * 721 / (disp - 1))
return error
def open_annotations(path_ann):
try:
with open(path_ann, 'r') as f:
annotations = json.load(f)
except FileNotFoundError:
annotations = []
return annotations
def make_new_directory(dir_out):
"""Remove the output directory if already exists (avoid residual txt files)"""
if os.path.exists(dir_out):
shutil.rmtree(dir_out)
os.makedirs(dir_out)
print("Created empty output directory for {} txt files".format(dir_out))
def normalize_hwl(lab):
AV_H = 1.72
AV_W = 0.75
AV_L = 0.68
HLW_STD = 0.1
hwl = lab[4:7]
hwl_new = list((np.array(hwl) - np.array([AV_H, AV_W, AV_L])) / HLW_STD)
lab_new = lab[0:4] + hwl_new + lab[7:]
return lab_new