import  numpy  as  np 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								from  common . transformations . camera  import  ( FULL_FRAME_SIZE , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                           FOCAL , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                           get_view_frame_from_road_frame , 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                           get_view_frame_from_calib_frame , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                           vp_from_ke ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# segnet 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SEGNET_SIZE  =  ( 512 ,  384 ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  get_segnet_frame_from_camera_frame ( segnet_size = SEGNET_SIZE ,  full_frame_size = FULL_FRAME_SIZE ) : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  np . array ( [ [ float ( segnet_size [ 0 ] )  /  full_frame_size [ 0 ] ,   0.0 ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                   [ 0.0 ,   float ( segnet_size [ 1 ] )  /  full_frame_size [ 1 ] ] ] ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								segnet_frame_from_camera_frame  =  get_segnet_frame_from_camera_frame ( )  # xx 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# model 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MODEL_INPUT_SIZE  =  ( 320 ,  160 ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MODEL_YUV_SIZE  =  ( MODEL_INPUT_SIZE [ 0 ] ,  MODEL_INPUT_SIZE [ 1 ]  *  3  / /  2 ) 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								MODEL_CX  =  MODEL_INPUT_SIZE [ 0 ]  /  2. 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MODEL_CY  =  21. 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								model_fl  =  728.0 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								model_height  =  1.22 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# canonical model transform 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								model_intrinsics  =  np . array ( [ 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ model_fl ,   0.0 ,   MODEL_CX ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ 0.0 ,   model_fl ,   MODEL_CY ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ 0.0 ,   0.0 ,             1.0 ] ] ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# MED model 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MEDMODEL_INPUT_SIZE  =  ( 512 ,  256 ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MEDMODEL_YUV_SIZE  =  ( MEDMODEL_INPUT_SIZE [ 0 ] ,  MEDMODEL_INPUT_SIZE [ 1 ]  *  3  / /  2 ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								MEDMODEL_CY  =  47.6 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								medmodel_fl  =  910.0 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								medmodel_intrinsics  =  np . array ( [ 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ medmodel_fl ,   0.0 ,   0.5  *  MEDMODEL_INPUT_SIZE [ 0 ] ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ 0.0 ,   medmodel_fl ,                    MEDMODEL_CY ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ 0.0 ,   0.0 ,                                    1.0 ] ] ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# CAL model 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CALMODEL_INPUT_SIZE  =  ( 512 ,  256 ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CALMODEL_YUV_SIZE  =  ( CALMODEL_INPUT_SIZE [ 0 ] ,  CALMODEL_INPUT_SIZE [ 1 ]  *  3  / /  2 ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								CALMODEL_CY  =  47.6 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								calmodel_fl  =  606.7 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								calmodel_intrinsics  =  np . array ( [ 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ calmodel_fl ,   0.0 ,   0.5  *  CALMODEL_INPUT_SIZE [ 0 ] ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ 0.0 ,   calmodel_fl ,                    CALMODEL_CY ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ 0.0 ,   0.0 ,                                    1.0 ] ] ) 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# BIG model 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								BIGMODEL_INPUT_SIZE  =  ( 1024 ,  512 ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								BIGMODEL_YUV_SIZE  =  ( BIGMODEL_INPUT_SIZE [ 0 ] ,  BIGMODEL_INPUT_SIZE [ 1 ]  *  3  / /  2 ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								bigmodel_fl  =  910.0 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bigmodel_intrinsics  =  np . array ( [ 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ bigmodel_fl ,   0.0 ,   0.5  *  BIGMODEL_INPUT_SIZE [ 0 ] ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ 0.0 ,   bigmodel_fl ,              256  +  MEDMODEL_CY ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ 0.0 ,   0.0 ,                                    1.0 ] ] ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# SBIG model (big model with the size of small model) 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								SBIGMODEL_INPUT_SIZE  =  ( 512 ,  256 ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								SBIGMODEL_YUV_SIZE  =  ( SBIGMODEL_INPUT_SIZE [ 0 ] ,  SBIGMODEL_INPUT_SIZE [ 1 ]  *  3  / /  2 ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								sbigmodel_fl  =  455.0 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								sbigmodel_intrinsics  =  np . array ( [ 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ sbigmodel_fl ,   0.0 ,   0.5  *  SBIGMODEL_INPUT_SIZE [ 0 ] ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ 0.0 ,   sbigmodel_fl ,       0.5  *  ( 256  +  MEDMODEL_CY ) ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  [ 0.0 ,   0.0 ,                                      1.0 ] ] ) 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								model_frame_from_road_frame  =  np . dot ( model_intrinsics , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get_view_frame_from_road_frame ( 0 ,  0 ,  0 ,  model_height ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								bigmodel_frame_from_road_frame  =  np . dot ( bigmodel_intrinsics , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get_view_frame_from_road_frame ( 0 ,  0 ,  0 ,  model_height ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								bigmodel_frame_from_calib_frame  =  np . dot ( bigmodel_intrinsics , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get_view_frame_from_calib_frame ( 0 ,  0 ,  0 ,  0 ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								sbigmodel_frame_from_road_frame  =  np . dot ( sbigmodel_intrinsics , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get_view_frame_from_road_frame ( 0 ,  0 ,  0 ,  model_height ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								sbigmodel_frame_from_calib_frame  =  np . dot ( sbigmodel_intrinsics , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get_view_frame_from_calib_frame ( 0 ,  0 ,  0 ,  0 ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								medmodel_frame_from_road_frame  =  np . dot ( medmodel_intrinsics , 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  get_view_frame_from_road_frame ( 0 ,  0 ,  0 ,  model_height ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								medmodel_frame_from_calib_frame  =  np . dot ( medmodel_intrinsics , 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  get_view_frame_from_calib_frame ( 0 ,  0 ,  0 ,  0 ) ) 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								model_frame_from_bigmodel_frame  =  np . dot ( model_intrinsics ,  np . linalg . inv ( bigmodel_intrinsics ) ) 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								medmodel_frame_from_bigmodel_frame  =  np . dot ( medmodel_intrinsics ,  np . linalg . inv ( bigmodel_intrinsics ) ) 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# 'camera from model camera' 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  get_model_height_transform ( camera_frame_from_road_frame ,  height ) : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  camera_frame_from_road_ground  =  np . dot ( camera_frame_from_road_frame ,  np . array ( [ 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    [ 1 ,  0 ,  0 ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ 0 ,  1 ,  0 ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ 0 ,  0 ,  0 ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ 0 ,  0 ,  1 ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ] ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  camera_frame_from_road_high  =  np . dot ( camera_frame_from_road_frame ,  np . array ( [ 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    [ 1 ,  0 ,  0 ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ 0 ,  1 ,  0 ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ 0 ,  0 ,  height  -  model_height ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ 0 ,  0 ,  1 ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ] ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  road_high_from_camera_frame  =  np . linalg . inv ( camera_frame_from_road_high ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  high_camera_from_low_camera  =  np . dot ( camera_frame_from_road_ground ,  road_high_from_camera_frame ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  high_camera_from_low_camera 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# camera_frame_from_model_frame aka 'warp matrix' 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# was: calibration.h/CalibrationTransform 
 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								def  get_camera_frame_from_model_frame ( camera_frame_from_road_frame ,  height = model_height ,  camera_fl = FOCAL ) : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  vp  =  vp_from_ke ( camera_frame_from_road_frame ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  model_zoom  =  camera_fl  /  model_fl 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  model_camera_from_model_frame  =  np . array ( [ 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								    [ model_zoom ,   0.0 ,   vp [ 0 ]  -  MODEL_CX  *  model_zoom ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ 0.0 ,   model_zoom ,   vp [ 1 ]  -  MODEL_CY  *  model_zoom ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    [ 0.0 ,   0.0 ,                                    1.0 ] , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ] ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # This function is super slow, so skip it if height is very close to canonical 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  # TODO: speed it up! 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  if  abs ( height  -  model_height )  >  0.001 : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    camera_from_model_camera  =  get_model_height_transform ( camera_frame_from_road_frame ,  height ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    camera_from_model_camera  =  np . eye ( 3 ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  np . dot ( camera_from_model_camera ,  model_camera_from_model_frame ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  get_camera_frame_from_medmodel_frame ( camera_frame_from_road_frame ) : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  camera_frame_from_ground  =  camera_frame_from_road_frame [ : ,  ( 0 ,  1 ,  3 ) ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  medmodel_frame_from_ground  =  medmodel_frame_from_road_frame [ : ,  ( 0 ,  1 ,  3 ) ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ground_from_medmodel_frame  =  np . linalg . inv ( medmodel_frame_from_ground ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  camera_frame_from_medmodel_frame  =  np . dot ( camera_frame_from_ground ,  ground_from_medmodel_frame ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  camera_frame_from_medmodel_frame 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  get_camera_frame_from_bigmodel_frame ( camera_frame_from_road_frame ) : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  camera_frame_from_ground  =  camera_frame_from_road_frame [ : ,  ( 0 ,  1 ,  3 ) ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  bigmodel_frame_from_ground  =  bigmodel_frame_from_road_frame [ : ,  ( 0 ,  1 ,  3 ) ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  ground_from_bigmodel_frame  =  np . linalg . inv ( bigmodel_frame_from_ground ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  camera_frame_from_bigmodel_frame  =  np . dot ( camera_frame_from_ground ,  ground_from_bigmodel_frame ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  camera_frame_from_bigmodel_frame 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								def  get_model_frame ( snu_full ,  camera_frame_from_model_frame ,  size ) : 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  idxs  =  camera_frame_from_model_frame . dot ( np . column_stack ( [ np . tile ( np . arange ( size [ 0 ] ) ,  size [ 1 ] ) , 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								                                                            np . tile ( np . arange ( size [ 1 ] ) ,  ( size [ 0 ] ,  1 ) ) . T . flatten ( ) , 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                                                            np . ones ( size [ 0 ]  *  size [ 1 ] ) ] ) . T ) . T . astype ( int ) 
  
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								  calib_flat  =  snu_full [ idxs [ : ,  1 ] ,  idxs [ : ,  0 ] ] 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  if  len ( snu_full . shape )  ==  3 : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    calib  =  calib_flat . reshape ( ( size [ 1 ] ,  size [ 0 ] ,  3 ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  elif  len ( snu_full . shape )  ==  2 : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    calib  =  calib_flat . reshape ( ( size [ 1 ] ,  size [ 0 ] ) ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  else : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    raise  ValueError ( " shape of input img is weird " ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  calib