เมื่อไม่นานมานี้ Raspberry Pi Trading ได้เปิดตัว Raspberry Pi Camera Module 3 ที่มี HDR และ Autofocus, บริษัทฯ ได้ถามฉันว่าสนใจที่จะตรวจสอบโมดูลใหม่หรือไม่ และได้ส่งตัวอย่างมาให้ฉัน 3 รุ่น: Raspberry Pi Camera Module 3 รุ่น standard, รุ่น Wide และรุ่น NoIR ที่ไม่มีฟิลเตอร์อินฟราเรด และเหมาะสำหรับการถ่ายภาพตอนกลางคืนมากกว่า
DHL ใช้เวลาหนึ่งสัปดาห์เต็มในการส่งพัสดุมาที่บ้านของฉัน แต่ตอนนี้ฉันมีเวลาเพียงพอในการรีวิว Raspberry Pi Camera Module 3 ซึ่งส่วนใหญ่ใช้ libcamera แต่ยังใช้ Picamera2 ด้วย โดยเน้นรีววคุณสมบัติใหม่ เช่น HDR, Autofocus และ มุมกว้าง (wide angle) ฉันได้ลองใช้ Raspberry Pi Camera Module 3 NoIR อย่างรวดเร็ว แต่ไม่มีไฟอินฟราเรด
ฉันได้ทำ DIY ที่ยึดโมดูลกล้อง Raspberry Pi ด้วยขวดหมากฝรั่ง และฉันได้เปลี่ยนสติกเกอร์ Lotte XYLITOL ด้วยสติกเกอร์ CNXSoft สำหรับรีวิวนี้
เริ่มต้นใช้งาน Raspberry Pi Camera Module 3
ครั้งแรกที่ฉันใช้กล้อง ฉันเจอปัญหาเว็บไซด์ที่ฉันค้นหาเป็นเอกสารเก่าใน Raspberry Pi dot org ซึ่งระบบบอกให้เปิดใช้งานกล้องในการตั้งค่าและ raspi-config ที่ถูกต้องคือต้องไปที่เอกสารล่าสุดคือ Raspberry Pi dot com ฉันยังคงมีปัญหาต่อเนื่องจากฉันดาวน์โหลด Raspberry Pi OS เมื่อเดือนที่แล้ว และเมื่อฉันใช้แอปพลิเคชัน libcamera-hello เพื่อตรวจสอบว่าหากล้องพบหรือไม่ ระบบจะแจ้งว่า “no camera is available” ฉันต้องอัปเดตอิมเมจด้วย apt และก็ทำได้ดี
เป็นเรื่องที่ดี Raspberry Pi camera module 3 ทำงานได้โดยอัตโนมัติโดยไม่ต้องกำหนดค่าใดๆ เพียงแค่ตรวจสอบให้แน่ใจว่าคุณติดตั้ง Raspberry Pi OS ล่าสุดหรืออัปเกรดการติดตั้ง และตรวจสอบให้แน่ใจว่าคุณใช้เอกสารที่ถูกต้องและพร้อมใช้งาน
โมดูลกล้องทั้ง 3 สามารถตรวจจับได้อย่างถูกต้องดังนี้:
- Raspberry Pi Camera Module 3:
1 2 3 4 5 6 7 |
$ libcamera-hello --list-camera Available cameras ----------------- 0 : imx708 [4608x2592] (/base/soc/i2c0mux/i2c@1/imx708@1a) Modes: 'SRGGB10_CSI2P' : 1536x864 [120.13 fps - (0, 0)/4608x2592 crop] 2304x1296 [56.03 fps - (0, 0)/4608x2592 crop] 4608x2592 [14.35 fps - (0, 0)/4608x2592 crop] |
- Raspberry Pi Camera Module 3 Wide:
1 2 3 4 5 6 7 |
pi@raspberrypi:~ $ libcamera-hello --list-camera Available cameras ----------------- 0 : imx708_wide [4608x2592] (/base/soc/i2c0mux/i2c@1/imx708@1a) Modes: 'SRGGB10_CSI2P' : 1536x864 [120.13 fps - (0, 0)/4608x2592 crop] 2304x1296 [56.03 fps - (0, 0)/4608x2592 crop] 4608x2592 [14.35 fps - (0, 0)/4608x2592 crop] |
- Raspberry Pi Camera Module 3 NoIR:
1 2 3 4 5 6 7 |
pi@raspberrypi:~ $ libcamera-hello --list-camera Available cameras ----------------- 0 : imx708_noir [4608x2592] (/base/soc/i2c0mux/i2c@1/imx708@1a) Modes: 'SRGGB10_CSI2P' : 1536x864 [120.13 fps - (0, 0)/4608x2592 crop] 2304x1296 [56.03 fps - (0, 0)/4608x2592 crop] 4608x2592 [14.35 fps - (0, 0)/4608x2592 crop] |
แต่ละโมดูลมีชื่อที่แตกต่างกัน ดังนั้นหากคุณกำลังเขียนแอปพลิเคชันที่ต้องการตรวจหารุ่นต่างๆ ของกล้อง ก็ไม่น่าจะเป็นปัญหา
ตามที่ฉันได้กล่าวไปตอนทำ DIY ที่ยึดโมดูลกล้อง ฉันมีปัญหากับ Camera Module 3 Wide หลังจากนั้นไม่นาน คอมพิวเตอร์แจ้งส่งคืนข้อผิดพลาดหรือแสดงว่ากล้องไม่พร้อมใช้งาน ตอนแรกฉันพยายามตรวจการเชื่อมต่อสายเคเบิล FPC แต่ไม่ได้ผล และฉันคิดว่าฉันทำให้โมดูลเสียหาย แต่ในที่สุดฉันก็พบว่าตัวกล้องหลุดออกจากตัวเชื่อมต่อเล็กน้อย (ฉันเอามันออกมาถ่ายรูป)
เมื่อฉันใส่เข้าไปแล้วกดอีกครั้ง โมดูลกล้อง Wide ก็ทำงานเหมือนที่คาดไว้
การทดสอบ HDR และออโต้โฟกัสด้วย libcamera
เริ่มด้วยตัวอย่างภาพถ่ายด้วย libcamera ภาพถ่ายที่ไม่ใช่ HDR ด้วยโมดูลปกติ (standard):
1 |
libcamera-jpeg --rotation 180 --hdr 0 -o rpi-cm3-no-hdr.jpg |
หมายเหตุ ฉันต้องหมุนรูปภาพ 180 องศาเนื่องจากวิธีติดตั้งโมดูล คุณสามารถคลิกที่รูปภาพเพื่อดูขนาดต้นฉบับ
ตอนนี้มาทำกับ HDR:
1 |
libcamera-jpeg --rotation 180 --hdr 1 -o rpi-cm3-hdr.jpg |
ฉันถ่ายภาพก่อนพระอาทิตย์จะตกดินไม่กี่ชั่วโมงและความแตกต่างนั้นไม่มากนัก แต่เราสามารถทำให้พื้นหลังด้านซ้ายดีขึ้นในภาพถ่าย HDR เราเสียความละเอียดด้วย HDR เนื่องจากในขณะที่ภาพถ่ายแรกมีความละเอียด 4608 x 2592 แต่ภาพ HDR คือ 2304 x 2196
The Camera Module 3 (และ NoIR) สามารถโฟกัสจาก 10 ซม. จนถึงระยะไม่มีที่สิ้นสุด (infinity) และฉันจะย้ายวัตถุเข้ามาใกล้กล้อง ฉันเห็นชัดเจนบนหน้าจอ HDMI ขนาดเล็กที่ฉันใช้ แต่มันอยู่ห่างจากเลนส์ประมาณ 9 ซม. ดังนั้นโลโก้จึงเบลอเล็กน้อย เราสามารถเห็นพื้นหลังเบลอเนื่องจากการโฟกัส
ฉันยังใช้ libcamera-vid เพื่อทดสอบโฟกัสอัตโนมัติขณะถ่ายวิดีโอ นั่นคือเมื่อเปิดใช้งาน HDR
มันทำงานได้เร็วเหมาะสมกับสภาพแวดล้อมที่มีแสงสว่างเพียงพอแม้จะเปิดใช้ HDR, Autofocus รู้สึกเร็วขึ้นเล็กน้อยถ้าไม่ใช้ HDR
ตอนนี้มาเปลี่ยนเป็น Raspberry Pi Camera Module 3 Wide ในตำแหน่งเดียวกันกับโมดูลแรก
เรามีขอบเขตการมองเห็นที่กว้างขึ้น และในฉากนี้ HDR มีชีวิตขึ้นมาเพราะเราสามารถเห็นรายละเอียดบางอย่างใต้หลังคาของศาลา
ฉันวางโลโก้ CNXSoft ในตำแหน่งเดิม (ประมาณ 9 ซม. จากเลนส์) และเราสามารถมองเห็นขวดได้มากขึ้นด้วยมุมมองกว้างขึ้น และชัดขึ้นเนื่องจากโมดูลกล้อง Wide สามารถโฟกัสจาก 5 ซม. จนถึงระยะไม่มีที่สิ้นสุด (infinity)
ออโต้โฟกัสทำงานได้ค่อนข้างดีในวิดีโอด้านล่าง
แต่ฉันต้องการทราบบางสิ่งที่น่าสนใจซึ่งเกิดขึ้นกับทั้งโมดูลกล้องปกติ และโมดูลกล้อง Wideในโหมดวิดีโอ มุมมองกว้างขึ้นเมื่อเปิดใช้ HDR ในขณะที่โซนที่จับภาพจะเล็กลงมากเมื่อปิดใช้ HDR
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
pi@raspberrypi:~ $ libcamera-vid --rotation 180 --hdr 1 -o rpi-cm3-wide-auto-focus-hdr-tux.h264 -t 20000 Made X/EGL preview window [0:02:40.658604215] [1449] INFO Camera camera_manager.cpp:299 libcamera v0.0.2+55-5df5b72c [0:02:40.797061097] [1450] INFO RPI raspberrypi.cpp:1425 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media4 and ISP device /dev/media2 [0:02:40.797718687] [1449] INFO Camera camera.cpp:1026 configuring streams: (0) 640x480-YUV420 [0:02:40.797961668] [1450] INFO RPI raspberrypi.cpp:805 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 2304x1296-SRGGB10_1X10 - Selected unicam format: 2304x1296-pRAA Halting: reached timeout of 20000 milliseconds. pi@raspberrypi:~ $ libcamera-vid --rotation 180 --hdr 0 -o rpi-cm3-wide-auto-focus-no-hdr-tux.h264 -t 20000 Made X/EGL preview window [0:03:19.498184280] [1458] INFO Camera camera_manager.cpp:299 libcamera v0.0.2+55-5df5b72c [0:03:19.637463889] [1459] INFO RPI raspberrypi.cpp:1425 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media4 and ISP device /dev/media2 [0:03:19.638200351] [1458] INFO Camera camera.cpp:1026 configuring streams: (0) 640x480-YUV420 [0:03:19.638514628] [1459] INFO RPI raspberrypi.cpp:805 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 1536x864-SRGGB10_1X10 - Selected unicam format: 1536x864-pRAA Halting: reached timeout of 20000 milliseconds. |
นั่นอาจเป็นเพราะความละเอียดตั้งไว้ที่ 2304×1296 พร้อม HDR และ 1536×864 ไม่มี HDR ฉันพยายามบังคับความละเอียดเป็น 4608×2592 หรือ 2304×1296 ในโหมดที่ไม่ใช่ HDR:
1 2 3 4 5 6 7 |
pi@raspberrypi:~ $ libcamera-vid --rotation 180 --hdr 0 -o rpi-cm3-wide-auto-focus-no-hdr-tuxk-.h264 -t 20000 --width 4608 --height 2592 Made X/EGL preview window [0:06:48.468537458] [1497] INFO Camera camera_manager.cpp:299 libcamera v0.0.2+55-5df5b72c [0:06:48.605601452] [1498] INFO RPI raspberrypi.cpp:1425 Registered camera /base/soc/i2c0mux/i2c@1/imx708@1a to Unicam device /dev/media4 and ISP device /dev/media2 [0:06:48.606294581] [1497] INFO Camera camera.cpp:1026 configuring streams: (0) 4608x2592-YUV420 [0:06:48.606555655] [1498] INFO RPI raspberrypi.cpp:805 Sensor: /base/soc/i2c0mux/i2c@1/imx708@1a - Selected sensor format: 4608x2592-SRGGB10_1X10 - Selected unicam format: 4608x2592-pRAA ERROR: *** failed to start output streaming *** |
วิดีโอถูกบันทึกที่ความละเอียด 640 × 480:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
pi@raspberrypi:~ $ mediainfo rpi-cm3-wide-auto-focus-hdr-tux.h264 General Complete name : rpi-cm3-wide-auto-focus-hdr-tux.h264 Format : AVC Format/Info : Advanced Video Codec File size : 4.41 MiB Overall bit rate mode : Constant Video Format : AVC Format/Info : Advanced Video Codec Format profile : High@L4 Format settings : CABAC / 1 Ref Frames Format settings, CABAC : Yes Format settings, Reference frames : 1 frame Format settings, GOP : M=1, N=60 Bit rate mode : Constant Bit rate : 10 000 kb/s Width : 640 pixels Height : 480 pixels Display aspect ratio : 4:3 Frame rate : 30.000 FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 1.085 pi@raspberrypi:~ $ mediainfo rpi-cm3-wide-auto-focus-no-hdr-tux.h264 General Complete name : rpi-cm3-wide-auto-focus-no-hdr-tux.h264 Format : AVC Format/Info : Advanced Video Codec File size : 5.57 MiB Overall bit rate mode : Constant Video Format : AVC Format/Info : Advanced Video Codec Format profile : High@L4 Format settings : CABAC / 1 Ref Frames Format settings, CABAC : Yes Format settings, Reference frames : 1 frame Format settings, GOP : M=1, N=60 Bit rate mode : Constant Bit rate : 10 000 kb/s Width : 640 pixels Height : 480 pixels Display aspect ratio : 4:3 Frame rate : 30.000 FPS Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 1.085 |
โมดูลกล้อง NoIR จะใช้ในฉากมืดและตอนกลางคืน โดยจะใช้แสง IR ฉันเพิ่งลองใช้คืนที่เปิดไฟ
ฉันคาดหวังภาพสีชมพู ดังนั้นฉันจึงรู้สึกเหมือนมีบางอย่างผิดปกติ การเปลี่ยนไปใช้โมดูลกล้องปกติไม่ได้สร้างความแตกต่างมากนักสำหรับฉากนี้
ฉันยังได้ลองใช้กล้อง NoIR ในระหว่างกลางวันเพื่อให้แน่ใจว่าเอาต์พุตของกล้องจะแตกต่างออกไป และจริง ๆ แล้วมันคือสีซีดจางและเป็นสีชมพูตามที่คาดไว้ แม้ว่าจะไม่ชัดเท่ากับ ตัวอย่างจากกล้อง NoiR v2
ฉันยังได้ลองใช้ autofocus ในโหมด HDR ด้วยโมดูลกล้อง NoIR ในเวลากลางคืน และมันก็ทำงานได้ไม่ดีเท่าที่ควร
ฉันยังเจอปัญหานี้ในช่วงเวลากลางวันเป็นครั้งคราว และขึ้นอยู่กับฉากและสภาพแสงด้วย จริงๆ แล้วฉันมีปัญหาคล้ายๆ กันกับกล้อง DSLR แต่ฉันสามารถแตะที่หน้าจอหรือเปลี่ยนไปใช้ manual focus ได้เสมอ จะสามารถทำได้กับ Camera Module 3 แต่จะต้องมีหน้าจอสัมผัส หมุนแบบ Rotary และใช้ซอฟต์แวร์เพื่อรองรับคุณสมบัติเหล่านั้น
Camera Module 3 และ Picamera2
สุดท้าย ฉันได้ลองใช้ Picamera2 Python camera library ที่เได้ปิดตัวอย่างเป็นทางการเมื่อเดือนกันยายนปีที่แล้ว ซึ่งอยู่บนฐานไลบรารี libcamera ดังนั้นฉันจึงใช้มันกับโมดูลกล้องปกติท่านั้นเพื่อให้แน่ใจว่าคุณสมบัติใหม่ถูกนำไปใช้อย่างถูกต้อง
ฉันใช้แอพ Qt Picamera2 หลังจากนั้นได้ดังนี้
1 2 |
git clone https://github.com/raspberrypi/picamera2 python3 picamera2/apps/app_full.py |
แอปพลิเคชันเริ่มต้นและฉันสามารถเห็นเอาต์พุตของกล้องสำหรับทั้งการจับภาพภาพนิ่ง…
และแท็บวิดีโอ
หน้าต่างตัวอย่างมีขนาดเล็กมากเพราะฉันใช้หน้าจอแสดงผล HDMI ขนาด 1280 x 800 และมันจะดูดีกว่ามากบนจอแสดงผล Full HD คุณจะสังเกตเห็นข้อความ “HDR unavailable: install opencv เพื่อลอง”
Picamera2 เป็นไลบรารี Python ดังนั้นฉันจึงลอง install Python OpenCV ด้วย pip:
1 2 |
pip install --upgrade pip setuptools wheel pip install opencv-python |
คำสั่งสุดท้ายใช้เวลาประมาณ 1 ชั่วโมง 30 จึงจะเสร็จสมบูรณ์ และล้มเหลวเนื่องจากไฟล์หายไป:
1 2 3 4 5 6 7 |
FileNotFoundError: [Errno 2] No such file or directory: '_skbuild/linux-armv7l-3.9/cmake-install/python/cv2/config-3.py' [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for opencv-python Failed to build opencv-python ERROR: Could not build wheels for opencv-python, which is required to install pyproject.toml-based projects |
ฉันลงเอยด้วยการใช้เวลาสี่ชั่วโมงเพื่อหาว่าฉันจะใช้ apt แทน:
1 |
sudo apt install python3-opencv |
ใช้เวลาประมาณ 2 ถึง 3 นาทีในการ install และตอนนี้ตัวเลือก HDR จะปรากฏขึ้นพร้อมความสามารถในการเลือกจำนวนเฟรม HDR และการตั้งค่า gamma
แอปนี้มีตัวเลือกอื่นๆ มากมาย เช่น การปรับแต่งภาพ, การเลื่อน/ขยาย (pan/zoom), AEC/AWB และฉันยังสังเกตเห็นว่าฉันสามารถปรับโฟกัสด้วยตนเอง (focus manually) โดยการการเลื่อน แต่เมื่อฉันคลิกที่ปุ่ม “ถ่ายภาพ” คอมพิวเตอร์ Raspberry Pi 4 จะค้างนานหลายวินาที (Numlock จะไม่สามารถเปิด/ปิด) และในที่สุด แอป Qt Picamera2 ก็หยุดทำงาน ฉันไปตรวจสอบ kernel เพื่อดูว่าระบบมีหน่วยความจำไม่เพียงพอ:
1 2 |
[ 362.162878] oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,global_oom,task_memcg=/,task=python3,pid=1401,uid=1000 [ 362.162950] Out of memory: Killed process 1401 (python3) total-vm:1328976kB, anon-rss:662432kB, file-rss:0kB, shmem-rss:396kB, UID:1000 pgtables:2176kB oom_score_adj:0 |
ดังนั้น นอกจากการใช้หน้าจอแสดงผลแบบ Full HD แล้ว การรันแอป Qt บนบอร์ดที่มี RAM มากขึ้นอาจดีกว่า เนื่องจากฉันใช้ Raspberry Pi 4 SBC ที่มี RAM 1GB เท่านั้น ฉันไม่มีปัญหาดังกล่าวกับ command line utilities ที่ใช้ libcamera
ฉันขอขอบคุณ Raspberry Pi Trading ที่ส่ง Camera Module 3 มาให้รีวิว รุ่น standard ขายในราคา $25(~820฿) และโมดูล wide-angle (มุมกว้าง) ราคา $35(~1,100฿) คุณจะพบได้ที่ตัวแทนจำหน่าย Raspberry Pi ทั่วไป
แปลจากบทความภาษาอังกฤษ : Raspberry Pi Camera Module 3 review – HDR, autofocus, wide angle, and NoIR camera
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT