sensor_manual_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
#
# Manuelle Sensor-Gain-Steuerung
#
# Dieses Beispiel demonstriert, wie sich der Weißabgleich-Gain des
# des Gains manuell steuern lässt, im Gegensatz 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.

import csi
import time

# Ändern Sie diesen Wert, um den Gain anzupassen. Probieren Sie 10.0/0/0.1/usw.
GAIN_SCALE = 1.0

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

# Gibt den anfänglichen Gain zum Vergleich aus.
print("Initial gain == %f db" % csi0.gain_db())

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

# Sie müssen die automatische Belichtungssteuerung und den automatischen Weißabgleich deaktivieren,
# da diese sonst die Bildbelichtung ändern und damit alle Gain-Einstellungen rückgängig machen
# die Sie vorgenommen haben ...
csi0.auto_exposure(False)
csi0.auto_whitebal(False)
# Die obigen Einstellungen müssen erst wirksam werden ...
csi0.snapshot(time=500)

current_gain_in_decibels = csi0.gain_db()
print("Current Gain == %f db" % current_gain_in_decibels)

# Die automatische Gain-Steuerung (AGC) ist standardmäßig aktiviert. Der Aufruf der folgenden Funktion
# deaktiviert die automatische Gain-Steuerung des Sensors. Das zusätzliche Argument "gain_db"
# überschreibt dann den automatischen Gain-Wert, nachdem AGC deaktiviert wurde.
csi0.auto_gain(False, gain_db=current_gain_in_decibels * GAIN_SCALE)

print("New gain == %f db" % csi0.gain_db())
# csi0.gain_db() gibt den genauen Gain-Wert des Kamerasensors in Dezibel zurück.
# Dies kann jedoch ein anderer Wert sein als der angeforderte, da
# der Sensorcode den Gain in einen kleinen und einen großen Gain-Wert umrechnet, die
# nicht alle möglichen Werte annehmen können ...

# Wenn Sie den automatischen Gain wieder einschalten möchten, führen Sie aus: csi0.auto_gain(True)
# Beachten Sie, dass der Kamerasensor den Gain dann nach eigenem Ermessen ändert.

# Der Aufruf von: csi0.auto_gain(False)
# deaktiviert lediglich die Aktualisierung des Gain-Werts, ändert jedoch nicht den Gain-Wert,
# den der Kamerasensor als geeignet ermittelt hat.

while True:
    clock.tick()  # Aktualisiert die FPS-Uhr.
    img = csi0.snapshot()  # Nimmt ein Bild auf und gibt es zurück.
    print(clock.fps())  # Hinweis: Die OpenMV Cam läuft etwa halb so schnell, wenn sie
    # mit der IDE verbunden ist. Die FPS sollten sich nach dem Trennen erhöhen.

results matching ""

    No results matching ""