Thresholding คือกระบวนการเปลี่ยนภาพระดับสีเทา (Grayscale image) ให้กลายเป็นภาพทวิภาค (Binary image) โดยใช้ค่าวิกฤต (Threshold value) เดียวกำหนดระดับของสีเทา ในกระบวนการ Thresholding แบบมาตรฐาน จะใช้ค่า Threshold ที่คงที่สำหรับทั้งภาพ แต่นั่นอาจไม่ดีพอในกรณีที่ภาพมีแสงหรือสีไม่สม่ำเสมอทั่วทั้งภาพ
Adaptive Thresholding จึงถูกพัฒนาขึ้นเพื่อแก้ปัญหาดังกล่าว โดยการกำหนดค่า Threshold ที่แตกต่างกันไปตามพื้นที่ย่อยๆ ของภาพ ทำให้สามารถปรับตัวตามระดับแสงในแต่ละพื้นที่ได้ดีขึ้น
Adaptive Thresholding เป็นเครื่องมือที่มีประโยชน์มากเมื่อต้องประมวลผลภาพที่มีแสงหรือความคมชัดที่ไม่สม่ำเสมอ เช่น ภาพที่มีแสงเงาหรือภาพที่ถูกถ่ายในสภาพแสงที่ไม่ดี การใช้ Adaptive Thresholding จะช่วยแยกแยะวัตถุในภาพได้แม่นยำยิ่งขึ้น
OpenCV เป็นเครื่องมือที่ใช้กันอย่างแพร่หลายในการทำ Image Processing โดยเฉพาะการทำ Adaptive Thresholding มีฟังก์ชันที่ใช้งานง่ายและมีประสิทธิภาพ ในการทำงาน เราสามารถใช้ฟังก์ชัน `cv2.adaptiveThreshold()` ซึ่งรองรับการเลือกวิธีการคำนวณค่า Threshold เช่น Mean หรือ Gaussian
มาดูตัวอย่างของการใช้ Adaptive Thresholding ในภาษา Python กัน
import cv2
# อ่านภาพจากไฟล์
image = cv2.imread("example.jpg", cv2.IMREAD_GRAYSCALE)
# ใช้ Gaussian Adaptive Thresholding
thresh_image = cv2.adaptiveThreshold(
image,
255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY,
11,
2
)
# แสดงผลลัพธ์
cv2.imshow("Original Image", image)
cv2.imshow("Adaptive Thresholding", thresh_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
ในโค้ดตัวอย่างนี้ เราเริ่มต้นด้วยการอ่านภาพที่ต้องการปรับแต่งเข้าสู่ระบบ แล้วใช้ฟังก์ชัน `cv2.adaptiveThreshold()` กับภาพ โดยกำหนดค่าพารามิเตอร์ต่างๆ เช่น
- ค่า 255 เป็นค่าสีขาว (maxValue) ที่จะกำหนดให้กับวัตถุในภาพ
- `cv2.ADAPTIVE_THRESH_GAUSSIAN_C` บ่งบอกถึงวิธีใช้ค่าเฉลี่ยของ Gaussian
- `cv2.THRESH_BINARY` ระบุว่าเราต้องการภาพทวิภาค
- ค่า 11 และ 2 ใช้เพื่อกำหนดขนาดของบล็อกและค่าคงที่ที่เหมาะสมในการคำนวณค่า Threshold
Adaptive Thresholding เป็นเครื่องมือที่มีประโยชน์อย่างมากสำหรับการทำ Image Processing โดยเฉพาะในกรณีที่การใช้ Threshold คงที่ไม่เพียงพอ การใช้ OpenCV สำหรับการทำ Adaptive Thresholding ช่วยเพิ่มประสิทธิภาพในการประมวลผลและความแม่นยำในการแยกแยะวัตถุในภาพ
หากคุณสนใจศึกษาเกี่ยวกับการประมวลผลภาพเพิ่มเติม หรือต้องการทดลองปฏิบัติจริง OpenCV ถือเป็นหนึ่งในไลบรารีที่เริ่มได้ง่ายและมีทรัพยากรพร้อมสอนมากมาย และถ้าอยากพัฒนาทักษะโปรแกรมมิ่งของคุณให้ถึงระดับเชี่ยวชาญ ผมขอแนะนำให้ลองพิจารณาการเรียนที่ Expert-Programming-Tutor (EPT) ซึ่งจะช่วยให้คุณได้ลงมือปฏิบัติจริงและเสริมสร้างความรู้ที่จำเป็นต่อการเป็นนักพัฒนาที่มีศักยภาพ
การทำความเข้าใจเกี่ยวกับวิธีการและเทคนิคต่างๆ ในการประมวลผลภาพจะเป็นประโยชน์อย่างมากในการประยุกต์ใช้ในหลายๆ ด้านในชีวิตประจำวันและการทำงาน.
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: java c# vb.net python c c++ machine_learning web database oop cloud aws ios android
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM