sensor_auto_gain_control.py

# هذا العمل مرخص بموجب ترخيص MIT.
# حقوق النشر (c) 2013-2023 OpenMV LLC. جميع الحقوق محفوظة.
# https://github.com/openmv/openmv/blob/master/LICENSE
#
# التحكم التلقائي في كسب الحساس
#
# يوضح هذا المثال كيفية التحكم في كسب الحساس
# باستخدام خوارزمية التحكم التلقائي في الكسب.

# ما الفرق بين التحكم في الكسب والتحكم في زمن التعريض الضوئي؟
#
# حسنًا، بزيادة زمن التعريض الضوئي للصورة فإنك تحصل على المزيد من
# الضوء على الكاميرا. هذا يمنحك أفضل نسبة إشارة إلى ضوضاء. أنت
# بشكل عام تريد دائمًا زيادة زمن التعريض الضوئي... إلا أنك عندما
# تزيد زمن التعريض الضوئي فإنك تقلل أقصى معدل إطارات ممكن
# وإذا تحرك أي شيء في الصورة فسيبدأ بالتشوش أكثر مع
# زمن تعريض ضوئي أعلى. يتيح لك التحكم في الكسب زيادة الخرج لكل
# بكسل باستخدام مضاعفات تناظرية ورقمية... مع ذلك، فإنه يضخم أيضًا
# الضوضاء. لذا، من الأفضل ترك زمن التعريض الضوئي يزداد قدر الإمكان
# ثم استخدام التحكم في الكسب لتعويض أي فرق متبقٍ.

# يمكننا تحقيق ذلك عن طريق تعيين سقف للكسب في خوارزمية
# التحكم التلقائي في الكسب. بمجرد تعيين ذلك، ستضطر الخوارزمية إلى
# زيادة زمن التعريض الضوئي لتلبية أي احتياجات للكسب بدلاً من استخدام الكسب
# للقيام بذلك. ومع ذلك، فإن هذا يأتي على حساب تغيّر زمن التعريض الضوئي
# بشكل أكبر عند تغيّر الإضاءة، مقارنةً بثبات زمن التعريض الضوئي و
# تغيّر الكسب.

import csi
import time

csi0 = csi.CSI()
csi0.reset()  # إعادة ضبط المستشعر وتهيئته.
csi0.pixformat(csi.RGB565)  # تعيين تنسيق البكسل إلى RGB565 (أو GRAYSCALE)
csi0.framesize(csi.QVGA)  # تعيين حجم الإطار إلى QVGA (320x240)

# يصل سقف الكسب بوحدة db إلى حوالي 24 db كحد أقصى لحساس OV7725.
csi0.auto_gain(True, gain_db_ceiling=16.0)  # الكسب الافتراضي.

# ملاحظة! إذا قمت بتعيين سقف الكسب منخفضًا دون ضبط التحكم في التعريض الضوئي
# للقيمة المستهدفة، فستحصل فقط على الكثير من التذبذب من
# التحكم في التعريض الضوئي إن كان مفعّلًا.

csi0.snapshot(time=2000)  # انتظر حتى تدخل الإعدادات حيز التنفيذ.
clock = time.clock()  # أنشئ كائن ساعة (clock) لتتبع معدل الإطارات (FPS).

while True:
    clock.tick()  # تحديث ساعة معدل الإطارات (FPS).
    img = csi0.snapshot()  # التقاط صورة وإرجاعها.
    print(
        "FPS %f, Gain %f dB, Exposure %d us"
        % (clock.fps(), csi0.gain_db(), csi0.exposure_us())
    )

results matching ""

    No results matching ""