openpilot is an open source driver assistance system. openpilot performs the functions of Automated Lane Centering and Adaptive Cruise Control for over 200 supported car makes and models. 
				 
			
		 
		
		
		
		
		
		
			You can not select more than 25 topics 
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long. 
		
		
		
	
	
		
		
			
	
	
		
			
				
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if SENSOR_ID == 1 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define VIGNETTE_PROFILE_8DT0MM 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define BIT_DEPTH 12 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define PV_MAX 4096 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define BLACK_LVL 168 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								float4  normalize_pv ( int4  parsed ,  float  vignette_factor )  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  float4  pv  =  ( convert_float4 ( parsed )  -  BLACK_LVL )  /  ( PV_MAX  -  BLACK_LVL ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  clamp ( pv * vignette_factor ,  0.0 ,  1.0 ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								float3  color_correct ( float3  rgb )  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  float3  corrected  =  rgb . x  *  ( float3 ) ( 1.82717181 ,  - 0.31231438 ,  0.07307673 ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  corrected  + =  rgb . y  *  ( float3 ) ( - 0.5743977 ,  1.36858544 ,  - 0.53183455 ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  corrected  + =  rgb . z  *  ( float3 ) ( - 0.25277411 ,  - 0.05627105 ,  1.45875782 ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  corrected ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								float3  apply_gamma ( float3  rgb ,  int  expo_time )  { 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // tone mapping params
   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  float  gamma_k  =  0.75 ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  float  gamma_b  =  0.125 ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  float  mp  =  0.01 ;  // ideally midpoint should be adaptive
   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  const  float  rk  =  9  -  100 * mp ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  // poly approximation for s curve
   
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  return  ( rgb  >  mp )  ? 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( ( rk  *  ( rgb - mp )  *  ( 1 - ( gamma_k * mp + gamma_b ) )  *  ( 1 + 1 / ( rk * ( 1 - mp ) ) )  /  ( 1 + rk * ( rgb - mp ) ) )  +  gamma_k * mp  +  gamma_b )  : 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ( ( rk  *  ( rgb - mp )  *  ( gamma_k * mp + gamma_b )  *  ( 1 + 1 / ( rk * mp ) )  /  ( 1 - rk * ( rgb - mp ) ) )  +  gamma_k * mp  +  gamma_b ) ; 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} 
 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif