จุดประสงค์การเรียนรู้
เพื่อให้ผู้เรียนสามารถใช้งานกล้อง CSI ผ่านบอร์ดJetson Nano ได้
ทฤษฎีการเรียนรู้
ความหมายของ CSI
- CSI (Camera Serial Interface) เป็นมาตรฐานการเชื่อมต่อกล้องดิจิทัลเข้ากับระบบประมวลผล เช่น Jetson Nano, Raspberry Pi, Embedded System
- CSI พัฒนามาจาก MIPI (Mobile Industry Processor Interface) Consortium
- ใช้สาย FFC (Flat Flex Cable) ในการเชื่อมต่อกับพอร์ต MIPI-CSI บนบอร์ด
Image Sensor (CMOS/CCD) จับแสงและแปลงเป็นสัญญาณไฟฟ้า
ข้อมูลภาพถูกส่งออกจากเซนเซอร์ ผ่าน CSI lanes
Clock Lane (ใช้ซิงโครไนซ์สัญญาณ)
Data Lanes (ส่งข้อมูลภาพ)
ข้อมูลถูกส่งแบบ ความเร็วสูง (High-Speed Serial) ไปยัง Image Signal Processor (ISP) บนบอร์ด
ISP ทำการ ประมวลผลภาพเบื้องต้น เช่น การลดสัญญาณรบกวน, White Balance, Exposure Control ก่อนส่งต่อให้ CPU หรือ GPU
Connector (MIPI-CSI Port) → ใช้สาย FFC เสียบเข้ากล้อง
Lanes
1 Clock Lane
1–4 Data Lanes (Jetson Nano ใช้ 2 lanes)
การเชื่อมต่อเป็นแบบ Point-to-Point ระหว่างกล้องกับ SoC
4. ข้อดีของ CSI เทียบกับ USB Camera
วัสดุอุปกรณ์
กล้องCSI สำหรับบอร์ดJetson Nanoเท่านั้ัน (โดยทั่วไปกล้องCSIของRaspberry Pi จะไม่สามารถใช้ได้กับบอร์ดJetson Nanoได้)
บอร์ด Jetson Nano
วิธีทำการทดลอง
ทำการต่อกล้องCSI ดังภาพ
2. พิมพ์คำสั่งในterminal ว่าเห็นกล้องหรือไม่ ถ้าเจอกล้องจะมีคำว่า/dev/video0
ls /dev/video*
3. ทดสอบเปิดกล้องใช้ nvgstcapture (เครื่องมือของ NVIDIA)
nvgstcapture-1.0
4. ทดสอบในopen cv
import cv2
cap = cv2.VideoCapture("nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, framerate=30/1, format=NV12 ! nvvidconv ! video/x-raw, format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink", cv2.CAP_GSTREAMER)
while True:
ret, frame = cap.read()
if not ret:
break
cv2.imshow("CSI Camera", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()