แนวคิดพื้นฐาน

สรุปแนวคิดของ OpenCV เรียงจาก pixel ขึ้นไป สำหรับค้นย้อนหลัง พร้อมลิงก์ไปใบงานที่ใช้

Author

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

Published

15 ตุลาคม 2569

ใบงานเรียงตามโจทย์ ไม่ได้เรียงตามแนวคิด หน้านี้รวบรวมแนวคิดทั้งหมดเรียงจากพื้นฐานขึ้นไป เพื่อใช้ทบทวนหรือค้นเมื่อต้องการ

ภาพและ pixel

แนวคิด สรุป คำสั่ง ใบงาน
ภาพคือ array ภาพสีคือ NumPy array (height, width, 3) ชนิด uint8 ค่า 0–255 img.shape, img.dtype 1
BGR OpenCV เรียงสีเป็น B, G, R img[y, x] → [B, G, R] 1
พิกัด array ใช้ img[y, x] (แถว, คอลัมน์) ฟังก์ชันวาดใช้ (x, y) cv2.line(img, (x0, y0), (x1, y1), ...) 1
slicing ตัดหรือแก้บางส่วนของภาพ img[y0:y1, x0:x1] 1
ย่อขยาย ภาพเล็กประมวลผลเร็ว แต่เสียรายละเอียด cv2.resize(img, (w, h)) 1, 3
วิดีโอ ภาพหลายภาพต่อเนื่อง อ่านทีละ frame cv2.VideoCapture, cap.read() 1
JPEG บีบอัดภาพเพื่อส่งผ่านเครือข่าย เสียรายละเอียดบางส่วน cv2.imdecode, cv2.imencode 2

สีและความสว่าง

แนวคิด สรุป คำสั่ง ใบงาน
grayscale ลดเหลือ 1 ค่าต่อ pixel คือความสว่าง cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 3
HSV แยกเฉดสี (H 0–179) ความอิ่มตัว (S) ความสว่าง (V) cv2.COLOR_BGR2HSV 2
mask ภาพขาวดำที่ขาว = pixel ที่อยู่ในช่วงที่สนใจ cv2.inRange(hsv, lo, hi) 2
histogram จำนวน pixel ในแต่ละระดับความสว่าง cv2.calcHist 3
contrast ความต่างของชิ้นงานกับพื้น \lvert I_b - I_o\rvert / (I_b + I_o) gray[roi].mean() 3
noise ความผันผวนของ pixel เดียวกันเมื่อถ่ายซ้ำ np.std(stack, axis=0) 3

แยกชิ้นงานออกจากพื้น

แนวคิด สรุป คำสั่ง ใบงาน
threshold แบ่ง pixel เป็นขาว/ดำด้วยค่าเดียว cv2.threshold(gray, t, 255, cv2.THRESH_BINARY) 3
Otsu หา threshold ให้อัตโนมัติจาก histogram cv2.THRESH_OTSU 3, 5
blur ลด noise โดยเฉลี่ยกับ pixel รอบข้าง (convolution) cv2.GaussianBlur(img, (5, 5), 0) 4
morphology opening ลบจุดเล็ก closing ปิดรูเล็ก cv2.morphologyEx 2
ผลต่างของภาพ หาสิ่งที่ต่างจากภาพต้นแบบ cv2.absdiff(a, b) 4

รูปทรงและการวัด

แนวคิด สรุป คำสั่ง ใบงาน
contour เส้นขอบของบริเวณสีขาว cv2.findContours 2
ลำดับชั้นของ contour แยกขอบนอกกับรูด้านใน cv2.RETR_CCOMP, hierarchy 5
ค่าทางเรขาคณิต พื้นที่ เส้นรอบรูป จำนวนมุม ความกลม 4\pi A/P^2 cv2.contourArea, cv2.arcLength, cv2.approxPolyDP 2
กรอบล้อมรอบ สี่เหลี่ยมตรง สี่เหลี่ยมหมุนได้ วงกลม cv2.boundingRect, cv2.minAreaRect, cv2.minEnclosingCircle 2, 5
ROI บริเวณที่สนใจ ตรวจเฉพาะส่วนนั้น slicing หรือ mask 4

ตำแหน่งและการสอบเทียบ

แนวคิด สรุป คำสั่ง ใบงาน
scale factor mm ต่อ pixel จากวัตถุที่รู้ขนาด k = L_{\mathrm{mm}} / L_{\mathrm{px}} 2, 5
marker จุดอ้างอิงที่หาตำแหน่งและหมายเลขได้แม่นยำ cv2.aruco.ArucoDetector 4
homography แปลงระนาบเอียงเป็นภาพด้านบน cv2.getPerspectiveTransform, cv2.warpPerspective 4
lens distortion เลนส์ทำให้เส้นตรงที่ขอบภาพโค้ง cv2.calibrateCamera, cv2.undistort 5

AI

แนวคิด สรุป คำสั่ง ใบงาน
object detection หาชนิดและ Bounding Box ของวัตถุ YOLO(...)(img) 1
confidence ความมั่นใจของโมเดล 0–1 obj.conf 1
tracking ให้ ID ประจำวัตถุข้าม frame model.track(..., persist=True) 1

เวลาและความเชื่อถือได้

แนวคิด สรุป ใบงาน
fps, เวลาประมวลผล, latency อัตราการรับภาพ เวลาที่โค้ดใช้ต่อภาพ และความหน่วงจากเหตุการณ์จริง เป็นคนละค่ากัน 3
motion blur ชิ้นงานเคลื่อนระหว่างที่ชัตเตอร์เปิด จำกัดความเร็วสูงสุด 3
error e = N_{\mathrm{measured}} - N_{\mathrm{reference}} 1, 2
FRR, FAR สัดส่วนของดีที่ถูกคัดทิ้ง และของเสียที่หลุดไป 4
repeatability, %GRR ความกระจายของการวัดซ้ำเทียบกับ tolerance 5

อ่านเพิ่มเติม

เว็บสอน OpenCV แบบเรียงจากพื้นฐาน ใช้ค้นรายละเอียดของแต่ละคำสั่ง