โมดูลกล้อง Global Shutter¶
โมดูลกล้อง Global Shutter เป็น sensor โมโนโครมที่จับภาพการเคลื่อนไหวเร็วโดยไม่มี rolling-shutter artifacts เหมาะสำหรับการติดตามความเร็วสูง โดรน และสแนปช็อตการมองเห็นของเครื่อง โมดูลมาพร้อมกับ sensor MT9V024 หรือ MT9V034
สำหรับ datasheet ฉบับเต็ม รูปภาพ และการสั่งซื้อ ดูได้ที่ หน้าผลิตภัณฑ์ Global Shutter Camera Module
จุดเด่น¶
sensor โมโนโครม global-shutter ความละเอียด 752x480
80 FPS ที่ QVGA, 200 FPS ที่ QQVGA, 400 FPS ที่ QQQVGA
ช่วงไดนามิก 55 dB
เข้ากันได้กับ base boards โมดูลทั้งหมดของ OpenMV Cam
การใช้งาน¶
สตรีมวิดีโอระดับสีเทาที่ 320x240 (QVGA):
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QVGA)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
print(clock.fps())
sensor จะเปิดใช้งาน pixel binning อัตโนมัติที่ความละเอียดต่ำกว่า — 2x ที่ QVGA (320x240) หรือเล็กกว่า, 4x ที่ QQVGA (160x120) หรือเล็กกว่า — ซึ่งลดเวลา readout ตามสัดส่วนและผลักดันอัตราเฟรมขึ้น อย่างไรก็ตาม กล้องยังต้องรวมแสงตาม exposure window ที่ต้องการ ดังนั้นให้จับคู่การลด framesize กับ exposure cap สั้นกว่าผ่าน csi.CSI.auto_exposure เพื่อบรรลุอัตราที่สูงขึ้นจริงๆ (ภาพจะมืดลง — วางแผนใช้แสงเพิ่มเติม):
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.QQVGA)
csi0.snapshot(time=2000) # let auto-exposure settle
csi0.auto_exposure(True, exposure_us=5000) # cap exposure
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
print(clock.fps())
โหมด Triggered จะจัดแนว pixel integration ให้ตรงกับการเรียก csi.CSI.snapshot แต่ละครั้ง ทำให้การจับภาพซิงค์กับ snapshot แทนที่จะเป็น frame clock แบบ free-running ของกล้อง — มีประโยชน์สำหรับการซิงค์กับเหตุการณ์ภายนอกหรือ sensor อื่น เปิดใช้งานผ่าน csi.CSI.ioctl พร้อม csi.IOCTL_SET_TRIGGERED_MODE — อัตราเฟรมลดลงเหลือประมาณครึ่งหนึ่งของโหมด free-running เนื่องจาก readout ไม่ทำ pipeline กับการ integration ของเฟรมถัดไปอีกต่อไป:
import csi
import time
csi0 = csi.CSI()
csi0.reset()
csi0.pixformat(csi.GRAYSCALE)
csi0.framesize(csi.VGA)
csi0.snapshot(time=2000)
csi0.ioctl(csi.IOCTL_SET_TRIGGERED_MODE, True)
clock = time.clock()
while True:
clock.tick()
img = csi0.snapshot()
print(clock.fps())