CV for Beginners

Computer vision สำหรับงานตรวจสอบในอุตสาหกรรม ด้วย Python และ OpenCV ใน 5 ใบงาน

Author

ผศ.ดร.ศุภชัย วรพจน์พิศุทธิ์

Published

15 ตุลาคม 2569

เว็บนี้ใช้ทำอะไร

โรงงานใช้กล้องทำงาน 4 แบบ คือ หาตำแหน่ง ชิ้นงาน วัดขนาด ตรวจสอบ ว่าดีหรือเสีย และ อ่านรหัส ทั้งหมดต้องทำทันความเร็วของสายการผลิตและตัดสินผิดให้น้อยที่สุด

ชุดใบงานนี้เริ่มจากโจทย์จริงตั้งแต่ชั่วโมงแรก ใบงาน 1 ใช้ AI นับรถจากวิดีโอได้ด้วยโค้ดไม่ถึง 30 บรรทัด จากนั้นใบงาน 2–5 ค่อย ๆ เปิดกล่องดำ ว่าภาพกลายเป็นตัวเลขที่เชื่อถือได้อย่างไร จนจบที่สถานีตรวจที่วัดขนาดชิ้นงานแล้วสั่งไฟ OK/NG บนบอร์ด Arduino

flowchart LR
    A["1 นับวัตถุด้วย AI<br/>ได้ผลเร็ว แต่อธิบายไม่ได้"] --> B["2 กล้องในฐานะเซนเซอร์<br/>ห่วงโซ่การวัด"]
    B --> C["3 แสง เวลา<br/>และการรับภาพ"]
    C --> D["4 ตรวจสอบชิ้นงาน<br/>OK/NG"]
    D --> E["5 วัดขนาด<br/>และสถานีตรวจ"]

ห่วงโซ่การวัด: แกนของทุกใบงาน

ทุกใบงานมองกล้องเป็น เซนเซอร์ ตัวหนึ่ง สัญญาณดิบคือภาพ ซึ่งต้องผ่านหลายขั้นก่อนจะได้ค่าที่วัดได้ หัวของแต่ละใบงานจะเน้นขั้นที่ใบงานนั้นฝึก

Scene -> Camera -> Pixels -> Features -> Measurand -> Calibration -> Value + Uncertainty -> Decision (OK/NG)
ขั้น ความหมาย ตัวอย่าง
Scene + Camera ชิ้นงาน แสง และกล้องที่แปลงแสงเป็นสัญญาณ แสง backlight, exposure ที่ล็อกไว้
Pixels สัญญาณดิบ เป็น NumPy array 480 x 640 x 3 ค่า
Features ลักษณะเด่นที่ดึงจากภาพ mask, contour, Bounding Box
Measurand ปริมาณที่ต้องการ จำนวน, ขนาด, มี/ไม่มี
Calibration ความสัมพันธ์กับหน่วยจริง pixel → mm
Uncertainty ความเชื่อถือได้ของค่า error, S.D., FRR/FAR
Decision ผลที่ส่งต่อให้สายการผลิต OK/NG, ไฟเขียว/แดง

ใบงาน

ใบงาน เรื่อง คำถามที่ตอบ ทักษะอุตสาหกรรม
0 เตรียมเครื่องมือ ติดตั้ง Python, OpenCV, ต่อกล้อง
1 นับวัตถุด้วย AI AI นับได้ถูกต้องแค่ไหน detection, เส้นนับ, error
2 กล้องในฐานะเซนเซอร์ จากภาพเป็นค่าที่วัดได้ต้องผ่านอะไร สี HSV, contour, pixel → mm
3 แสง เวลา และการรับภาพ ตั้งกล้องและแสงอย่างไรให้ตรวจได้ทันการผลิต การจัดแสง, threshold, fps, latency, motion blur
4 ตรวจสอบชิ้นงาน OK/NG เครื่องตรวจตัดสินผิดบ่อยแค่ไหน หาตำแหน่งด้วย ArUco, presence/absence, FRR/FAR
5 วัดขนาดและสถานีตรวจ ระบบนี้ใช้ตรวจตาม tolerance ได้หรือไม่ สอบเทียบกล้อง, %GRR, ส่งผลไปบอร์ด

แต่ละใบงานใช้เวลาประมาณ 3 ชั่วโมง และมีรูปแบบเดียวกัน คือ โจทย์ → ทำให้ใช้ได้ → เปิดดู pixel ว่าทำไมได้หรือไม่ได้ → ปรับ → วัดผลเทียบค่าอ้างอิง ทุกใบงานเริ่มด้วย โค้ดตั้งต้น ที่รันได้ด้วยตัวเอง และมี ใบบันทึกผล PDF ให้เขียนผลบน tablet แล้วส่ง แนวคิดพื้นฐานที่ใช้ในแต่ละใบงานรวมไว้ที่หน้า แนวคิดพื้นฐาน สำหรับค้นย้อนหลัง

อุปกรณ์ (กลุ่มละ 2–3 คน)

ใช้ของที่หาได้ในสำนักงานและโทรศัพท์ของนักศึกษาเป็นหลัก ไม่ต้องซื้ออุปกรณ์จัดแสงเฉพาะทาง

อุปกรณ์ ใช้ในใบงาน
โน้ตบุ๊กที่ติดตั้ง Python 3.10 ขึ้นไป ทุกใบ
โทรศัพท์เครื่องที่ 1 เป็นกล้อง (แอป IP Webcam / DroidCam) หรือ USB webcam พร้อมขาตั้งที่หันกล้องลงตั้งฉากกับโต๊ะ 2–5
โทรศัพท์หรือแท็บเล็ตเครื่องที่ 2 เป็นไฟฉายและ backlight (เปิดภาพขาวเต็มจอ) 3, 5
กล่องกระดาษบุขาว, กระดาษ A4 3
ลวดเสียบกระดาษ, คลิปหนีบกระดาษสีดำ, เทปใส 3
แผ่นทดสอบที่พิมพ์จากไฟล์ใน data/ 2–5
เหรียญ 1, 5, 10 บาท และเวอร์เนียร์คาลิปเปอร์ 4, 5
Arduino UNO R4 WiFi + LED 2 สี 5
สายชาร์จหรือ power bank สำหรับโทรศัพท์ ทุกใบ
Tipไม่มีกล้อง?

ทุกใบงานมีภาพและวิดีโอตัวอย่างใน data/ ให้ทำได้โดยไม่ต้องมีกล้อง และทำให้ผลของทั้งห้องเทียบกันได้

โครงสร้าง repo

cv-for-beginners/
├── content/    ต้นฉบับหน้าเว็บ (Quarto)
├── code/       โค้ดตั้งต้นของแต่ละใบงาน
├── worksheets/ ใบบันทึกผล PDF สำหรับเขียนบน tablet
├── data/       แผ่นทดสอบและภาพตัวอย่าง
└── scripts/    สคริปต์สร้างแผ่นทดสอบ (ผู้สอน)