Звонок бесплатный по РФ

27.02.2026
53

HCG и LCG режимы CMOS сенсоров: Полный технический разбор DCG

HCG и LCG: Физика и Математика управления сенсором

Современные CMOS-матрицы (Sony Starvis, Pregius, OmniVision) достигли предела чувствительности не только за счет улучшения оптики, но и благодаря архитектуре Dual Conversion Gain (DCG). Эта технология позволяет динамически изменять физические свойства пикселя в зависимости от условий освещения.

1. Физическая концепция: Узел Floating Diffusion

В основе каждого пикселя лежит узел плавающего диффузора (FD), выполняющий роль конденсатора. Его задача — конвертировать накопленные фотоэлектроны в электрический потенциал. Ключевая проблема классических сенсоров — фиксированная емкость этого узла.

Фундаментальная зависимость:
V = Q / C
Где:
  • V — Результирующее напряжение (сигнал)
  • Q — Заряд (количество пойманных фотонов)
  • C — Емкость конверсионного узла

2. Два режима работы

Характеристика LCG Low Conversion Gain HCG High Conversion Gain
Емкость (C) Высокая (добавлен конденсатор) Низкая (минимум паразитной емкости)
Динамический диапазон Максимальный (>12-14 стопов) Снижен (быстрое насыщение)
Шум считывания (RN) Средний/Высокий Ультра-низкий (около 1.0e-)
Чувствительность Низкая (для яркого света) Экстремальная (для темноты)

3. Математика шума и точка перегиба

Режим HCG не просто "усиливает" картинку. Он уменьшает шум считывания (Read Noise) путем увеличения коэффициента преобразования (Conversion Gain, выражаемого в мкВ/электрон). Это критично в условиях Photon Starvation (дефицита фотонов).

На графиках зависимости SNR (Signal-to-Noise Ratio) от усиления (Gain) точка включения HCG выглядит как резкий скачок качества вверх. Для популярных сенсоров типа IMX290 этот порог обычно находится в диапазоне +18dB ... +22dB.

4. Программный контроль через регистры I2C

Управление режимом осуществляется через запись в регистры управления логикой сенсора. Для серии Starvis это обычно регистр 0x3009 . Использование групповой записи HOLD обязательно для предотвращения строчных артефактов.

// Логика переключения в драйвере ядра Linux
#define GAIN_REG_ADDR 0x3014
#define MODE_REG_ADDR 0x3009

void update_sensor_state(int target_gain) {
  write_reg(0x3001, 0x01); // Group Hold START
  if (target_gain > HCG_THRESHOLD) {
    write_reg(MODE_REG_ADDR, 0x10); // Активация HCG (Bit 4)
  } else {
    write_reg(MODE_REG_ADDR, 0x00); // Возврат в LCG
  }
  write_reg(GAIN_REG_ADDR, target_gain);
  write_reg(0x3001, 0x00); // Group Hold END (Применение одновременно)
}

5. Практические выводы

Использование Dual Conversion Gain позволяет достичь качества изображения, недоступного ранее для сенсоров малого формата (1/2.8", 1/1.8"). Правильная настройка порогов переключения позволяет автоматике бесшовно переходить от дневного мониторинга к ночному видению с сохранением детализации в глубоких тенях. Расчет экспозиции для GLOBAL SHUTTER 

Статья подготовлена специалистами в области компьютерного зрения и обработки сигналов CMOS. 

Интерактивный симулятор: Логика переключения Gain

Передвигайте ползунок усиления, чтобы увидеть момент физического переключения емкости FD: Перейти в полноценный иммертатор камеры. 

Усиление (Gain): 10.0 dB
Текущий режим
LCG (День)
Физика сигнала:
V = Q / C_high
Шум считывания: 2.4 e-
Статус: Оптимальный динамический диапазон для яркого света. 

значок  Оценка профпригодности: Тест на «Эффект Желе» 

Введите параметры съемки, чтобы узнать, насколько сильно будет проявляться искажение геометрии (Rolling Shutter): Перейти к расчетам 

Для IMX290 (1080p/60fps) ~16.0ms
Сколько пикселей объект проходит за 1 секунду
Сдвиг геометрии: 0 px
Вердикт: Введите данные для анализа.

 Программная реализация (Implementation Guide)

Примеры кода для управления физическими регистрами сенсора:

// Вариант 1: Low-level C (Драйвер V4L2 для IMX290/327)
static int imx_update_conversion_gain(struct imx_sensor *sensor, u32 gain_val) 
{
/* Порог активации HCG обычно 0x50 (прибл. 18-21dB) */
bool hcg_enable = (gain_val > 0x50); 
// 1. Активируем Group Hold для атомарной записи (регистр 0x3001)
imx_write_reg(sensor, 0x3001, 0x01); 
// 2. Переключаем режим FD (Floating Diffusion)
// Регистр 0x3009, Bit 4: 1 = HCG, 0 = LCG
imx_write_reg(sensor, 0x3009, hcg_enable ? 0x10 : 0x00);
// 3. Записываем значение аналогового усиления (Gain)
imx_write_reg(sensor, 0x3014, gain_val & 0xFF);
// 4. Снимаем Hold - настройки применяются в одном кадре
return imx_write_reg(sensor, 0x3001, 0x00);
}
// Вариант 2: Python (Управление через Sysfs интерфейс)
import os
def set_sensor_mode(mode: str):
"""
mode: 'HCG' для ночи, 'LCG' для дня
"""
path = "/sys/bus/i2c/devices/10-001a/conversion_gain"
if not os.path.exists(path):
print("Ошибка: Драйвер не поддерживает sysfs управление.")
return
try:
with open(path, 'w') as f:
f.write(mode)
print(f"Система переведена в режим: {mode}")
except PermissionError:
print("Ошибка: Запуск возможен только через sudo.")
# Пример вызова
set_sensor_mode("HCG")
Совет инженеру: Для исключения мерцания картинки ("jumping brightness") на закате, внедряйте в код гистерезис. Переключайтесь в HCG при Gain > 85, а обратно в LCG только при Gain < 75.
Похожие статьи
Написать отзыв
Внимание: HTML не поддерживается! Используйте обычный текст.