sensor_auto_gain_control.py

# Questo lavoro è concesso in licenza MIT.
# Copyright (c) 2013-2023 OpenMV LLC. Tutti i diritti riservati.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Controllo automatico del guadagno del sensore
#
# Questo esempio mostra come controllare il guadagno del sensore
# usando l'algoritmo di controllo automatico del guadagno.

# Qual è la differenza tra il controllo del guadagno e quello dell'esposizione?
#
# Aumentando il tempo di esposizione dell'immagine si ottiene più
# luce sulla fotocamera. Questo garantisce il miglior rapporto segnale/rumore. In
# generale si vuole sempre aumentare il tempo di esposizione... tranne quando
# aumentando il tempo di esposizione si riduce il framerate massimo possibile
# e se qualcosa si muove nell'immagine inizierà a sfocarsi maggiormente con un
# tempo di esposizione più alto. Il controllo del guadagno consente di aumentare l'output per
# pixel usando moltiplicatori analogici e digitali... tuttavia amplifica anche il
# rumore. Quindi è meglio lasciare che l'esposizione aumenti il più possibile
# e poi usare il controllo del guadagno per recuperare il resto.

# È possibile ottenere ciò impostando un limite massimo di guadagno sull'algoritmo
# di controllo automatico del guadagno. Una volta impostato, l'algoritmo dovrà
# aumentare il tempo di esposizione per soddisfare le esigenze di guadagno, invece di usare il guadagno
# per farlo. Tuttavia, questo ha il costo di una maggiore variazione del tempo di esposizione
# quando l'illuminazione cambia, rispetto ad avere l'esposizione costante e
# il guadagno che varia.

import csi
import time

csi0 = csi.CSI()
csi0.reset()  # Resetta e inizializza il sensore.
csi0.pixformat(csi.RGB565)  # Imposta il formato pixel su RGB565 (o GRAYSCALE)
csi0.framesize(csi.QVGA)  # Imposta la dimensione del fotogramma su QVGA (320x240)

# Il limite massimo di guadagno in db arriva a circa 24 db per il sensore OV7725.
csi0.auto_gain(True, gain_db_ceiling=16.0)  # Guadagno predefinito.

# Nota! Se si imposta il limite di guadagno troppo basso senza regolare il valore obiettivo
# del controllo dell'esposizione, si otterranno solo molte oscillazioni dal controllo
# dell'esposizione, se è attivo.

csi0.snapshot(time=2000)  # Attendi che le impostazioni abbiano effetto.
clock = time.clock()  # Crea un oggetto clock per tracciare gli FPS.

while True:
    clock.tick()  # Aggiorna il clock degli FPS.
    img = csi0.snapshot()  # Scatta una foto e restituisce l'immagine.
    print(
        "FPS %f, Gain %f dB, Exposure %d us"
        % (clock.fps(), csi0.gain_db(), csi0.exposure_us())
    )

results matching ""

    No results matching ""