sensor_auto_gain_control.py

# Dieses Werk ist unter der MIT-Lizenz lizenziert.
# Copyright (c) 2013-2023 OpenMV LLC. Alle Rechte vorbehalten.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# Automatische Sensor-Gain-Steuerung
#
# Dieses Beispiel zeigt, wie sich der Gain des Sensors steuern lässt,
# mithilfe des Algorithmus zur automatischen Gain-Steuerung.

# Was ist der Unterschied zwischen Gain- und Belichtungssteuerung?
#
# Nun, durch Erhöhen der Belichtungszeit für das Bild erhalten Sie mehr
# Licht auf der Kamera. Dies liefert das beste Signal-Rausch-Verhältnis. Sie
# möchten die Belichtungszeit im Allgemeinen immer erhöhen ... außer wenn Sie
# die Belichtungszeit erhöhen, verringern Sie die maximal mögliche Bildrate,
# und wenn sich etwas im Bild bewegt, wird es bei einer
# höheren Belichtungszeit stärker verwischt. Die Gain-Steuerung ermöglicht es, die Ausgabe pro
# Pixel mithilfe analoger und digitaler Multiplikatoren zu erhöhen ... dies verstärkt jedoch auch
# das Rauschen. Daher ist es am besten, die Belichtung so weit wie möglich zu erhöhen
# und anschließend die Gain-Steuerung zu verwenden, um den restlichen Unterschied auszugleichen.

# Dies lässt sich erreichen, indem eine Gain-Obergrenze für die automatische
# Gain-Steuerung festgelegt wird. Sobald dies eingestellt ist, muss der Algorithmus
# die Belichtungszeit erhöhen, um den Gain-Bedarf zu decken, anstatt den Gain
# dafür zu verwenden. Dies geht jedoch auf Kosten einer stärker variierenden Belichtungszeit,
# wenn sich die Beleuchtung ändert, im Vergleich dazu, dass die Belichtung konstant bleibt und
# sich stattdessen der Gain ändert.

import csi
import time

csi0 = csi.CSI()
csi0.reset()  # Sensor zurücksetzen und initialisieren.
csi0.pixformat(csi.RGB565)  # Pixelformat auf RGB565 (oder GRAYSCALE) setzen
csi0.framesize(csi.QVGA)  # Framegröße auf QVGA (320x240) setzen

# Die Gain-dB-Obergrenze liegt beim OV7725-Sensor bei maximal etwa 24 dB.
csi0.auto_gain(True, gain_db_ceiling=16.0)  # Standard-Gain.

# Hinweis! Wenn Sie die Gain-Obergrenze niedrig einstellen, ohne den Zielwert der
# Belichtungssteuerung anzupassen, erhalten Sie lediglich starke Schwankungen der
# Belichtungssteuerung, sofern diese aktiviert ist.

csi0.snapshot(time=2000)  # Warten, bis die Einstellungen wirksam werden.
clock = time.clock()  # Ein Clock-Objekt erstellen, um die FPS zu verfolgen.

while True:
    clock.tick()  # Aktualisiert die FPS-Uhr.
    img = csi0.snapshot()  # Nimmt ein Bild auf und gibt es zurück.
    print(
        "FPS %f, Gain %f dB, Exposure %d us"
        % (clock.fps(), csi0.gain_db(), csi0.exposure_us())
    )

results matching ""

    No results matching ""