sensor_auto_gain_control.py

# Ce travail est publié sous licence MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tous droits réservés.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Contrôle automatique du gain du capteur
#
# Cet exemple montre comment contrôler le gain du capteur
# à l'aide de l'algorithme de contrôle automatique du gain.

# Quelle est la différence entre le contrôle du gain et celui de l'exposition ?
#
# En augmentant le temps d'exposition de l'image, vous obtenez plus de
# lumière sur la caméra. Cela vous donne le meilleur rapport signal/bruit. Vous
# voulez en général toujours augmenter le temps d'exposition... sauf que, lorsque vous
# augmentez le temps d'exposition, vous diminuez la fréquence d'images maximale possible
# et si quelque chose bouge dans l'image, celle-ci commencera à devenir plus floue avec un
# temps d'exposition plus élevé. Le contrôle du gain permet d'augmenter la sortie par
# pixel à l'aide de multiplicateurs analogiques et numériques... cependant, cela amplifie
# également le bruit. Il est donc préférable de laisser l'exposition augmenter autant que possible
# puis d'utiliser le contrôle du gain pour combler le reste.

# Nous pouvons y parvenir en définissant un plafond de gain sur le contrôle
# automatique de gain. Une fois ce plafond défini, l'algorithme devra
# augmenter le temps d'exposition pour répondre aux besoins de gain plutôt que d'utiliser le gain
# pour cela. Cependant, cela se fait au prix d'une variation plus importante du temps
# d'exposition lors des changements d'éclairage, par rapport à une exposition constante et
# un gain variable.

import csi
import time

csi0 = csi.CSI()
csi0.reset()  # Réinitialiser et initialiser le capteur.
csi0.pixformat(csi.RGB565)  # Définir le format de pixel sur RGB565 (ou GRAYSCALE)
csi0.framesize(csi.QVGA)  # Définir la taille de l'image sur QVGA (320x240)

# Le plafond de gain en dB atteint environ 24 dB pour le capteur OV7725.
csi0.auto_gain(True, gain_db_ceiling=16.0)  # Gain par défaut.

# Remarque : si vous définissez un plafond de gain trop bas sans ajuster la valeur cible
# du contrôle d'exposition, vous obtiendrez simplement beaucoup d'oscillations du contrôle
# d'exposition s'il est activé.

csi0.snapshot(time=2000)  # Attendre que les réglages prennent effet.
clock = time.clock()  # Créer un objet horloge pour suivre le FPS.

while True:
    clock.tick()  # Mettre à jour l'horloge FPS.
    img = csi0.snapshot()  # Prendre une photo et renvoyer l'image.
    print(
        "FPS %f, Gain %f dB, Exposure %d us"
        % (clock.fps(), csi0.gain_db(), csi0.exposure_us())
    )

results matching ""

    No results matching ""