sensor_auto_gain_control.py

# Este trabalho está licenciado sob a licença MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Todos os direitos reservados.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Controle de Ganho Automático do Sensor
#
# Este exemplo demonstra como controlar o ganho do sensor
# usando o algoritmo de controle automático de ganho.

# Qual é a diferença entre controle de ganho e controle de exposição?
#
# Bem, ao aumentar o tempo de exposição da imagem, você recebe mais
# luz na câmera. Isso oferece a melhor relação sinal-ruído. Você
# geralmente sempre quer aumentar o tempo de exposição... exceto que, quando você
# aumenta o tempo de exposição, diminui a taxa de quadros máxima possível
# e se algo se move na imagem, ele começará a borrar mais com um
# tempo de exposição maior. O controle de ganho permite aumentar a saída por
# pixel usando multiplicadores analógicos e digitais... no entanto, também amplifica
# o ruído. Portanto, é melhor deixar a exposição aumentar o máximo possível
# e depois usar o controle de ganho para compensar o restante.

# Podemos alcançar o exposto acima definindo um teto de ganho no algoritmo
# de controle automático de ganho. Uma vez definido, o algoritmo terá que
# aumentar o tempo de exposição para atender às necessidades de ganho, em vez de usar o ganho
# para isso. No entanto, isso tem o custo de o tempo de exposição variar
# mais quando a iluminação muda, em vez de a exposição ser constante e
# o ganho variar.

import csi
import time

csi0 = csi.CSI()
csi0.reset()  # Reinicia e inicializa o sensor.
csi0.pixformat(csi.RGB565)  # Define o formato de pixel para RGB565 (ou GRAYSCALE)
csi0.framesize(csi.QVGA)  # Define o tamanho do frame para QVGA (320x240)

# O teto de ganho em db chega a cerca de 24 db para o sensor OV7725.
csi0.auto_gain(True, gain_db_ceiling=16.0)  # Ganho padrão.

# Nota! Se você definir o teto de ganho baixo demais sem ajustar o valor alvo
# do controle de exposição, você terá bastante oscilação do controle de
# exposição se ele estiver ativado.

csi0.snapshot(time=2000)  # Aguarda as configurações fazerem efeito.
clock = time.clock()  # Cria um objeto clock para rastrear o FPS.

while True:
    clock.tick()  # Atualiza o clock de FPS.
    img = csi0.snapshot()  # Tira uma foto e retorna a imagem.
    print(
        "FPS %f, Gain %f dB, Exposure %d us"
        % (clock.fps(), csi0.gain_db(), csi0.exposure_us())
    )

results matching ""

    No results matching ""