コード例 #1
0
	params['position_error']=pos.cost
	cam_rays.append({'start': pos.x, 'dir':c})
	print('\tangles: zx={}, zy={}, xy={}'.format(angle_between(fwd,right)*rad_to_deg, angle_between(fwd,up)*rad_to_deg, angle_between(right, up)*rad_to_deg))
	# for camera transform setup. look along -z so invert, also invert fwd as it is the z+ axis of the camera
	cam_json[str(i)] = params
	flip_z = np.asarray([1,1,-1])
	cam_params.append([list(-1*(c*flip_z)), list(up*flip_z), list(right*flip_z), list(pos.x*flip_z)])
	#print('{}, {}, {}, {}'.format(list(-1*(c*flip_z)), list(up*flip_z), list(right*flip_z), list(pos.x*flip_z)))
#	if len(cam)>=5:
#		fov = (angle_between(cam[1], cam[2]),angle_between(cam[3], cam[4]))
#		print('\tfov: x', fov[0]*rad_to_deg,'y',fov[1]*rad_to_deg)
#		up = np.cross(cam[1], cam[2])
#		up /= np.linalg.norm(up)
#		print('\tup:', up, angle_between(up, cam[0])*rad_to_deg)
	
	logger.flush()
focus = least_squares(f, [0,0,0], kwargs={'rays':cam_rays})
print('focus: {}, error: {}:'.format(focus.x, focus.cost))

cam_json['fov_horizontal_average'] = np.mean([cam_json[str(i)]['fov_horizontal'] for i in cam_order if cam_json[str(i)]['fov_horizontal'] is not None])
cam_json['fov_vertical_average'] = np.mean([cam_json[str(i)]['fov_vertical'] for i in cam_order if cam_json[str(i)]['fov_vertical'] is not None])
cam_json['focus']=list(focus.x)
cam_json['focus_error']=focus.cost

# fixed parameters from scalarFlow (/source/util/ray.cpp)
cam_json['scale_y'] = 1.77
cam_json['marker_width'] = 0.4909
cam_json['volume_width'] = cam_json['marker_width']
cam_json['volume_offset'] = [cam_json['marker_width']/6., -cam_json['marker_width']/11., -cam_json['marker_width']/100.] #world-space position of the (0,0,0) corner of the volume
#cam_json['volume_size'] = [cam_json['volume_width'], math.ceil(cam_json['scale_y']*cam_json['volume_width']), cam_json['volume_width']]
cam_json['volume_size'] = [cam_json['volume_width'], cam_json['scale_y']*cam_json['volume_width'], cam_json['volume_width']]