ตรวจจับและค้นหาเหรียญจากภาพ วิดีโอ กล้องแบบเรียลไทม์ด้วย Python + OpenCV สำหรับท่านที่สนใจสามารถนำไปพัฒนาต่อได้

ไลบราลี่

  • pip install opencv-python
  • pip install numpy
Image for post
Image for post

หลักการและทฤษฎี

อาศัยหลักการประมวลผลภาพกับรูปร่างและโครงสร้างของภาพโดยนำคณิตสัณฐานวิทยา (MM : Mathematical Morphology) เพื่อประมวลผลภาพตามหลักทฤษฎีแลตติช เป็นเทคนิคสำหรับการวิเคราะห์และประมวลผลโครงสร้างทางเรขาคณิตบนพื้นฐานของทฤษฎีเซต ทฤษฎีตาข่าย โครงสร้างของเครือข่ายและฟังก์ชั่นแบบสุ่ม นิยมนำมาใช้งานกับภาพดิจิตอลเพื่อวิเคราะห์พื้นผิว ขนาด รูปร่าง พื้นที่นูน การเชื่อมต่อโดยอาศัยตัวดำเนินการ 4 ลักษณะ

การประมวลผลภาพกับรูปร่างและโครงสร้างภาพ เป็นเทคนิคของการประมวลผลภาพที่ขึ้นอยู่กับรูปร่าง ค่าของ Pixels ในภาพ Output ขึ้นอยู่กับการเปรียบเทียบของ Pixels ที่สอดคล้องกันในภาพ Input กับพื้นที่ใกล้เคียง โดยเลือกขนาดและรูปร่างของพื้นที่ใกล้เคียงมาสร้างการดำเนินการทางรูปร่างและโครงสร้างของภาพต่อไป

ซึ่งประกอบไปด้วย

- การขยายภาพ (Dilation)
- การกร่อนภาพ (Erosion)
- การเปิดภาพ (Opening)
- การปิดภาพ (Closing)

1.การขยายภาพ (Dilation) สำหรับตรวจสอบและขยายรูปทรงที่มีอยู่ในภาพ Input

Image for post
Image for post
  • ถ้าเป็นภาพสีเทา จะขยายภาพและเพิ่มความสว่างของวัตถุโดยใช้พื้นที่ใกล้เคียงสูงสุด
  • ถ้าเป็นภาพไบนารี จะขยายภาพและเชื่อมต่อพื้นที่ที่แยกออกจากกันด้วยช่องว่างที่มีขนาดเล็กกว่าองค์ประกอบโครงสร้างและเพิ่ม Pixels เข้าไปที่ขอบด้านนอกของแต่ละวัตถุในภาพ

2.การกร่อนภาพ (Erosion) => สำหรับลดขนาดของวัตถุและความผิดปกติเล็กๆโดยลบวัตถุที่มีรัศมีเล็กกว่าองค์ประกอบของโครงสร้าง

Image for post
Image for post
  • ถ้าเป็นภาพสีเทา จะลดขนาดวัตถุและลดความสว่างของวัตถุบนพื้นหลังสีเข้ม
    โดยใช้พื้นที่ใกล้เคียงต่ำสุด
  • ถ้าเป็นภาพไบนารี ลบวัตถุที่มีขนาดเล็กกว่าองค์ประกอบของโครงสร้างออกและลบ Pixels ที่ขอบด้านนอกออกจากวัตถุในภาพ
Image for post
Image for post

3.การเปิดภาพ (Opening) ใช้สำหรับกำจัดสัญญานรบกวนในรูปร่างและโครงสร้างของภาพกำจัดวัตถุขนาดเล็กออกไปจากพื้นที่มืดของภาพและนำไปวางไว้ในพื้นหลังของภาพ ทำให้ Pixels ภาพถูกเปิดกว้างมากขึ้น การเปิดภาพนิยมใช้ในการค้นหาองค์ประกอบของโครงสร้างเช่น ขอบภาพและมุมภาพ

Image for post
Image for post

การปิดภาพ (Closing) => กระทำในทางตรงกันข้ามกับ Opening โดยเป็นการทำให้ Pixels ของภาพเชื่อมต่อกันมากขึ้น

Image for post
Image for post

- การเปิดและปิดภาพเป็นการกำจัดสัญญานรบกวนในรูปร่างและโครงสร้างของภาพ

การเปิด = > กำจัดวัตถุขนาดเล็ก

การปิด => กำจัดช่องโหว่เล็กๆและเชื่อมต่อ

เริ่มต้นลุยโปรเจค

- NumPy (Numeric Python) เป็นโมดูลส่วนเสริมของ Python มีฟังก์ชั่นเกี่ยวกับคณิตศาสตร์และการคำนวณต่างๆ มาให้ใช้งาน ใช้การจัดการข้อมูลชุด (Array) ขนาดใหญ่และเมทริกซ์ (สำหรับสร้างตาราง Matrix ในการประมวลผลภาพ)

- Arrays ของ NumPy มีลักษณะคล้ายกับ list แต่สมาชิกทุกตัวใน array จะต้องเป็นข้อมูลชนิดเดียวกัน โดยทั่วไปแล้วข้อมูลที่เก็บจะเป็นตัวเลขเช่น int หรือ float

คล้าย List แต่ทำไมใช้ Array ???

Arrays มีความสามารถในการดำเนินการเกี่ยวกับข้อมูลที่เป็นตัวเลขจำนวนมากๆ ได้อย่างรวดเร็วและมีประสิทธิภาพมากกว่า list

  1. อ่านภาพจากวิดีโอ & กล้อง
Image for post
Image for post

2. Gaussian Blur & Threshold

Image for post
Image for post
Image for post
Image for post

3.Adaptive Thresholding

Image for post
Image for post

4. Morphological Closing

Image for post
Image for post

5. แสดงรูปร่างและกรองพื้นที่เหรียญ

Image for post
Image for post
เครดิต 
https://www.youtube.com/channel/UCB6e... ดาวน์โหลด Python : https://www.python.org/downloads/ Source Code : https://github.com/kongruksiamza/Coin... บทความประกอบการสอน : https://medium.com/@kongruksiamza/coi... Playlist Python เบื้องต้น : https://www.youtube.com/playlist?list... Playlist Python GUI : https://www.youtube.com/playlist?list... ติดตามข่าวสารของเราได้ที่แฟนเพจ : https://www.facebook.com/pg/KongRuksi... #Python #OpenCV #Coin #Segmentation