mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-06-22 14:32:07 +08:00
camerad: reduce ox LFM noise (#26949)
* wip * make separate score func * n4ot g * clean up * remove * simplify * b2b * more than 0 * this is fine * led * balance costs * clean up * no if tici * box view * new baselines * Revert "new baselines" This reverts commit f7a5d059eda70fa4d49e3024923da30e8821f42b. * Revert "box view" This reverts commit a57924be36e7d6abc2585aca9575c74cd583ef86. * maximize dcg Co-authored-by: Comma Dev1ce <device@comma.ai>
This commit is contained in:
@@ -60,15 +60,15 @@ CameraInfo cameras_supported[CAMERA_ID_MAX] = {
|
||||
const float DC_GAIN_AR0231 = 2.5;
|
||||
const float DC_GAIN_OX03C10 = 7.32;
|
||||
|
||||
const float DC_GAIN_ON_GREY_AR0231= 0.2;
|
||||
const float DC_GAIN_ON_GREY_AR0231 = 0.2;
|
||||
const float DC_GAIN_OFF_GREY_AR0231 = 0.3;
|
||||
const float DC_GAIN_ON_GREY_OX03C10= 0.25;
|
||||
const float DC_GAIN_OFF_GREY_OX03C10 = 0.35;
|
||||
const float DC_GAIN_ON_GREY_OX03C10 = 0.9;
|
||||
const float DC_GAIN_OFF_GREY_OX03C10 = 1.0;
|
||||
|
||||
const int DC_GAIN_MIN_WEIGHT_AR0231 = 0;
|
||||
const int DC_GAIN_MAX_WEIGHT_AR0231 = 1;
|
||||
const int DC_GAIN_MIN_WEIGHT_OX03C10 = 16;
|
||||
const int DC_GAIN_MAX_WEIGHT_OX03C10 = 32;
|
||||
const int DC_GAIN_MIN_WEIGHT_OX03C10 = 1; // always on is fine
|
||||
const int DC_GAIN_MAX_WEIGHT_OX03C10 = 1;
|
||||
|
||||
const float TARGET_GREY_FACTOR_AR0231 = 1.0;
|
||||
const float TARGET_GREY_FACTOR_OX03C10 = 0.02;
|
||||
@@ -1172,15 +1172,16 @@ void CameraState::set_camera_exposure(float grey_frac) {
|
||||
};
|
||||
sensors_i2c(exp_reg_array, sizeof(exp_reg_array)/sizeof(struct i2c_random_wr_payload), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG, true);
|
||||
} else if (camera_id == CAMERA_ID_OX03C10) {
|
||||
// t_HCG + t_LCG + t_VS on LPD, t_SPD on SPD
|
||||
uint32_t hcg_time = std::max((dc_gain_weight * exposure_time / dc_gain_max_weight), 0);
|
||||
uint32_t lcg_time = std::max(((dc_gain_max_weight - dc_gain_weight) * exposure_time / dc_gain_max_weight), 0);
|
||||
// uint32_t spd_time = std::max(hcg_time / 16, (uint32_t)exposure_time_min);
|
||||
uint32_t vs_time = std::min(std::max((uint32_t)exposure_time / 128, VS_TIME_MIN_OX03C10), VS_TIME_MAX_OX03C10);
|
||||
uint32_t spd_time = vs_time;
|
||||
// t_HCG&t_LCG + t_VS on LPD, t_SPD on SPD
|
||||
uint32_t hcg_time = exposure_time;
|
||||
uint32_t lcg_time = hcg_time;
|
||||
uint32_t spd_time = exposure_time_max + VS_TIME_MAX_OX03C10;
|
||||
uint32_t vs_time = std::min(std::max((uint32_t)exposure_time / 40, VS_TIME_MIN_OX03C10), VS_TIME_MAX_OX03C10);
|
||||
|
||||
uint32_t real_gain = ox03c10_analog_gains_reg[new_exp_g];
|
||||
uint32_t min_gain = ox03c10_analog_gains_reg[0];
|
||||
uint32_t spd_gain = 0xF00;
|
||||
|
||||
struct i2c_random_wr_payload exp_reg_array[] = {
|
||||
{0x3501, hcg_time>>8}, {0x3502, hcg_time&0xFF},
|
||||
{0x3581, lcg_time>>8}, {0x3582, lcg_time&0xFF},
|
||||
@@ -1189,7 +1190,7 @@ void CameraState::set_camera_exposure(float grey_frac) {
|
||||
|
||||
{0x3508, real_gain>>8}, {0x3509, real_gain&0xFF},
|
||||
{0x3588, min_gain>>8}, {0x3589, min_gain&0xFF},
|
||||
{0x3548, min_gain>>8}, {0x3549, min_gain&0xFF},
|
||||
{0x3548, spd_gain>>8}, {0x3549, spd_gain&0xFF},
|
||||
{0x35c8, min_gain>>8}, {0x35c9, min_gain&0xFF},
|
||||
};
|
||||
sensors_i2c(exp_reg_array, sizeof(exp_reg_array)/sizeof(struct i2c_random_wr_payload), CAM_SENSOR_PACKET_OPCODE_SENSOR_CONFIG, false);
|
||||
|
||||
@@ -126,7 +126,7 @@ struct i2c_random_wr_payload init_array_ox03c10[] = {
|
||||
{0x3219, 0x08},
|
||||
|
||||
{0x3506, 0x20}, {0x3507, 0x00}, // hcg fine exposure
|
||||
{0x350a, 0x04}, {0x350b, 0x00}, {0x350c, 0x00}, // hcg digital gain
|
||||
{0x350a, 0x01}, {0x350b, 0x00}, {0x350c, 0x00}, // hcg digital gain
|
||||
|
||||
{0x3586, 0x40}, {0x3587, 0x00}, // lcg fine exposure
|
||||
{0x358a, 0x01}, {0x358b, 0x00}, {0x358c, 0x00}, // lcg digital gain
|
||||
@@ -711,11 +711,11 @@ struct i2c_random_wr_payload init_array_ox03c10[] = {
|
||||
{0x4221, 0x03}, // this is changed from 1 -> 3
|
||||
|
||||
// DCG exposure coarse
|
||||
{0x3501, 0x01}, {0x3502, 0xc8},
|
||||
// {0x3501, 0x01}, {0x3502, 0xc8},
|
||||
// SPD exposure coarse
|
||||
{0x3541, 0x01}, {0x3542, 0xc8},
|
||||
// {0x3541, 0x01}, {0x3542, 0xc8},
|
||||
// VS exposure coarse
|
||||
{0x35c1, 0x00}, {0x35c2, 0x01},
|
||||
// {0x35c1, 0x00}, {0x35c2, 0x01},
|
||||
|
||||
// crc reference
|
||||
{0x420e, 0x66}, {0x420f, 0x5d}, {0x4210, 0xa8}, {0x4211, 0x55},
|
||||
|
||||
Reference in New Issue
Block a user