sensor_exposure_control.py

# この作品はMITライセンスの下で提供されています。
# Copyright (c) 2013-2023 OpenMV LLC. 全著作権所有。
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# センサーの露光制御
#
# この例では、カメラセンサーの
# 露光を、自動露光制御に任せる代わりに手動で制御する方法を示します。

# ゲイン制御と露光制御の違いは何でしょうか?
#
# 露光時間を長くすると、より多くの
# 光をカメラに取り込めます。これによりS/N比が最良になります。
# 一般的には露光時間を長くしたいところですが……露光時間を
# 長くすると、最大フレームレートが低下し、
# また画像内で何かが動くと、露光時間が長いほど
# ブレが大きくなります。ゲイン制御を使うと、アナログ・デジタル乗数によって
# ピクセルごとの出力を増加させることができますが……ノイズも
# 増幅されます。そのため、できる限り露光時間を増やしてから、
# 残りをゲイン制御で補うのが最善です。

import csi
import time

# この値を変更して露光を調整してください。10.0/0.1など試してみてください。
EXPOSURE_TIME_SCALE = 1.0

csi0 = csi.CSI()
csi0.reset()  # センサーをリセットして初期化します。
csi0.pixformat(csi.RGB565)  # ピクセルフォーマットをRGB565(またはGRAYSCALE)に設定します
csi0.framesize(csi.QVGA)  # フレームサイズをQVGA(320x240)に設定します

# 比較のため、初期の露光時間を表示します。
print("Initial exposure == %d" % csi0.exposure_us())

csi0.snapshot(time=2000)  # 設定が反映されるまで待ちます。
clock = time.clock()  # FPSを計測するためのclockオブジェクトを作成します。

# 自動ゲイン制御と自動ホワイトバランスをオフにする必要があります。
# そうしないと、設定した露光を打ち消すように画像のゲインが変更されてしまいます
# (設定した内容が反映されなくなります)。
csi0.auto_gain(False)
csi0.auto_whitebal(False)
# 上記の設定が反映されるまで待つ必要があります……
csi0.snapshot(time=500)

current_exposure_time_in_microseconds = csi0.exposure_us()
print("Current Exposure == %d" % current_exposure_time_in_microseconds)

# 自動露光制御(AEC)はデフォルトで有効です。以下の関数を呼び出すと
# センサーの自動露光制御が無効になります。さらに"exposure_us"引数を指定すると、
# AECが無効化された後の自動露光値を上書きできます。
csi0.auto_exposure(
    False, exposure_us=int(current_exposure_time_in_microseconds * EXPOSURE_TIME_SCALE)
)

print("New exposure == %d" % csi0.exposure_us())
# csi0.exposure_us()は、カメラセンサーの正確な露光時間を
# マイクロ秒単位で返します。ただし、これは指定した値とは異なる場合があります。
# これは、センサーのコードが露光時間(マイクロ秒)を
# 行/ピクセル/クロック時間に変換するため、マイクロ秒と完全には一致しないためです……

# 自動露光を再度有効にしたい場合は: csi0.auto_exposure(True) としてください
# この場合、カメラセンサーは自身の判断で露光時間を変更するようになります。

# csi0.auto_exposure(False) を実行すると、
# 露光値の更新が無効になるだけで、カメラセンサーが判断した
# 露光値自体は変更されません。

while True:
    clock.tick()  # FPSクロックを更新します。
    img = csi0.snapshot()  # 画像を撮影して返します。
    print(clock.fps())  # 注意: OpenMV CamはIDEに接続されている間、
    # 速度が約半分になります。切断すればFPSは向上します。

results matching ""

    No results matching ""